summaryrefslogtreecommitdiffstats
path: root/tests/unit
AgeCommit message (Collapse)AuthorFilesLines
2017-10-02drain runner queue and undo cancel_join_threadRoss Brattain1-2/+41
Sometimes the runners can hang. Initially debugging lead to the queue join thread, so I thought we could cancel all the join threads and everything would be okay. But it turns out canceling the queue join threads can lead to corruption of the queues, so when we go to drain the queues the task hangs. But it also turns out that we were not properly draining the queues in the task process. We were waiting for all the runners to exit, then draining the queues. This is bad and will cause the queues to fill up and hang and/or drop data or corrupt the queues. The proper fix seems to be to draining the queues in a loop before calling join with a timeout. Also modified the queue drain loops to no block on queue.get() Revert "cancel all queue join threads" This reverts commit 75c0e3a54b8f6e8fd77c7d9d95decab830159929. Revert "duration runner: add teardown and cancel all queue join threads" This reverts commit 7eb6abb6931b24e085b139cc3500f4497cdde57d. Change-Id: Ic4f8e814cf23615621c1250535967716b425ac18 Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-10-01Merge "NSB: cancel all queue join threads"Ross Brattain1-2/+3
2017-10-01NSB: cancel all queue join threadsRoss Brattain1-2/+3
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>
2017-10-01code inspection fixes: test_pktgenRoss Brattain1-7/+7
Change-Id: I05cb069984b7674924cfcb1ed023048c0aa0c444 Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-29Auto create ixia config based on the traffic profileDeepak S1-5/+5
Change-Id: I031cc7f24f0c0816eb577a4d1606a714f68a5f83 Signed-off-by: Deepak S <deepak.s@linux.intel.com> Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-28vnf_generic: Fix str object has no attribute itemsDino Madarang1-0/+6
When an IP range is specified in src_ip/dst_ip like: src_ip: - '152.16.100.180-152.16.100.181' yardstick would return str object has no attribute items error. This change will return the IP range as is if type is str. Change-Id: I3b097777f0d85b0600207157bebba18987ea2275 Signed-off-by: Dino Simeon Madarang <dinox.madarang@intel.com> Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-28Merge "Addition of Prox NSB BNG and BNG-QoS test"Ross Brattain6-272/+602
2017-09-28Addition of Prox NSB BNG and BNG-QoS testAbhijit Sinha6-272/+602
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>
2017-09-27collectd: write config file from Jinja2 templateRoss Brattain2-133/+40
We have the collectd.conf inside the python package so instead of copying it from various places, write the template directly to the remote system. collectd: read collect.conf template with pkgresources read the collectd.conf file as a string directly and upload without creating temp file use Jinja2 template, disable failing plugins use proper Jinja2 template, disable the plugins that were failing to load and blocking startup add support for per-testcase collectd.conf config using YAML add support for custom interval, default is 25 seconds Change-Id: Id904f7b7c9f41a9dd7adf5dfa06c064d65c25d2d Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-26Merge "Adding multi-port support for ixia taffic generator"Ross Brattain1-8/+4
2017-09-26Merge "Fix vPE VNF characterization issues."Ross Brattain1-10/+130
2017-09-26Adding multi-port support for ixia taffic generatorDeepak S1-8/+4
Change-Id: Ic8aa130f3cdc7bd8dec39d06a6b824340bf658b2 Signed-off-by: Deepak S <deepak.s@linux.intel.com> Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-26Merge "Add nodeSelector to enable selecting the desired Kubernetes running ↵Rex Lee1-2/+6
node when creating containers for Kubernetes context"
2017-09-25Fix vPE VNF characterization issues.Deepak S1-10/+130
Change-Id: Ia934128777d2839f6d2b940857c266fc3e2bd4a1 Signed-off-by: Deepak S <deepak.s@linux.intel.com>
2017-09-25Merge "tg_rfc2544_ixia: log exceptions and fix list iter"Ross Brattain1-7/+11
2017-09-25Merge "Add service in kubernetes context"Jing Lu1-6/+59
2017-09-22tg_rfc2544_ixia: log exceptions and fix list iterRoss Brattain1-7/+11
Change-Id: Ia9722604b7c8ae23e784e780f113d012de544d4b Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-21Add service in kubernetes contextchenjiankun1-6/+59
JIRA: YARDSTICK-803 Currently kubernetes test case can only run in master node. We need to support it run in jump server. So I add service and use nodePort type. Then we can login the pod using nodePort. Change-Id: Ia7900d263f1c5323f132435addec27ad10547ef9 Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
2017-09-21Add nodeSelector to enable selecting the desiredTrevor Tao1-2/+6
Kubernetes running node when creating containers for Kubernetes context For example, a yaml file may looks like: servers: host: image: xxx command: /bin/bash nodeSelector: xxx: yyy Synchronously change the unit test for this function Change-Id: If74c9dad9b1a70395bb79f34708a0fde04e7e650 Signed-off-by: Trevor Tao <trevor.tao@arm.com>
2017-09-20tg_rfc2544_ixia: use traffic id from JSON to update macRoss Brattain1-4/+5
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>
2017-09-20cgnapt: mock time.sleep in unitestsRoss Brattain1-2/+4
Change-Id: I26957977e6dcd0392078a543a6907a550711c702 Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-20Merge "Heat: use pkey from string instead of key_filename"Ross Brattain1-11/+14
2017-09-20Merge "prox: fix TG KPIs"Ross Brattain2-9/+8
2017-09-20Merge "prox: use find_relative_file when uploading"Ross Brattain1-1/+1
2017-09-20prox: fix TG KPIsRoss Brattain2-9/+8
The problem is that we share the same ProxResourceHelper for both VNF and TG. For VNF we want to talk to resource.py and get collectd KPIs. For TG we need to read from the queue the TG calculated KPIs and we also want collectd KPIs. workaround is to use a different method name collect_collectd_kpi for VNFs Change-Id: Icc2132758e37ce210f5600a0cd433077930208e5 Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-20Addition of PROX NSB tests to yardstickDanielMartinBuckley1-10/+30
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>
2017-09-20prox: use find_relative_file when uploadingRoss Brattain1-1/+1
the prox files were being found correctly. if we use find_relative_file they will lookup relative to the task_path Change-Id: Ifde5d07df5ccfbfeba015b2f43bd8b53e89a00b7 Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-19prox: pass prox_config_dict between Processes using queueRoss Brattain6-74/+61
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>
2017-09-19Merge "apiserver: mock socket.gethostbyname"Ross Brattain1-0/+6
2017-09-18Heat: use pkey from string instead of key_filenameRoss Brattain1-11/+14
Instead of using a key_filename for Heat, we can read the key as a string directly using pkg_resources.resource_string() This will enable us to save Heat stacks as pod.yaml, because we can embedded the key into the pod.yaml directly. Change-Id: I16baaba17dab845ee0846f97678733bae33cb463 Signed-off-by: Ross Brattain <ross.b.brattain@intel.com> Signed-off-by: Edward MacGillivray <edward.s.macgillivray@intel.com>
2017-09-18NSB: count from 0, vnf_0, tg_9, private->uplink, public->downlinkRoss Brattain22-191/+199
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>
2017-09-18Merge "Fixing vPE config creation anf bring up issues."Ross Brattain1-2/+0
2017-09-17Fixing vPE config creation anf bring up issues.Deepak S1-2/+0
Change-Id: Icf7a01a053495e6d96bd664d6ceda8964fa437eb Signed-off-by: Deepak S <deepak.s@linux.intel.com> Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-17Fix all the exception while genereating the latency trafficDeepak S1-3/+4
Change-Id: I0b25e704b29fc68678eaa29d9e1d1eb04ee94e3e Signed-off-by: Deepak S <deepak.s@linux.intel.com> Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-14NSB: fix port topologyMartin Banszel26-825/+1474
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>
2017-09-14Merge "ssh fix, always wait"Ross Brattain2-1/+3
2017-09-13Heat: support non-mesh network toplogyRoss Brattain3-64/+38
Previsouly we added all servers to every network in Heat in a full mesh. To more closely replicate test topology and to limit then number of ports we need to all each server to specify which ports should be connected to each network. This should also allow for some kind of multiport setup. Add optional network_ports dict to each server with network to port_list mapping match inteface based on port name or vld_id replace vld_id matching with network name matching, since network_name == vld_id Change-Id: I5de46b8f673949e3c17d8df6fa96f055c43886ce Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-13ssh fix, always waitRoss Brattain2-1/+3
Change-Id: I1c529eeb0ef47752ed15e3e7941f57f7793ebfd4 Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-11Added line parser to INI parserEdward MacGillivray1-12/+40
Line parser handles comments, keys and values and makes exceptions. Change-Id: I5cd3612ffd8cb08b14051bd0ef4b757c310f77bd Signed-off-by: Edward MacGillivray <edward.s.macgillivray@intel.com>
2017-09-07Merge "Adding ixia latency support for dynamic cgnapt"Ross Brattain2-1/+4
2017-09-07Adding ixia latency support for dynamic cgnaptDeepak S2-1/+4
Change-Id: I346f6064c39cb5662c2b17ca0f520addbe5eae4c Signed-off-by: Deepak S <deepak.s@linux.intel.com>
2017-09-07Merge "Bugfix: ha test case criteria pass when sla not pass"Kubi1-8/+37
2017-09-06Merge "test_kubernetes: mock file operations in test_ssh_key"Ross Brattain1-1/+6
2017-09-06Merge "test_vsperf_dpdk: mock time to speedup unitests"Ross Brattain1-11/+14
2017-09-05Add fixes for heat deployed UDP_Replay and TRexMartin Banszel4-465/+698
- 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>
2017-09-05Merge "Addition of Prox NSB changes in yardstick"Ross Brattain11-823/+1209
2017-09-05Merge "Adding intel_pmu tools plugin for collectd"Ross Brattain1-0/+5
2017-09-04Adding intel_pmu tools plugin for collectdDeepak S1-0/+5
Change-Id: I81ff3d43d209e98188855c8b2eb302835bb5d417 Signed-off-by: Neha Vadnere <neha.r.vadnere@intel.com> Signed-off-by: Deepak S <deepak.s@linux.intel.com> Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-04Fix Ixload KPIs collection & hang issues.Deepak S1-1/+1
Change-Id: If679333dc1cb9e041a332fb374c55f72eaab1b28 Signed-off-by: Deepak S <deepak.s@linux.intel.com> Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
2017-09-04Addition of Prox NSB changes in yardstickabhijitsinha11-823/+1209
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>