Age | Commit message (Collapse) | Author | Files | Lines |
|
Accept line rate percentage or fps a initial rate for IXIA RFC2544 traffic profile:
traffic_profile:
traffic_type : IXIARFC2544Profile
frame_rate : 100%
traffic_profile:
traffic_type : IXIARFC2544Profile
frame_rate : 5000fps
JIRA: YARDSTICK-1336
Change-Id: I85b3dd0daf563bb7af098a3aa5bb872961fb009b
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
IXIA IxNetwork traffic profile defines an initial injection frame rate
for RFC2544 test cases:
schema: "isb:traffic_profile:0.1"
traffic_profile:
frame_rate : 20000
This value should be assigned to IXIARFC2544Profile.rate before the
initial injection period.
JIRA: YARDSTICK-1288
Change-Id: I29a334c7dbb863f680e45a1d3ab880aaf1fe166d
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
JIRA: YARDSTICK-1252
CPU grouping in grafana for better representation
Throughput table is difficult to read as the tests
run longer the values can overlap
Default time in dashboard should be always last 1hour in
dashboard (auto refresh can be also checked)
Add one column in table with Gbps throughput (Rx
Throughput) plus code change in yardstick
Boxes are not aligned and big and small, need to be fixed
boxes are now aligned,
Added Seperate graphe for LINE Rate
Change-Id: Ief31777c2e7a18aab4bf21fb6ccc0e93a3bb9178
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
|
|
JIRA: YARDSTICK-1105
Running a vPE test ends up with up to 25% drooped packets.
This is due to tolerated loss being incorrectly configured,
test duration was too short and test interval was too
short.
Note This is due to the fact that vPE use case have by
default a tolerated loss of 100%, Now changed to 0.001,
same as L2FWD
Also: Grafan dashboard has been updated to show all SUT
CPUS Utilization in 1 panel. And LINE rate MIN, MAX & TEST
Rate have been added
Change-Id: I7adae2199b3f656fe460705b6aeb3aa69c767d50
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
|
|
|
|
JIRA: YARDSTICK-1221
In order to increase accuracy of result the following are done :-
- Improve Measurement Accuracy (YARDSTICK-1212)
- Improve Sampling Interval (YARDSTICK-1219)
- Allow 4 PROX ports to be read simultaneously (YARDSTICK-1220)
This change does the following :-
- Stores LINE Rate statistics of Sample
- Requires a confirmation retry before deciding to increase or
decrease this is configurable.
- Allows the user to disable Sampling or specify a sample interval
- Added Code Coverage of ProxDurationRunner based on YARDSTICK-1199
Change-Id: I27242ac1849c9a2712866385b5fbc05977c71516
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
|
|
The TRex RFC2455 traffic profile configures the duration of the traffic
injection. Once the traffic is started, the traffic profile should poll
the traffic injector client for the injection status. When the injection
is finished, the traffic execution should end.
Instead of this, the traffic profile waits a fixed time (using time.sleep
method) and then stops the traffic. This approach is not accurate and may
cause shorter injection periods.
JIRA: YARDSTICK-1197
Change-Id: I5090df81ef4ec7945ff6c1aff070656b48e0fe77
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
Add "duration" parameter to test case definition, in scenario:options
section. This parameter will be rendered in the traffic profile.
If the parameter is not present in the test case scenario options, the
default time written in the traffic profile options will be 30 seconds
(TrafficProfile.DEFAULT_DURATION = 30). If the traffic profile
injection time is not defined, the default injection time will be 30
seconds.
testcase:scenario:options:duration (default = 30)
render --> traffic_profile:duration
parse --> TrafficProfile.duration (default = 30)
Target traffic profiles (RFC2544):
- RFC2544Profile
- IXIARFC2544Profile
JIRA: YARDSTICK-1194
Change-Id: I968922e6bb882d7ee15aa1c4db4037face7a3492
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
This patch implements an active wait for the traffic injection. Once the
traffic is started, the traffic generator class will poll periodically the
IXIA traffic generator chassis to retrieve the status of the traffic
("started", "stopped").
Now the latency statistics are retrieved and reported for each injection
period.
JIRA: YARDSTICK-1116
Change-Id: I4422e2c88b4fc97b7cac3de8a82b2d75467c4117
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Signed-off-by: Emma Foley <emma.l.foley@intel.com>
|
|
This patch modifies IP packet parameters.
"IxNextgen.update_ip_packet" modifies the L3 packet according to the
test case and setup the IP addresses.
JIRA: YARDSTICK-1116
Change-Id: I46ff75ab1989d0e6f5cc876418a015386717e06f
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Signed-off-by: Emma Foley <emma.l.foley@intel.com>
|
|
This patch modifies the way the packet frame and the flow is configured
before the injection.
"IxNextgen.update_frame" modifies the L2 frame according to the
test case and setup the frame rate, frame size, traffic injection
duration and MAC addresses.
JIRA: YARDSTICK-1116
Change-Id: Ife08f15a4eda24d7835c92c4172b450854d112ee
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Signed-off-by: Emma Foley <emma.l.foley@intel.com>
|
|
'YARDSTICK-1215', 'YARDSTICK-1214'
* changes:
Move IncorrectConfig, IncorrectSetup and IncorrectNodeSetup to exceptions
Move ErrorClass definition to exceptions module
Convert SSH custom exceptions to Yardstick exceptions
Remove AnsibleCommon class method mock
|
|
JIRA: YARDSTICK-1212
Change-Id: Ic4d4a3c00e4e278f4de06cc176ff663892895569
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
JIRA: YARDSTICK-1216
Change-Id: I82556e1d1b0c723221a58e188067cbce560b8338
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
There were some pep8 errors in the
prox_binsearch.py file. These are fixed here.
JIRA: YARDSTICK-1173
Change-Id: I817bba89c6ba298bb0f27b2538aa7585cb286754
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
|
|
The success criteria needed a fix for throughput
calculation. The results on success criteria were
muliplied by 1000*1000 which is not correct and
not needed as this was leading to false results
in grafana.
JIRA: YARDSTICK-1172
Change-Id: I56b24a700f8a565db80897aeab796e7039cae5c9
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
|
|
JIRA: YARDSTICK-1035
Do not hardcode NIC/interface speed in PROX test. Test assumes
NIC used is 10Gbps. This is incorrect. It could support 1Gbps,
10Gbps, 25Gbps, 40Gbps or something else.
This is used to calculate pps (Packets Per Second)
In Baremetal the NIC speed could be extracted. however when
run on a virtual machine this is not possible.
Solution:
Add in options section of test file.
eg.
Options:
interface_speed_gbps: 10
Where 10 refers to a 10Gbps. In a setup where multiple interfaces
are used. This will refer to the speed of the slowest connection.
Change-Id: I89ab16479a2cdd1d79e52cbcc5a972762c60d057
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
|
|
In [1], VNF interfaces in TG PROX are sorted by "vpci" address, before
this value is populated in "vnfd_helper". "vpci_if_name_ascending" is
only used in TP ProxPofile [2] to generate the stats.
This patch delays this sorting process until the stats generation.
[1]https://github.com/opnfv/yardstick/blob/a74ad5a1ec1a73389c5983440b2031b0bc72cea1/yardstick/network_services/vnf_generic/vnf/tg_prox.py#L62-L64
[2]https://github.com/opnfv/yardstick/blob/a74ad5a1ec1a73389c5983440b2031b0bc72cea1/yardstick/network_services/traffic_profile/prox_profile.py#L33
JIRA: YARDSTICK-1044
Change-Id: I988dc48f9a82baa1c64f728d9e6d54f2f4bae010
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
"traffic_profile" modules should be imported only once. Every time
TrafficProfile.get is called, the modules under
"yardstick.network_services.traffic_profiles" are loaded [1]. Instead
of this, the modules should be registered only once the first time
"yardstick.network_services.traffic_profiles.base" is loaded. This
will reduce the execution time and will avoid unnecessary calls.
[1] https://github.com/opnfv/yardstick/blob/d2c7cc4e9768ed003257a95c92cdb278d516761b/yardstick/network_services/traffic_profile/base.py#L36-L37
JIRA: YARDSTICK-951
Change-Id: Ia3565378ba3a1377fcb0aea8bda50ef8189414fd
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
Make it more clear that traffic_profile is not a generic class.
Eventually we can refactor a more generic traffic profile.
Change-Id: I1bf44a8cafcdeb8d74efb9e85a34f6d7b526d036
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
|
|
JIRA: YARDSTICK-1036
This stores a number of extra counters in influxdb for Prox test cases.
It also stores existing counters with a "succcess_" tag.
Previously throughput where stored without success or failure indication.
Also "Result_" counters are also stored.
These can now be used by Grafana to graph output.
Change-Id: Ie5636c14ecbab1b53a988bdfbd47ddd1fcdbd695
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
|
|
IP address format introduced in [1] should be unicode instead of string.
"ipaddress.IPv4Address(min_value)" doesn't parse correctly the input
parameter unless the parameter is in unicode format; this is valid both
for Python version 2 and 3.
Execution error if the parameter is a string:
>>> int(ipaddress.IPv4Address('10.0.3.2'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/ipaddress.py",
line 1391, in __init__
self._check_packed_address(address, 4)
File "/usr/local/lib/python2.7/dist-packages/ipaddress.py",
line 554, in _check_packed_address
expected_len, self._version))
ipaddress.AddressValueError: '10.0.3.2' (len 8 != 4) is not permitted
as an IPv4 address. Did you pass in a bytes (str in Python 2) instead
of a unic
[1]https://github.com/opnfv/yardstick/blob/e5775e7efbc55f116b4d4ac11ff87b8d8553247e/yardstick/network_services/traffic_profile/traffic_profile.py#L87-L88
JIRA: YARDSTICK-996
Change-Id: Ic727a79044834b181c99789f0f5efc21c68f0ff2
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
also fix pylint unittest warnings
JIRA: YARDSTICK-1014
Change-Id: I4ff9769fdca89c6fc1fb9ca62e9f8ea6b174681e
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
also fix unittests
Change-Id: Ie3026f5a0df8e690271afb71fe36ac531cbae2a0
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
JIRA: YARDSTICK-848
The NSB PROX MPLS test uses Binsearch traffic
profile and the mpls traffic profile is a duplicate.
Change-Id: Ie2124cebf306fd6917b70ecd7c23ae12ef4850dc
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
|
|
when we create TRex config we sort based on PCI bus address
and create a logical port ordering.
We need to save this port ordering and re-use it everywhere.
redirect vnfd_helper.port_num() to resource_helper.port_num() to
use the logical mapping
Change-Id: Ibff628556d5e11e686e15716a66a3210758c4ff0
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
In trex, giving count beyond the allowed range causes trex client to
fail. Check the range and reset the count before starting the traffic
Change-Id: I58e54f47edb5f249087b8f7178b807ddfb13b03c
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|
|
|
|
In some cases we are blocking in base.Runner join() because the
queues are not empty
call cancel_join_thread to prevent the Queue from blocking the
Process exit
https://docs.python.org/3.3/library/multiprocessing.html#all-platforms
Joining processes that use queues
Bear in mind that a process that has put items in a queue will wait
before terminating until all the buffered items are fed by the
"feeder" thread to the underlying pipe. (The child process can call
the cancel_join_thread() method of the queue to avoid this behaviour.)
This means that whenever you use a queue you need to make sure that
all items which have been put on the queue will eventually be removed
before the process is joined. Otherwise you cannot be sure that
processes which have put items on the queue will terminate. Remember
also that non-daemonic processes will be joined automatically.
Warning
As mentioned above, if a child process has put items on a queue (and
it has not used JoinableQueue.cancel_join_thread), then that process
will not terminate until all buffered items have been flushed to the
pipe.
This means that if you try joining that process you may get a deadlock
unless you are sure that all items which have been put on the queue
have been consumed. Similarly, if the child process is non-daemonic
then the parent process may hang on exit when it tries to join all its
non-daemonic children.
cancel_join_thread()
Prevent join_thread() from blocking. In particular, this prevents the
background thread from being joined automatically when the process
exits – see join_thread().
A better name for this method might be allow_exit_without_flush(). It
is likely to cause enqueued data to lost, and you almost certainly
will not need to use it. It is really only there if you need the
current process to exit immediately without waiting to flush enqueued
data to the underlying pipe, and you don’t care about lost data.
Change-Id: I61f11a3b01109d96b7a5445c60f1e171401157fc
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
Change-Id: I03976c182e164a512a5ef48ad20928f27451c3f6
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|
|
Change-Id: I031cc7f24f0c0816eb577a4d1606a714f68a5f83
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
|
|
JIRA: YARDSTICK-802
Added Prox BNG and BNG-QoS Test
- The tests supports BM, Openstack Heat
- Supports 4 ports
- Test added for BNG traffic profile
- Fixed the Prox heat test cases with
proper upstream and downstream links
- Grafana Dashboard for BNG & BNG-QoS added
- Increased the test Duration to 300
TODO:
- Test does not Terminate correctly
Update:
Added new helper class for run_test: Genric, MPLS
and BNG tests.
Change-Id: Ib40811bedb45a3c3030643943f32679a4044e076
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
Signed-off-by: Edward MacGillivray <edward.s.macgillivray@intel.com>
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
|
|
Change-Id: Ic8aa130f3cdc7bd8dec39d06a6b824340bf658b2
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
we were using raw sort index of the interfaces to
set the MAC address, but we should be using the
traffic id from the static JSON instead.
Change-Id: I13284db04abb3eaf8c9826974a9e5aa1c37b3891
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
JIRA: YARDSTICK-802
Addition of PROX L2FWD_Multiflow, ACL, Load Balancing plus
grafana dashboards
Supports 2 and 4 port Baremetal & Heat
Change-Id: I1f3990d5451de265ee3901302569c355ece3b146
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
|
|
we generate the prox_config_dict in the _run Process,
but we also need it in the _traffic_runner Process to
get core info.
use a queue to pass the config list between the processes
enable collect_kpi
Change-Id: Ibaf41d606e559a87addf43d6ddaed206dbd2d20c
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Edward MacGillivray <edward.s.macgillivray@intel.com>
|
|
Also rename private to uplink, public to downlink
for scale-out template we need to count from 0
so we can use range() without +1/-1 errors
vnf_0, vnf_1
tg_0, tg_1
also fix Ixia defaults
Change-Id: I6aecfbb95f99af20f012a9df19c19be77d1b5b77
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Edward MacGillivray <edward.s.macgillivray@intel.com>
|
|
Change-Id: I0b25e704b29fc68678eaa29d9e1d1eb04ee94e3e
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
Also sends a new line to the VNF when waiting for prompt.
Change-Id: Ib8641093974cd6713594aac9b418595ad5268e87
Signed-off-by: Martin Banszel <martinx.banszel@intel.com>
|
|
Add a new PortPair class to resolve the
topology into list of public and private ports.
Before we were calculating public/private in multiple
locations and using different conventions.
In addition for all the DPDK test we need to use the DPDK
port number and no rely on interface ordering or interface naming
conventions.
We used to use xe0 -> 0, xe1 -> 1, etc. This is not the DPDK port
number.
Use the new dpdknicbind_helper class to parse the output of
dpdk-devbind.py to find the actual DPDK port number at runtime.
We then use this DPDK port number to correctly calculate the
port_mask_hex.
The port mask maps the DPDK port num (PMD ID) to the LINK ID
used in the pipeline config
We also need to make sure we only use the interfaces matched to the
topology and not use all the interfaces, because in some cases we will
have unused interfaces. In particular TRex always requires an even
number of interfaces, so for single port TRex tests we have to create
the second port and not use it.
Thus we had to modify the traffic generator stats code to only dump
stats for used ports and no unused ports.
Ixia was using interface ordering to map to Ixia ports, instead we use
the dpdk_port_num which must be hardcoded for Ixia.
Renamed traffic_profile.execute to traffic_profile.execute_traffic so
we can trace the code easier.
We pass the port used by the traffic profile to generate_samples so we
don't get stats for unused ports.
Fixed up vPE config creation and bring up issues.
Fixed up CGNAPT and UDP_Replay to work correctly.
Tested with 4-port scale-out
Change-Id: I2e4f328bff2904108081e92a4bf712333fa73869
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Edward MacGillivray <edward.s.macgillivray@intel.com>
|
|
|
|
Change-Id: I346f6064c39cb5662c2b17ca0f520addbe5eae4c
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|
|
- Added a PROTOCOL_MAP to map the protocol names to codes -- the scapy
requires the code, it fails if the proto is set e.g. to 'udp'
- ip addresses must be str, not unicode -- explicit conversion to str
added
- removed unittest for setup_vnf_environment in test_tg_trex.py as
it is the same function as already tested in test_sample_vnf.py
- traffic_profile refactored -- code repetition decreased, unittest
adapted
Known issues:
- there is a an attempt to stop already stopped trex. It fires an
exception that stop command is issued on the disconnected client.
Change-Id: I87e9029630f48b30e8f5b4f9d88ab3b25fd65f03
Signed-off-by: Martin Banszel <martinx.banszel@intel.com>
|
|
JIRA: YARDSTICK-802
Addition of Prox L2Fwd, MPLS test cases for BM and Heat.
updates:
Most of tg_prox and prox_vnf were absorbed into the base classes.
delete most of ProxDpdkVnfSetupEnvHelper, it is handled by DpdkVnfSetupEnvHelper baseclass
use standard _build_pipeline_kwargs methods
don't use terminate() use baseclass version
add new method kill_vnf that runs pkill -x
replace resource_helper.execute() with vnf_execture for dumping stats
In order to share code between tg_prox and vnf_prox
refactor to have tg_prox hold and wrap a ProxApproxVnf instance and call
methods on that class. Do this instead of multiple-inheritance.
Implement ProxApproxVnf.terminate() using prox socket command
based exit, (stop_all, quit, force_quit).
vnf_execute calls resource_helper.execute() which calls
socket methods on the sut object.
Since tg_prox wraps the VNF object, we can call
terminate on the VNF object and it should work correctly.
move prox config generation to parent process
we need to get core number info from config file
inside the TG processes, so we need to generate
the config in the parent process so the data is
copied to the child during the fork.
moved more config file methods to the setup_helper class.
we run force_quit after quit, so the socket should already be closed
this will trigger socket error, so add _ignore_errors option for
vnf_execute to ignore socket errors
Fixed the terminate issue. Added MPLS tests.
Added TG Stats in_packet/out_packet
Fixed compile (pep8) issues
Fixed MPLS TG port stats, in/out packets
Added Grafana dashboards for L2FWD and MPLS
Traffic profiles modified for tolerated loss and
precision as per DATS tests.
Added unit test case for Mpls
Single port test stats collection support.
Change-Id: Idd9493f597c668a3bb7d90e167e6a418546106e8
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
Change-Id: I3ec1a6d3710d44df5ddac6bd8967d28ad58e8d33
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|
|
Change-Id: I008b3f09695f5e3f484b39d4e70b83e5942de863
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Signed-off-by: Maciej Skrocki <maciej.skrocki@intel.com>
|
|
- path should be defined via TREX_CLIENT_LIB environmental variable e.g. TREX_CLIENT_LIB=/opt/trex_client/stl
- refactored unit tests
Change-Id: I18767e48daf774432c010f1b88d18a4f0ee4e156
Signed-off-by: Maciej Skrocki <maciej.skrocki@intel.com>
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
This patch adds the framesize and flow into test option instead of
adding a seperate file to avoid the multiple file update incase of ip
change.
Change-Id: Ic473c73773ad36422ecc02618b8c646a5336b70a
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|