diff options
133 files changed, 3049 insertions, 1102 deletions
diff --git a/ansible/multi_port_baremetal_ixia_correlated_test.yaml b/ansible/baremetal_scale_out_ixia_correlated_test.yaml index 0d223181d..13f6fef15 100644 --- a/ansible/multi_port_baremetal_ixia_correlated_test.yaml +++ b/ansible/baremetal_scale_out_ixia_correlated_test.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation. # +# Copyright (c) 2018 Intel Corporation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -112,6 +112,7 @@ ip: mgmt: - '1.2.1.6/24' + - '1.2.1.7/24' uplink: - '152.16.100.10/24' - '172.16.100.10/24' @@ -127,6 +128,6 @@ - '00:00:00:9e:00:fb' tasks: - - include: multi_port_baremetal_ixia_correlated_test_templates.yml + - include: baremetal_scale_out_ixia_correlated_test_templates.yml with_items: "{{ scale_out }}" diff --git a/ansible/multi_port_baremetal_ixia_correlated_test_templates.yml b/ansible/baremetal_scale_out_ixia_correlated_test_templates.yml index 6f73d8c01..11d3d4674 100644 --- a/ansible/multi_port_baremetal_ixia_correlated_test_templates.yml +++ b/ansible/baremetal_scale_out_ixia_correlated_test_templates.yml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation. # +# Copyright (c) 2018 Intel Corporation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -15,6 +15,10 @@ - set_fact: num_vnfs: "{{ item }}" +- file: + path: /etc/yardstick/nodes + state: directory + - debug: var: num_vnfs verbosity: 2 @@ -24,33 +28,33 @@ dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml - template: - src: ../etc/yardstick/nodes/standalone/ixia_template.yaml - dest: /etc/yardstick/nodes/ixia_{{ num_vnfs }}.yaml + src: ../etc/yardstick/nodes/standalone/ixia_correlated_template.yaml + dest: /etc/yardstick/nodes/ixia_correlated_{{ num_vnfs }}.yaml - template: - src: ../etc/yardstick/nodes/standalone/pod_bm_vnf.yaml + src: ../etc/yardstick/nodes/standalone/pod_bm_vnf_scale_out.yaml dest: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml - template: - src: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml - dest: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_{{ num_vnfs }}.yaml + src: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_scale_out_template.yaml + dest: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_scale_out_{{ num_vnfs }}.yaml - template: - src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-multi-port.yaml - dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml + src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-scale-out.yaml + dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml - template: - src: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml - dest: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_{{num_vnfs}}.yaml + src: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_scale_out_template.yaml + dest: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_scale_out_{{num_vnfs}}.yaml - template: - src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-multi-port.yaml - dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml + src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-scale-out.yaml + dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml - template: - src: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml - dest: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_{{num_vnfs}}.yaml + src: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_scale_out_template.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_scale_out_{{num_vnfs}}.yaml - template: - src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-multi-port.yaml - dest: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml + src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-scale-out.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml diff --git a/ansible/multi_port_baremetal_ixia_test_templates.yml b/ansible/multi_port_baremetal_ixia_test_templates.yml index f2e04a2d1..832f025a1 100644 --- a/ansible/multi_port_baremetal_ixia_test_templates.yml +++ b/ansible/multi_port_baremetal_ixia_test_templates.yml @@ -15,6 +15,10 @@ - set_fact: num_vnfs: "{{ item }}" +- file: + path: /etc/yardstick/nodes + state: directory + - debug: var: num_vnfs verbosity: 2 @@ -25,15 +29,15 @@ - template: src: ../etc/yardstick/nodes/standalone/ixia_template.yaml - dest: /etc/yardstick/nodes/ixia_{{ num_vnfs }}.yaml + dest: /etc/yardstick/nodes/baremetal_ixia_{{ num_vnfs }}.yaml - template: src: ../etc/yardstick/nodes/standalone/pod_bm_vnf.yaml dest: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml - template: - src: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_template.yaml - dest: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml + src: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_ixia_template.yaml + dest: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_ixia_{{ num_vnfs }}.yaml - template: src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-multi-port.yaml @@ -45,7 +49,7 @@ - template: src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-multi-port.yaml - dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port-ixia-{{ num_vnfs }}.yaml + dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-multi-port-{{ num_vnfs }}.yaml - template: src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-scale-out.yaml diff --git a/ansible/multi_port_baremetal_test_templates.yml b/ansible/multi_port_baremetal_test_templates.yml index 4b905f8c7..2d0259364 100644 --- a/ansible/multi_port_baremetal_test_templates.yml +++ b/ansible/multi_port_baremetal_test_templates.yml @@ -15,6 +15,10 @@ - set_fact: num_vnfs: "{{ item }}" +- file: + path: /etc/yardstick/nodes + state: directory + - debug: var: num_vnfs verbosity: 2 @@ -40,8 +44,8 @@ dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-multi-port-{{ num_vnfs }}.yaml - template: - src: ../samples/vnf_samples/nsut/acl/tc_baremetal_vfw_rfc2544_template.yaml - dest: ../samples/vnf_samples/nsut/acl/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml + src: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_template.yaml + dest: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_{{ num_vnfs }}.yaml - template: src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port.yaml @@ -52,8 +56,8 @@ dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-{{ num_vnfs }}.yaml - template: - src: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_vfw_rfc2544_template.yaml - dest: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml + src: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_template.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_{{ num_vnfs }}.yaml - template: src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port.yaml diff --git a/ansible/roles/barometer_collectd/tasks/main.yaml b/ansible/roles/barometer_collectd/tasks/main.yaml new file mode 100644 index 000000000..c06540c3f --- /dev/null +++ b/ansible/roles/barometer_collectd/tasks/main.yaml @@ -0,0 +1,40 @@ +#Copyright 2018 OPNFV and Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- + +- name: Remove barometer-collectd container + docker_container: + name: barometer-collectd + state: absent + +- name: Remove barometer-collectd image + docker_image: + name: opnfv/barometer-collectd + state: absent + +- name: Prepare collectd container + docker_container: + name: barometer-collectd + image: opnfv/barometer-collectd + volumes: + - /opt/collectd/etc/collectd.conf.d/:/opt/collectd/etc/collectd.conf.d + - /var/run:/var/run + - /tmp:/tmp + - /var/lib/collectd:/var/lib/collectd + command: "/run_collectd.sh" + detach: yes + state: present + restart: no + privileged: yes + network_mode: host diff --git a/ansible/roles/docker/tasks/Debian.yml b/ansible/roles/docker/tasks/Debian.yml index 7f998de45..a03040d88 100644 --- a/ansible/roles/docker/tasks/Debian.yml +++ b/ansible/roles/docker/tasks/Debian.yml @@ -14,3 +14,19 @@ --- - name: Install docker.io action: "{{ ansible_pkg_mgr }} name=docker.io state=present force=yes" + + - name: Update package manager cache + tags: + - cache_update + package: + update_cache: yes + + - name: Install python-pip + package: + name: python-pip + state: present + + - name: Install docker-py + pip: + name: docker-py + state: present diff --git a/ansible/roles/install_dpdk/tasks/main.yml b/ansible/roles/install_dpdk/tasks/main.yml index f89a43cae..d1dc2900b 100644 --- a/ansible/roles/install_dpdk/tasks/main.yml +++ b/ansible/roles/install_dpdk/tasks/main.yml @@ -128,3 +128,18 @@ remote_src: yes force: yes mode: 0755 + +- name: make vPE binary + command: make -j {{ ansible_processor_vcpus }} + args: + chdir: "{{ dpdk_path }}/examples/ip_pipeline" + environment: + RTE_SDK: "{{ dpdk_path }}" + +- name: Copy vPE to correct location + copy: + src: "{{ dpdk_path }}/examples/ip_pipeline/build/app/ip_pipeline" + dest: "{{ INSTALL_BIN_PATH }}/vPE_vnf" + remote_src: yes + force: yes + mode: 0755 diff --git a/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml b/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml index 3a29a8a90..b69fb58fb 100644 --- a/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml +++ b/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml @@ -54,3 +54,5 @@ - install_pmu_tools - download_collectd - install_collectd + - docker + - barometer_collectd diff --git a/dashboard/Prox_BM_L3FWD-4Port-1536065939744.json b/dashboard/Prox_BM_L3FWD-4Port-1539358774395.json index 63b8f4f12..304290560 100644 --- a/dashboard/Prox_BM_L3FWD-4Port-1536065939744.json +++ b/dashboard/Prox_BM_L3FWD-4Port-1539358774395.json @@ -14,7 +14,7 @@ "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "4.6.3" + "version": "4.4.3" }, { "type": "panel", @@ -60,7 +60,7 @@ "hideControls": false, "id": null, "links": [], - "refresh": false, + "refresh": "5s", "rows": [ { "collapse": false, @@ -547,7 +547,8 @@ "max": true, "min": true, "show": true, - "sortDesc": true, + "sort": null, + "sortDesc": null, "total": false, "values": true }, @@ -855,7 +856,7 @@ ], "timeFrom": null, "timeShift": null, - "title": "Generator stats", + "title": "Generator Stats: Average Throughout per step", "tooltip": { "msResolution": true, "shared": true, @@ -1040,6 +1041,558 @@ "error": false, "fill": 1, "grid": {}, + "height": "300px", + "id": 206, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": true, + "targets": [ + { + "alias": "TG xe-0 Out packets", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "tc_prox_baremetal_l3fwd-4", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"tg__0.collect_stats.xe0.out_packets\") / 1000000 FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "tg__0.collect_stats.live_stats.xe0.out_packets" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" + } + ] + ], + "tags": [] + }, + { + "alias": "TG xe-1 Out packets", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "tc_prox_baremetal_l3fwd-4", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"tg__0.collect_stats.live_stats.xe1.out_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", + "rawQuery": false, + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "tg__0.collect_stats.live_stats.xe1.out_packets" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" + } + ] + ], + "tags": [] + }, + { + "alias": "TG xe-2 Out packets", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "tc_prox_baremetal_l3fwd-4", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"tg__0.collect_stats.xe2.out_packets\") / 1000000 FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", + "rawQuery": false, + "refId": "C", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "tg__0.collect_stats.live_stats.xe2.out_packets" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" + } + ] + ], + "tags": [] + }, + { + "alias": "TG xe-3 Out packets", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "tc_prox_baremetal_l3fwd-4", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"tg__0.collect_stats.xe3.out_packets\") / 1000000 FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", + "rawQuery": false, + "refId": "D", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "tg__0.collect_stats.live_stats.xe3.out_packets" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" + } + ] + ], + "tags": [] + } + ], + "thresholds": [ + { + "colorMode": "custom", + "fill": true, + "fillColor": "rgba(216, 200, 27, 0.27)", + "op": "gt", + "value": 0 + }, + { + "colorMode": "custom", + "fill": true, + "fillColor": "rgba(234, 112, 112, 0.22)", + "op": "gt", + "value": 0 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Packets Sent by Generator per second and per interface", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Million Packets Per Second", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_YARDSTICK}", + "decimals": 4, + "editable": true, + "error": false, + "fill": 1, + "grid": {}, + "height": "300px", + "id": 207, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "TG xe-0 in packets", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "tc_prox_baremetal_l3fwd-4", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"tg__0.collect_stats.xe0.in_packets\") / 1000000 FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "tg__0.collect_stats.live_stats.xe0.in_packets" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" + } + ] + ], + "tags": [] + }, + { + "alias": "TG xe-1 in packets", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "tc_prox_baremetal_l3fwd-4", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"tg__0.collect_stats.live_stats.xe1.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", + "rawQuery": false, + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "tg__0.collect_stats.live_stats.xe1.in_packets" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" + } + ] + ], + "tags": [] + }, + { + "alias": "TG xe-2 in packets", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "tc_prox_baremetal_l3fwd-4", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"tg__0.collect_stats.live_stats.xe2.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", + "rawQuery": false, + "refId": "C", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "tg__0.collect_stats.live_stats.xe2.in_packets" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" + } + ] + ], + "tags": [] + }, + { + "alias": "TG xe-3 in packets", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "tc_prox_baremetal_l3fwd-4", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"tg__0.collect_stats.live_stats.xe3.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", + "rawQuery": false, + "refId": "D", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "tg__0.collect_stats.live_stats.xe3.in_packets" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" + } + ] + ], + "tags": [] + } + ], + "thresholds": [ + { + "colorMode": "custom", + "fill": true, + "fillColor": "rgba(216, 200, 27, 0.27)", + "op": "gt", + "value": 0 + }, + { + "colorMode": "custom", + "fill": true, + "fillColor": "rgba(234, 112, 112, 0.22)", + "op": "gt", + "value": 0 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Packets Received by Generator per second and per interface", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Million Packets Per Second", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_YARDSTICK}", + "decimals": 4, + "editable": true, + "error": false, + "fill": 1, + "grid": {}, "height": "300", "id": 4, "legend": { @@ -1050,7 +1603,7 @@ "min": true, "rightSide": false, "show": true, - "sortDesc": true, + "sortDesc": false, "total": false, "values": true }, @@ -1295,7 +1848,7 @@ ] }, { - "content": "<h5 style=\"font-family:Verdana\"> <a style=\"color:#31A7D3\"><a style=\"font: 22px '#31A7D3'\"><center>Prox L3Fwd Traffic Gen stats</center> </a></h5>\n", + "content": "<h5 style=\"font-family:Verdana\"> <a style=\"color:#31A7D3\"><a style=\"font: 22px '#31A7D3'\"><center>Generator Stats: Packets per Step</center> </a></h5>\n", "editable": true, "error": false, "height": "40", @@ -1362,11 +1915,12 @@ "type": "fill" } ], + "hide": false, "measurement": "tc_prox_baremetal_l3fwd-4", "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"tg__0.collect_stats.xe0.out_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", - "rawQuery": true, + "rawQuery": false, "refId": "A", "resultFormat": "time_series", "select": [ @@ -1380,6 +1934,12 @@ { "params": [], "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" } ] ], @@ -1402,11 +1962,12 @@ "type": "fill" } ], + "hide": false, "measurement": "tc_prox_baremetal_l3fwd-4", "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"tg__0.collect_stats.xe1.out_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", - "rawQuery": true, + "rawQuery": false, "refId": "B", "resultFormat": "time_series", "select": [ @@ -1420,6 +1981,12 @@ { "params": [], "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" } ] ], @@ -1442,11 +2009,12 @@ "type": "fill" } ], + "hide": false, "measurement": "tc_prox_baremetal_l3fwd-4", "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"tg__0.collect_stats.xe2.out_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", - "rawQuery": true, + "rawQuery": false, "refId": "C", "resultFormat": "time_series", "select": [ @@ -1460,6 +2028,12 @@ { "params": [], "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" } ] ], @@ -1486,7 +2060,7 @@ "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"tg__0.collect_stats.xe3.out_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", - "rawQuery": true, + "rawQuery": false, "refId": "D", "resultFormat": "time_series", "select": [ @@ -1500,6 +2074,12 @@ { "params": [], "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" } ] ], @@ -1524,7 +2104,7 @@ ], "timeFrom": null, "timeShift": null, - "title": "Packets Sent by Generator", + "title": "Packets Sent by Generator per Step", "tooltip": { "msResolution": true, "shared": true, @@ -1542,7 +2122,7 @@ "yaxes": [ { "format": "short", - "label": "Packets ", + "label": "Million Packets Per Step", "logBase": 1, "max": null, "min": "0", @@ -1564,6 +2144,7 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_YARDSTICK}", + "decimals": 4, "editable": true, "error": false, "fill": 1, @@ -1577,6 +2158,7 @@ "max": true, "min": true, "show": true, + "sortDesc": true, "total": false, "values": true }, @@ -1615,7 +2197,7 @@ "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"tg__0.collect_stats.xe0.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", - "rawQuery": true, + "rawQuery": false, "refId": "A", "resultFormat": "time_series", "select": [ @@ -1629,6 +2211,12 @@ { "params": [], "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" } ] ], @@ -1655,7 +2243,7 @@ "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"tg__0.collect_stats.xe1.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", - "rawQuery": true, + "rawQuery": false, "refId": "B", "resultFormat": "time_series", "select": [ @@ -1669,6 +2257,12 @@ { "params": [], "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" } ] ], @@ -1695,7 +2289,7 @@ "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"tg__0.collect_stats.xe2.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", - "rawQuery": true, + "rawQuery": false, "refId": "C", "resultFormat": "time_series", "select": [ @@ -1709,6 +2303,12 @@ { "params": [], "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" } ] ], @@ -1735,7 +2335,7 @@ "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"tg__0.collect_stats.xe3.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)", - "rawQuery": true, + "rawQuery": false, "refId": "D", "resultFormat": "time_series", "select": [ @@ -1749,6 +2349,12 @@ { "params": [], "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" } ] ], @@ -1773,7 +2379,7 @@ ], "timeFrom": null, "timeShift": null, - "title": "Packets Received by Generator", + "title": "Packets Received by Generator per Step", "tooltip": { "msResolution": true, "shared": true, @@ -1791,7 +2397,7 @@ "yaxes": [ { "format": "short", - "label": "Packets Per Second", + "label": "Million Packets Per Step", "logBase": 1, "max": null, "min": "0", @@ -2470,7 +3076,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -2558,7 +3164,7 @@ "measurement": "tc_prox_baremetal_l3fwd-4", "orderByTime": "ASC", "policy": "default", - "query": "SELECT last(\"tg__0.collect_stats.theor_max_throughput\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE \"tg__0.collect_stats.PktSize\" = 64 AND \"tg__0.collect_stats.Status\" = 'Result' AND $timeFilter GROUP BY time($__interval) fill(null)", + "query": "SELECT last(\"tg__0.collect_stats.theor_max_throughput\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE \"tg__0.collect_stats.PktSize\" = 64 AND \"tg__0.collect_stats.Status\" = 'Result' AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -2566,7 +3172,7 @@ [ { "params": [ - "tg__0.collect_stats.theor_max_throughput" + "tg__0.collect_stats.RequestedTxThroughput" ], "type": "field" }, @@ -2588,7 +3194,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -2701,7 +3307,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -2819,7 +3425,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -2936,7 +3542,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -3053,7 +3659,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -3170,7 +3776,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -3287,7 +3893,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -3405,7 +4011,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -3540,7 +4146,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -3658,7 +4264,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -3771,7 +4377,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -3889,7 +4495,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -4006,7 +4612,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -4123,7 +4729,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -4240,7 +4846,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -4357,7 +4963,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -4475,7 +5081,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -4610,7 +5216,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -4728,7 +5334,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -4841,7 +5447,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -4959,7 +5565,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -5076,7 +5682,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -5193,7 +5799,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -5310,7 +5916,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -5427,7 +6033,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -5545,7 +6151,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -5680,7 +6286,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -5798,7 +6404,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -5911,7 +6517,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -6029,7 +6635,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -6146,7 +6752,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -6263,7 +6869,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -6380,7 +6986,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -6497,7 +7103,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -6615,7 +7221,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -6750,7 +7356,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -6868,7 +7474,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -6981,7 +7587,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -7099,7 +7705,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -7216,7 +7822,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -7333,7 +7939,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -7450,7 +8056,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -7567,7 +8173,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -7685,7 +8291,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -7820,7 +8426,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -7938,7 +8544,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -8051,7 +8657,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -8169,7 +8775,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -8286,7 +8892,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -8403,7 +9009,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -8520,7 +9126,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -8637,7 +9243,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -8755,7 +9361,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -8890,7 +9496,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -9008,7 +9614,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -9121,7 +9727,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -9239,7 +9845,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -9356,7 +9962,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -9473,7 +10079,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -9590,7 +10196,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -9707,7 +10313,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -9825,7 +10431,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -9960,7 +10566,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -10078,7 +10684,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -10191,7 +10797,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -10309,7 +10915,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -10426,7 +11032,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -10543,7 +11149,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -10660,7 +11266,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -10777,7 +11383,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -10895,7 +11501,7 @@ "thresholds": "", "title": "", "type": "singlestat", - "valueFontSize": "50%", + "valueFontSize": "30%", "valueMaps": [ { "op": "=", @@ -12457,8 +13063,8 @@ "list": [] }, "time": { - "from": "2018-09-04T00:52:16.948Z", - "to": "2018-09-04T12:52:16.948Z" + "from": "now-3h", + "to": "now" }, "timepicker": { "refresh_intervals": [ @@ -12487,5 +13093,5 @@ }, "timezone": "browser", "title": "Prox_BM_L3FWD-4Port", - "version": 3 + "version": 6 }
\ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index d594b46b9..29319e056 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -26,7 +26,7 @@ ENV YARDSTICK_REPO_DIR="${REPOS_DIR}/yardstick/" \ RUN apt-get update && apt-get install -y git python python-setuptools python-pip iputils-ping && apt-get -y autoremove && apt-get clean RUN easy_install -U setuptools==30.0.0 -RUN pip install appdirs==1.4.0 pyopenssl==17.5.0 openstacksdk==0.9.17 python-openstackclient==3.12.1 python-heatclient==1.11.1 ansible==2.5.5 +RUN pip install appdirs==1.4.0 pyopenssl==17.5.0 openstacksdk==0.11.3 python-openstackclient==3.14.2 python-heatclient==1.14.0 ansible==2.5.5 RUN mkdir -p ${REPOS_DIR} diff --git a/docker/Dockerfile.aarch64.patch b/docker/Dockerfile.aarch64.patch index 6c32404ca..cae9dbb2f 100644 --- a/docker/Dockerfile.aarch64.patch +++ b/docker/Dockerfile.aarch64.patch @@ -31,7 +31,7 @@ index 71ce6b58..fce7c116 100644 +RUN apt-get update && apt-get install -y git python python-setuptools python-pip iputils-ping && apt-get -y autoremove && \ + apt-get install -y libssl-dev && apt-get -y install libffi-dev && apt-get clean RUN easy_install -U setuptools==30.0.0 - RUN pip install appdirs==1.4.0 pyopenssl==17.5.0 openstacksdk==0.9.17 python-openstackclient==3.12.1 python-heatclient==1.11.1 ansible==2.5.5 + RUN pip install appdirs==1.4.0 pyopenssl==17.5.0 openstacksdk==0.11.3 python-openstackclient==3.14.2 python-heatclient==1.14.0 ansible==2.5.5 @@ -40,7 +41,8 @@ RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/yardstick ${Y RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng ${RELENG_REPO_DIR} diff --git a/docs/release/release-notes/release-notes.rst b/docs/release/release-notes/release-notes.rst index 457b308ae..4b3f12bcf 100644 --- a/docs/release/release-notes/release-notes.rst +++ b/docs/release/release-notes/release-notes.rst @@ -1,18 +1,12 @@ -======= -License -======= - -OPNFV Fraser release note for Yardstick Docs -are licensed under a Creative Commons Attribution 4.0 International License. -You should have received a copy of the license along with this. -If not, see <https://creativecommons.org/licenses/by/4.0/>. +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 The *Yardstick framework*, the *Yardstick test cases* are open-source software, licensed under the terms of the Apache License, Version 2.0. -======================================= -OPNFV Fraser Release Note for Yardstick -======================================= +======================= +Yardstick Release Notes +======================= .. toctree:: :maxdepth: 2 @@ -27,7 +21,7 @@ OPNFV Fraser Release Note for Yardstick Abstract ======== -This document describes the release note of Yardstick project. +This document compiles the release notes for the Gambia release of OPNFV Yardstick. Version History @@ -36,16 +30,7 @@ Version History | *Date* | *Version* | *Comment* | | | | | +-------------------+-----------+---------------------------------+ -| Jul 2, 2018 | 6.2.1 | Yardstick for Fraser release | -| | | | -+-------------------+-----------+---------------------------------+ -| Jun 29, 2018 | 6.2.0 | Yardstick for Fraser release | -| | | | -+-------------------+-----------+---------------------------------+ -| May 25, 2018 | 6.1.0 | Yardstick for Fraser release | -| | | | -+-------------------+-----------+---------------------------------+ -| April 27, 2018 | 6.0.0 | Yardstick for Fraser release | +| November 9, 2018 | 7.0.0 | Yardstick for Gambia release | | | | | +-------------------+-----------+---------------------------------+ @@ -60,10 +45,10 @@ the methodology in ETSI-ISG NFV-TST001_. The *Yardstick* framework is *installer*, *infrastructure* and *application* independent. -OPNFV Fraser Release +OPNFV Gambia Release ==================== -This Fraser release provides *Yardstick* as a framework for NFVI testing +This Gambia release provides *Yardstick* as a framework for NFVI testing and OPNFV feature testing, automated in the OPNFV CI pipeline, including: * Documentation generated with Sphinx @@ -88,7 +73,7 @@ and OPNFV feature testing, automated in the OPNFV CI pipeline, including: * Yardstick plug-in configuration yaml files, plug-in install/remove scripts -For Fraser release, the *Yardstick framework* is used for the following +For Gambia release, the *Yardstick framework* is used for the following testing: * OPNFV platform testing - generic test cases to measure the categories: @@ -126,19 +111,19 @@ Release Data | **Project** | Yardstick | | | | +--------------------------------+-----------------------+ -| **Repo/tag** | yardstick/opnfv-6.2.0 | +| **Repo/tag** | yardstick/opnfv-7.0.0 | | | | +--------------------------------+-----------------------+ -| **Yardstick Docker image tag** | opnfv-6.2.0 | +| **Yardstick Docker image tag** | opnfv-7.0.0 | | | | +--------------------------------+-----------------------+ -| **Release designation** | Fraser | +| **Release designation** | Gambia 7.0 | | | | +--------------------------------+-----------------------+ -| **Release date** | Jun 29, 2018 | +| **Release date** | November 9, 2018 | | | | +--------------------------------+-----------------------+ -| **Purpose of the delivery** | OPNFV Fraser 6.2.0 | +| **Purpose of the delivery** | OPNFV Gambia 7.0.0 | | | | +--------------------------------+-----------------------+ @@ -157,7 +142,7 @@ Documents Software Deliverables --------------------- - - The Yardstick Docker image: https://hub.docker.com/r/opnfv/yardstick (tag: opnfv-6.2.0) + - The Yardstick Docker image: https://hub.docker.com/r/opnfv/yardstick (tag: opnfv-7.0.0) List of Contexts ^^^^^^^^^^^^^^^^ @@ -183,33 +168,37 @@ List of Contexts List of Runners ^^^^^^^^^^^^^^^ -.. note:: Yardstick Fraser 6.0.0 add two new Runners, "Dynamictp" and "Search". - -+---------------+-------------------------------------------------------+ -| **Runner** | **Description** | -| | | -+---------------+-------------------------------------------------------+ -| *Arithmetic* | Steps every run arithmetically according to specified | -| | input value | -| | | -+---------------+-------------------------------------------------------+ -| *Duration* | Runs for a specified period of time | -| | | -+---------------+-------------------------------------------------------+ -| *Iteration* | Runs for a specified number of iterations | -| | | -+---------------+-------------------------------------------------------+ -| *Sequence* | Selects input value to a scenario from an input file | -| | and runs all entries sequentially | -| | | -+---------------+-------------------------------------------------------+ -| **Dynamictp** | A runner that searches for the max throughput with | -| | binary search | -| | | -+---------------+-------------------------------------------------------+ -| **Search** | A runner that runs a specific time before it returns | -| | | -+---------------+-------------------------------------------------------+ +.. note:: Yardstick Gambia 7.0.0 adds 1 new Runner, "IterationIPC". + ++----------------+-------------------------------------------------------+ +| **Runner** | **Description** | +| | | ++----------------+-------------------------------------------------------+ +| *Arithmetic* | Steps every run arithmetically according to specified | +| | input value | +| | | ++----------------+-------------------------------------------------------+ +| *Duration* | Runs for a specified period of time | +| | | ++----------------+-------------------------------------------------------+ +| *Iteration* | Runs for a specified number of iterations | +| | | ++----------------+-------------------------------------------------------+ +| *IterationIPC* | Runs a configurable number of times before it | +| | returns. Each iteration has a configurable timeout. | +| | | ++----------------+-------------------------------------------------------+ +| *Sequence* | Selects input value to a scenario from an input file | +| | and runs all entries sequentially | +| | | ++----------------+-------------------------------------------------------+ +| *Dynamictp* | A runner that searches for the max throughput with | +| | binary search | +| | | ++----------------+-------------------------------------------------------+ +| *Search* | A runner that runs a specific time before it returns | +| | | ++----------------+-------------------------------------------------------+ List of Scenarios @@ -280,19 +269,15 @@ List of Scenarios New Test cases -------------- -.. note:: Yardstick Fraser 6.1.0 added two new test cases, "TC092" and "TC093". +.. note:: Yardstick Gambia 7.0.0 adds no new test cases. * Generic NFVI test cases - * OPNFV_YARDSTICK_TCO84 - SPEC CPU 2006 for VM + * (e.g.) OPNFV_YARDSTICK_TCO84 - SPEC CPU 2006 for VM * HA Test cases - * OPNFV_YARDSTICK_TC087 - SDN Controller resilience in non-HA configuration - * OPNFV_YARDSTICK_TC090 - Control node Openstack service down - database instance - * OPNFV_YARDSTICK_TC091 - Control node Openstack service down - heat-api - * OPNFV_YARDSTICK_TC092 - SDN Controller resilience in HA configuration - * OPNFV_YARDSTICK_TC093 - SDN Vswitch resilience in non-HA or HA configuration + * (e.g.) OPNFV_YARDSTICK_TC093 - SDN Vswitch resilience in non-HA or HA configuration Version Change @@ -301,22 +286,23 @@ Version Change Module Version Changes ---------------------- -This is the sixth tracked release of Yardstick. It is based on following +This is the seventh tracked release of Yardstick. It is based on following upstream versions: -- OpenStack Pike +- OpenStack Queens - OpenDayLight Oxygen Document Version Changes ------------------------ -This is the sixth tracked version of the Yardstick framework in OPNFV. +This is the seventh tracked version of the Yardstick framework in OPNFV. It includes the following documentation updates: -- Yardstick User Guide: add "network service benchmarking(NSB)" chapter; - add "Yardstick - NSB Testing -Installation" chapter; add "Yardstick API" chapter; - add "Yardstick user interface" chapter; Update Yardstick installation chapter; +- Yardstick User Guide: + + - Remove vTC chapter; + - Yardstick Developer Guide - Yardstick Release Notes for Yardstick: this document @@ -324,49 +310,49 @@ It includes the following documentation updates: Feature additions ----------------- -- Plugin-based test cases support Heat context -- SR-IOV support for the Heat context -- Support using existing network in Heat context -- Support running test cases with existing VNFs/without destroying VNF in Heat context -- Add vFW scale-up template -- Improvements of unit tests and gating -- GUI improvement about passing parameters +- Simplify Yardstick installation to use a single ansible playbook (nsb_setup.yaml).... +- Spirent support. +- vEPC testcases. +- Agnostic VNF tests cases for reuse of standard RFC-2544 test case. +- PROX enhancements and the addition of Standalone test case using SRIOV and + OVS-DPDK. +- Ixia enhancements for vBNG and PPPoE traffic. +- Improvements of unit tests and gating. +- Add DPDK pktgen traffic generator. +- Kubernetes context enhancements. +- Kubernetes sample test cases of fio and lmbench added. Scenario Matrix =============== -For Fraser 6.0.0, Yardstick was tested on the following scenarios: - -+-------------------------+------+---------+----------+------+------+-------+ -| Scenario | Apex | Compass | Fuel-arm | Fuel | Joid | Daisy | -+=========================+======+=========+==========+======+======+=======+ -| os-nosdn-nofeature-noha | X | X | | | X | | -+-------------------------+------+---------+----------+------+------+-------+ -| os-nosdn-nofeature-ha | X | X | X | X | X | X | -+-------------------------+------+---------+----------+------+------+-------+ -| os-nosdn-bar-noha | X | X | | | | | -+-------------------------+------+---------+----------+------+------+-------+ -| os-nosdn-bar-ha | X | | | | | | -+-------------------------+------+---------+----------+------+------+-------+ -| os-odl-bgpvpn-ha | X | | | | | | -+-------------------------+------+---------+----------+------+------+-------+ -| os-nosdn-calipso-noha | X | | | | | | -+-------------------------+------+---------+----------+------+------+-------+ -| os-nosdn-kvm-ha | | X | | | | | -+-------------------------+------+---------+----------+------+------+-------+ -| os-odl_l3-nofeature-ha | | X | | | | | -+-------------------------+------+---------+----------+------+------+-------+ -| os-odl-sfc-ha | | X | | | | | -+-------------------------+------+---------+----------+------+------+-------+ -| os-odl-nofeature-ha | | | | X | | X | -+-------------------------+------+---------+----------+------+------+-------+ -| os-nosdn-ovs-ha | | | | X | | | -+-------------------------+------+---------+----------+------+------+-------+ -| k8-nosdn-nofeature-ha | | X | | | | | -+-------------------------+------+---------+----------+------+------+-------+ -| k8-nosdn-stor4nfv-noha | | X | | | | | -+-------------------------+------+---------+----------+------+------+-------+ +For Gambia 7.0.0, Yardstick was tested on the following scenarios: + ++-------------------------+------+---------+----------+------+ +| Scenario | Apex | Compass | Fuel-arm | Fuel | ++=========================+======+=========+==========+======+ +| os-nosdn-nofeature-noha | X | | | | ++-------------------------+------+---------+----------+------+ +| os-nosdn-nofeature-ha | X | | | | ++-------------------------+------+---------+----------+------+ +| os-odl-bgpvpn-noha | X | | | | ++-------------------------+------+---------+----------+------+ +| os-nosdn-calipso-noha | X | | | | ++-------------------------+------+---------+----------+------+ +| os-nosdn-kvm-ha | | X | | | ++-------------------------+------+---------+----------+------+ +| os-odl-nofeature-ha | | | X | X | ++-------------------------+------+---------+----------+------+ +| os-odl-sfc-noha | X | | | | ++-------------------------+------+---------+----------+------+ +| os-nosdn-ovs-ha | | | | X | ++-------------------------+------+---------+----------+------+ +| k8-nosdn-nofeature-ha | | X | | | ++-------------------------+------+---------+----------+------+ +| k8-nosdn-stor4nfv-noha | | X | | | ++-------------------------+------+---------+----------+------+ +| k8-nosdn-stor4nfv-ha | | X | | | ++-------------------------+------+---------+----------+------+ Test results @@ -376,19 +362,6 @@ Test results are available in: - jenkins logs on CI: https://build.opnfv.org/ci/view/yardstick/ -The reporting pages can be found at: - -+---------------+----------------------------------------------------------------------------------+ -| apex | http://testresults.opnfv.org/reporting/fraser/yardstick/status-apex.html | -+---------------+----------------------------------------------------------------------------------+ -| compass | http://testresults.opnfv.org/reporting/fraser/yardstick/status-compass.html | -+---------------+----------------------------------------------------------------------------------+ -| fuel\@x86 | http://testresults.opnfv.org/reporting/fraser/yardstick/status-fuel@x86.html | -+---------------+----------------------------------------------------------------------------------+ -| fuel\@aarch64 | http://testresults.opnfv.org/reporting/fraser/yardstick/status-fuel@aarch64.html | -+---------------+----------------------------------------------------------------------------------+ -| joid | http://testresults.opnfv.org/reporting/fraser/yardstick/status-joid.html | -+---------------+----------------------------------------------------------------------------------+ Known Issues/Faults ------------------- @@ -397,214 +370,65 @@ Known Issues/Faults Corrected Faults ---------------- -Fraser 6.2.1: +Gambia 7.0.0: +--------------------+--------------------------------------------------------------------------+ | **JIRA REFERENCE** | **DESCRIPTION** | +====================+==========================================================================+ -| YARDSTICK-1147 | Fix ansible scripts for running in container | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1157 | Bug Fix: correct the file path to build docker file | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1276 | Bugfix: docker build failed | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1280 | Bugfix: uwsgi config file yardstick.ini output error | -+--------------------+--------------------------------------------------------------------------+ - -Fraser 6.2.0: - -+--------------------+--------------------------------------------------------------------------+ -| **JIRA REFERENCE** | **DESCRIPTION** | -+====================+==========================================================================+ -| YARDSTICK-1246 | Update pmd/lcore mask for OVS-DPDK context | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-837 | Move tests: unit/network_services/{lib/,collector/,*.py} | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1144 | Correctly set PYTHONPATH in Dockerfile | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1205 | Set "cmd2" library to version 0.8.6 | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1204 | Bump oslo.messaging version to 5.36.0 | +| YARDSTICK-1137 | Fix CLI argument handling in nsb_setup.sh | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1210 | Remove __init__ method overriding in HeatContextTestCase | +| YARDSTICK-1220 | Get stats for multiple port simultaneously | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1189 | Error when adding SR-IOV interfaces in SR-IOV context | +| YARDSTICK-1260 | Added missing functionality to start VM and access it using SSH keys | +| | in Standalone contexts. | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1214 | Remove AnsibleCommon class method mock | +| YARDSTICK-1298 | Allows for in-line overriding/modification of traffic profile variables | +| | from the testcase file. | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1159 | Add --hwlb options as a command line argument for SampleVNF | +| YARDSTICK-1368 | Updated existing test cases in Yardstick to minimize changes done | +| | manually to run standalone tests for Trex. | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1203 | Add scale out TCs with availability zone support | +| YARDSTICK-1389 | Add status filed for RFC2544 TC iterations | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1167 | Do not start collectd twice when SampleVNF is running on Baremetal | +| YARDSTICK-1395 | Update 'configure_uwsgi' role to work in baremetal/container modes. | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1188 | Add "host_name_separator" variable to Context class | +| YARDSTICK-1402 | Change IP assignment for VM to static for standalone context | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1112 | MQ startup process refactor | +| YARDSTICK-1404 | CPU Utilization for VNF and traffic generator are now graphed on Grafana | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1229 | Cleanup BaseMonitor unit tests | +| YARDSTICK-1411 | Fix Yardstick Docker image ARM build | +--------------------+--------------------------------------------------------------------------+ -| - | Configure ACL via static file | +| YARDSTICK-1414 | Update the pinned sampleVNF version to use a commit instead of a branch | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1191 | Use TRex release v2.41 to support both x86 and aarch64 | +| YARDSTICK-1418 | NSB PROX NFVi test now stops after reaching expected precision | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1106 | Add IxNetwork API Python Binding package | +| YARDSTICK-1457 | Fix influxdb "field type conflict" error | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1224 | Cleanup TestYardstickNSCli class | +| YARDSTICK-1458 | Update Grafana to display "real-time" data instead of historical data. | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1225 | Remove print out of logger exception in TestUtils | +| YARDSTICK-1462 | NSB: Add OvS 2.8.1 support in SA context | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1194 | Add "duration" parameter to test case definition | +| YARDSTICK-1492 | Make OvS server to listen on TCP | +--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1209 | Remove instantiated contexts in "test_task" | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1192 | Standalone XML machine type is not longer valid | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1197 | Refactor RFC2455 TRex traffic profile injection | -+--------------------+--------------------------------------------------------------------------+ -| - | Fix "os.path" mock problems during tests | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1218 | Refactor "utils.parse_ini_file" testing | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1179 | Start nginx and uwsgi servicies only in not container mode | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1177 | Install dependencies: bare-metal, standalone | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1126 | Migrate install.sh script to ansible | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1146 | Fix nsb_setup.sh script | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1247 | NSB setup inventory name changed | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1116 | Changed IxNextgen library load in IXIA RFC2544 traffic generator call. | -+--------------------+--------------------------------------------------------------------------+ -| - | Corrected scale-up command line arguments | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-878 | OpenStack client replacement | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1222 | Bugfix: HA kill process recovery has a conflict | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1139 | Add "os_cloud_config" as a new context flag parameter | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1255 | Extended Context class with get_physical_nodes functionality | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1244 | NSB NFVi BNG test fails to run - stops after one step | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1219 | Decrease Sampling interval | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1101 | NSB NFVi PROX BNG losing many packets | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1217 | Fix NSB NfVi support for 25 and 40Gbps | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1185 | NSB Topology fix for Prox 4 port test case | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-966 | Convert SLA asserts to raises | +| YARDSTICK-1493 | The RX queues number is hard-codded and cannot be changed | +--------------------+--------------------------------------------------------------------------+ -Fraser 6.1.0: - -+--------------------+--------------------------------------------------------------------------+ -| **JIRA REFERENCE** | **DESCRIPTION** | -+====================+==========================================================================+ -| YARDSTICK-995 | Test case spec for SDN Virtual Switch resilience | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1097 | Add pod.yaml file for APEX installer | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1122 | Remove unused code in SampleVNF | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1125 | Update samples/test_suite.yaml | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1132 | Document for Euphrates test case results | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1138 | Support Restart Operation | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1142 | start_service script fails to start openvswitch service in centos distro | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1165 | Bugfix: openrc api dump should be safe_dump | -+--------------------+--------------------------------------------------------------------------+ - -Fraser 6.0.0: - -+--------------------+--------------------------------------------------------------------------+ -| **JIRA REFERENCE** | **DESCRIPTION** | -+====================+==========================================================================+ -| YARDSTICK-831 | tc053 kill haproxy wrong | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-842 | load image fails when there's cirros image exist | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-857 | tc006 failed due to volume attached to different location "/dev/vdc" | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-874 | Specify supported architecture for Ubuntu backports repository | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-875 | Check if multiverse repository is available in Ubuntu | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-893 | Fix proxy env handling and ansible multinode support | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-899 | Variable local_iface_name is read before it is set | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-900 | Section in "upload_yardstick_image.yml" invalid | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-911 | Remove 'inconsistent-return-statements' from Pylint checks | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-989 | Yardstick real-time influxdb KPI reporting regressions | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-994 | NSB set-up build script for baremetal broken | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-996 | Error in address input format in "_ip_range_action_partial" | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1003 | Prox vnf descriptor cleanup for tg and vnf | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1006 | Ansible destroy script will fail if vm has already been undefined | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1012 | constants: fix pylint warnings for OSError | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1014 | Remove unused args in | -| | network_services.traffic_profile.ixia_rfc2544.IXIARFC2544Profile | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1016 | Allow vm to access outside world through default gateway | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1019 | For 'qemu-img version 2.10.1' unit 'MB' is not acceptable ansible script | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1021 | NSB: All Sample VNF test cases timeout after 1 hour of execution | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1036 | Prox: Addition of storage of extra counters for Grafana | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1038 | Missing file which is described in the operation_conf.yaml | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1047 | Error in string format in HeatTemplateError message | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1056 | yardstick report command print error when run test case | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1059 | Reduce the log level if TRex client is no connected | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1073 | Error when retrieving "options" section in "scenario" | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1080 | Running Test Case in Latest Yardstick Docker Image shows Error | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1082 | tc043,tc055, tc063, tc075, pass wrong node name in the ci scenario yaml | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1102 | Don't hide exception traceback from Task.start() | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1107 | bad exception traceback print due to atexit_handler | -+--------------------+--------------------------------------------------------------------------+ -| YARDSTICK-1120 | HA test case tc050 should start monitor before attack | -+--------------------+--------------------------------------------------------------------------+ -Fraser 6.0.0 known restrictions/issues +Gambia 7.0.0 known restrictions/issues ====================================== -+-----------+-----------+----------------------------------------------+ -| Installer | Scenario | Issue | -+===========+===========+==============================================+ -| | | | -+-----------+-----------+----------------------------------------------+ ++-----------+-----------------------+------------------+ +| Installer | Scenario | Issue | ++===========+=======================+==================+ +| apex | os-ovn-nofeature-ha | YARDSTICK-1517 | ++-----------+-----------------------+------------------+ Useful links ============ - wiki project page: https://wiki.opnfv.org/display/yardstick/Yardstick - - wiki Yardstick Fraser release planing page: https://wiki.opnfv.org/display/yardstick/Release+Fraser + - wiki Yardstick Gambia release planning page: https://wiki.opnfv.org/display/yardstick/Release+Gambia - Yardstick repo: https://git.opnfv.org/yardstick @@ -612,4 +436,4 @@ Useful links - Yardstick grafana dashboard: http://testresults.opnfv.org/grafana/ - - Yardstick IRC chanel: #opnfv-yardstick + - Yardstick IRC channel: #opnfv-yardstick diff --git a/docs/release/results/index.rst b/docs/release/results/index.rst index 63445fd1a..30cf62284 100644 --- a/docs/release/results/index.rst +++ b/docs/release/results/index.rst @@ -15,3 +15,8 @@ Yardstick test results .. include:: ./overview.rst .. include:: ./results.rst .. include:: ./euphrates_fraser_comparison.rst + +.. include:: ./yardstick-opnfv-ha.rst +.. include:: ./yardstick-opnfv-kvm.rst +.. include:: ./yardstick-opnfv-parser.rst + diff --git a/docs/testing/developer/devguide/index.rst b/docs/testing/developer/devguide/index.rst index 9a76a32f1..194099a27 100644 --- a/docs/testing/developer/devguide/index.rst +++ b/docs/testing/developer/devguide/index.rst @@ -11,7 +11,6 @@ Yardstick Developer Guide .. toctree:: :maxdepth: 4 - :numbered: devguide devguide_nsb_prox diff --git a/docs/testing/user/userguide/10-yardstick-user-interface.rst b/docs/testing/user/userguide/10-yardstick-user-interface.rst index cadec78ef..76890b29a 100644 --- a/docs/testing/user/userguide/10-yardstick-user-interface.rst +++ b/docs/testing/user/userguide/10-yardstick-user-interface.rst @@ -16,15 +16,19 @@ Command Description =========== -1. When the command is triggered using the task-id and the testcase -name provided the respective values are retrieved from the -database (influxdb in this particular case). +1. When the command is triggered, the relevant values for the + provided task-id and testcase name are retrieved from the + database (`InfluxDB`_ in this particular case). -2. The values are then formatted and then provided to the html -template framed with complete html body using Django Framework. +2. The values are then formatted and provided to the html + template to be rendered using `Jinja2`_. -3. Then the whole template is written into a html file. +3. Then the rendered template is written into a html file. The graph is framed with Timestamp on x-axis and output values (differ from testcase to testcase) on y-axis with the help of -"Highcharts". +`Highcharts`_. + +.. _InfluxDB: https://www.influxdata.com/time-series-platform/influxdb/ +.. _Jinja2: http://jinja.pocoo.org/docs/2.10/ +.. _Highcharts: https://www.highcharts.com/products/highcharts/ diff --git a/docs/testing/user/userguide/14-nsb-operation.rst b/docs/testing/user/userguide/14-nsb-operation.rst index c96155804..7ec5b4ec0 100644 --- a/docs/testing/user/userguide/14-nsb-operation.rst +++ b/docs/testing/user/userguide/14-nsb-operation.rst @@ -434,6 +434,43 @@ There two types of Standalone contexts available: OVS-DPDK and SRIOV. OVS-DPDK uses OVS network with DPDK drivers. SRIOV enables network traffic to bypass the software switch layer of the Hyper-V stack. +Emulated machine type +^^^^^^^^^^^^^^^^^^^^^ + +For better performance test results of emulated VM spawned by Yardstick SA +context (OvS-DPDK/SRIOV), it may be important to control the emulated machine +type used by QEMU emulator. This attribute can be configured via TC definition +in ``contexts`` section under ``extra_specs`` configuration. + +For example: + +.. code-block:: yaml + + contexts: + ... + - type: StandaloneSriov + ... + flavor: + ... + extra_specs: + ... + machine_type: pc-i440fx-bionic + +Where, ``machine_type`` can be set to one of the emulated machine type +supported by QEMU running on SUT platform. To get full list of supported +emulated machine types, the following command can be used on the target SUT +host. + +.. code-block:: yaml + + # qemu-system-x86_64 -machine ? + +By default, the ``machine_type`` option is set to ``pc-i440fx-xenial`` which is +suitable for running Ubuntu 16.04 VM image. So, if this type is not supported +by the target platform or another VM image is used for stand alone (SA) context +VM (e.g.: ``bionic`` image for Ubuntu 18.04), this configuration should be +changed accordingly. + Standalone with OVS-DPDK ^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/testing/user/userguide/15-list-of-tcs.rst b/docs/testing/user/userguide/15-list-of-tcs.rst index 2f0a87144..8990800c1 100644 --- a/docs/testing/user/userguide/15-list-of-tcs.rst +++ b/docs/testing/user/userguide/15-list-of-tcs.rst @@ -29,6 +29,7 @@ Generic NFVI Test Case Descriptions opnfv_yardstick_tc002.rst opnfv_yardstick_tc004.rst opnfv_yardstick_tc005.rst + opnfv_yardstick_tc006.rst opnfv_yardstick_tc008.rst opnfv_yardstick_tc009.rst opnfv_yardstick_tc010.rst @@ -57,6 +58,7 @@ Generic NFVI Test Case Descriptions opnfv_yardstick_tc080.rst opnfv_yardstick_tc081.rst opnfv_yardstick_tc083.rst + opnfv_yardstick_tc084.rst OPNFV Feature Test Cases ======================== @@ -83,6 +85,10 @@ H A opnfv_yardstick_tc057.rst opnfv_yardstick_tc058.rst opnfv_yardstick_tc087.rst + opnfv_yardstick_tc088.rst + opnfv_yardstick_tc089.rst + opnfv_yardstick_tc090.rst + opnfv_yardstick_tc091.rst opnfv_yardstick_tc092.rst opnfv_yardstick_tc093.rst diff --git a/docs/testing/user/userguide/index.rst b/docs/testing/user/userguide/index.rst index 1cbd0858f..ff0bb6f5d 100644 --- a/docs/testing/user/userguide/index.rst +++ b/docs/testing/user/userguide/index.rst @@ -11,7 +11,6 @@ Yardstick User Guide .. toctree:: :maxdepth: 4 - :numbered: 01-introduction 02-methodology diff --git a/docs/testing/user/userguide/nsb/nsb-list-of-tcs.rst b/docs/testing/user/userguide/nsb/nsb-list-of-tcs.rst index f9ca900fd..723cd6f99 100644 --- a/docs/testing/user/userguide/nsb/nsb-list-of-tcs.rst +++ b/docs/testing/user/userguide/nsb/nsb-list-of-tcs.rst @@ -27,7 +27,7 @@ NSB PROX Test Case Descriptions tc_prox_context_buffering_port tc_prox_context_load_balancer_port tc_prox_context_vpe_port - tc_prox_context_lw_after_port + tc_prox_context_lw_aftr_port tc_epc_default_bearer_landslide tc_epc_dedicated_bearer_landslide tc_epc_saegw_tput_relocation_landslide diff --git a/etc/yardstick/nodes/standalone/pod_bm_vnf_scale_out.yaml b/etc/yardstick/nodes/standalone/pod_bm_vnf_scale_out.yaml new file mode 100644 index 000000000..b48a04911 --- /dev/null +++ b/etc/yardstick/nodes/standalone/pod_bm_vnf_scale_out.yaml @@ -0,0 +1,37 @@ +# Copyright (c) 2018 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +nodes: +{% for num in range(num_vnfs|int) %} +- + name: vnf__{{ num }} + role: vnf__{{ num }} + ip: {{vnf.ip.mgmt[num] | ipaddr('address')}} + user: {{vnf.user}} + password: {{vnf.password}} + key_filename: {{vnf.key_filename}} + interfaces: + xe0: # logical name from topology.yaml and vnfd.yaml + vpci: "{{vnf.pcis.uplink[num]}}" + dpdk_port_num: 0 + local_ip: "{{vnf.ip.uplink[num] | ipaddr('address')}}" + netmask: "{{vnf.ip.uplink[num] | ipaddr('netmask')}}" + local_mac: "{{vnf.mac.uplink[num]}}" + xe1: # logical name from topology.yaml and vnfd.yaml + vpci: "{{vnf.pcis.downlink[num]}}" + dpdk_port_num: 1 + local_ip: "{{vnf.ip.downlink[num] | ipaddr('address') }}" + netmask: "{{vnf.ip.downlink[num] | ipaddr('netmask')}}" + local_mac: "{{vnf.mac.downlink[num]}}" +{% endfor %} diff --git a/requirements.txt b/requirements.txt index 43d7120db..43a6c7fdb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,9 +15,6 @@ ansible==2.5.5 # GPLv3; OSI Approved GNU General Public License v3 or backport-ipaddress==0.1; python_version <= "2.7" # OSI Approved Python Software Foundation License chainmap==1.0.2 # Python Software Foundation License; OSI Approved Python Software Foundation License cmd2==0.8.6 # MIT License; OSI Approved MIT License -django==1.8.17 # BSD; OSI Approved BSD License - # NOTE(ralonsoh): django must be bumped to 1.11.8; consider the migration notes [1] - # [1] https://docs.djangoproject.com/ja/1.11/ref/templates/upgrading/ docker-py==1.10.6 # OSI Approved Apache Software License extras==1.0.0 # OSI Approved MIT License flasgger==0.5.13 # MIT diff --git a/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_template.yaml b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_template.yaml index 17b918ce0..91155070a 100644 --- a/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_template.yaml +++ b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -41,7 +41,6 @@ scenarios: vnf__0: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} - ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs * 2}}_port.ixncfg runner: type: Iteration iterations: 10 @@ -49,7 +48,7 @@ scenarios: contexts: - name: yardstick type: Node - file: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml + file: /etc/yardstick/nodes/baremetal_ixia_{{num_vnfs}}.yaml - name: yardstick type: Node file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml diff --git a/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_template.yaml b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_template.yaml index 1333b2721..8ba836841 100644 --- a/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_template.yaml +++ b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_template.yaml @@ -17,7 +17,7 @@ schema: yardstick:task:0.1 scenarios: - type: NSPerf traffic_profile: ../../traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml - topology: acl-tg-topology-scale-out-{{ num_vnfs }}.yaml + topology: acl-tg-topology-multi-port-{{ num_vnfs }}.yaml nodes: tg__0: tg__0.yardstick vnf__0: vnf__0.yardstick diff --git a/samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml index fe7be9aba..e3558b80e 100644 --- a/samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml +++ b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -42,8 +42,6 @@ scenarios: vnf__0: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} - ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{ num_vnfs }}_port.ixncfg - runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_scale_out_template.yaml new file mode 100644 index 000000000..55ff62d70 --- /dev/null +++ b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_scale_out_template.yaml @@ -0,0 +1,60 @@ +# Copyright (c) 2018 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema: yardstick:task:0.1 +scenarios: + - type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml + topology: acl-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml + nodes: + tg__0: tg__0.yardstick + tg__1: tg__1.yardstick +{% for vnf_num in range(num_vnfs|int) %} + vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick +{% endfor %} + options: + framesize: + uplink: {{ flow.pkt_size.uplink | to_yaml }} + downlink: {{ flow.pkt_size.downlink | to_yaml }} + flow: + src_ip: +{% for vnf_num in range(num_vnfs|int) %} + - {'tg__0': 'xe{{ vnf_num }}'} +{% endfor %} + dst_ip: +{% for vnf_num in range(num_vnfs|int) %} + - {'tg__1': 'xe{{ vnf_num }}'} +{% endfor %} + count: {{ flow.count }} + traffic_type: {{ flow.traffic_type }} + rfc2544: + allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }} + correlated_traffic: true + vnf__0: + rules: acl_1rule.yaml + vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} + ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{ num_vnfs * 2 }}_port.ixncfg + + runner: + type: Iteration + iterations: 10 + interval: 35 +contexts: + - name: yardstick + type: Node + file: /etc/yardstick/nodes/ixia_correlated_{{num_vnfs}}.yaml + - type: Node + file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml + name: yardstick diff --git a/samples/vnf_samples/nsut/acl/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/acl/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index bd99fdd3b..7e5d792a2 100644 --- a/samples/vnf_samples/nsut/acl/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/acl/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -40,7 +40,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/acl/acl_ipv4_profile_1flows.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/acl/tc_ovs_acl_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/acl/tc_ovs_acl_udp_ixia_correlated_scale_out_template.yaml index 5f5d0869d..7c035b9b1 100644 --- a/samples/vnf_samples/nsut/acl/tc_ovs_acl_udp_ixia_correlated_scale_out_template.yaml +++ b/samples/vnf_samples/nsut/acl/tc_ovs_acl_udp_ixia_correlated_scale_out_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -46,7 +46,6 @@ scenarios: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} {% endfor %} - ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs}}_port.ixncfg runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/acl/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/acl/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index 469eddfc0..f766674f9 100644 --- a/samples/vnf_samples/nsut/acl/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/acl/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -35,7 +35,6 @@ scenarios: vnf__0: rules: acl_1rule.yaml vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1} - ixia_profile: ../../traffic_profiles/acl/acl_ipv4_profile_1flows.ixncfg runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_correlated_scale_out_template.yaml index 024507bc6..c2c11028e 100644 --- a/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_correlated_scale_out_template.yaml +++ b/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_correlated_scale_out_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -46,7 +46,6 @@ scenarios: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} {% endfor %} - ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs}}_port.ixncfg runner: type: Iteration diff --git a/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_scale_out_template.yaml b/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_scale_out_template.yaml index 4abc429f4..888d0c8af 100644 --- a/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_scale_out_template.yaml +++ b/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_scale_out_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -45,7 +45,6 @@ scenarios: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} {% endfor %} - ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs* 2}}_port.ixncfg runner: type: Iteration diff --git a/samples/vnf_samples/nsut/acl/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/acl/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index a9eb9066b..617af481e 100644 --- a/samples/vnf_samples/nsut/acl/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/acl/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -35,7 +35,6 @@ scenarios: vnf__0: rules: acl_1rule.yaml vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1} - ixia_profile: ../../traffic_profiles/acl/acl_ipv4_profile_1flows.ixncfg runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_template.yaml index 3a1c1cb12..deb28dcc3 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_template.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ schema: yardstick:task:0.1 scenarios: - type: NSPerf traffic_profile: ../../traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml - topology: cgnapt-tg-topology-ixia-multi-port-{{ num_vnfs }}.yaml + topology: cgnapt-tg-topology-multi-port-ixia-{{ num_vnfs }}.yaml nodes: tg__0: tg__0.yardstick vnf__0: vnf__0.yardstick @@ -39,9 +39,7 @@ scenarios: rfc2544: allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }} vnf__0: - rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} - ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs * 2}}_port.ixncfg runner: type: Iteration iterations: 10 @@ -49,7 +47,7 @@ scenarios: contexts: - name: yardstick type: Node - file: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml + file: /etc/yardstick/nodes/baremetal_ixia_{{num_vnfs}}.yaml - name: yardstick type: Node file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml diff --git a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_template.yaml index 81000a7a5..f52b41bb3 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_template.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_template.yaml @@ -39,7 +39,6 @@ scenarios: rfc2544: allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }} vnf__0: - rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} runner: type: Iteration diff --git a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml index 879911f62..198c84713 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -40,10 +40,7 @@ scenarios: rfc2544: allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }} vnf__0: - rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} - ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{ num_vnfs }}_port.ixncfg - runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_scale_out_template.yaml new file mode 100644 index 000000000..c0936082a --- /dev/null +++ b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_scale_out_template.yaml @@ -0,0 +1,59 @@ +# Copyright (c) 2018 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema: yardstick:task:0.1 +scenarios: + - type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml + topology: cgnapt-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml + nodes: + tg__0: tg__0.yardstick + tg__1: tg__1.yardstick +{% for vnf_num in range(num_vnfs|int) %} + vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick +{% endfor %} + options: + framesize: + uplink: {{ flow.pkt_size.uplink | to_yaml }} + downlink: {{ flow.pkt_size.downlink | to_yaml }} + flow: + src_ip: +{% for vnf_num in range(num_vnfs|int) %} + - {'tg__0': 'xe{{ vnf_num }}'} +{% endfor %} + dst_ip: +{% for vnf_num in range(num_vnfs|int) %} + - {'tg__1': 'xe{{ vnf_num }}'} +{% endfor %} + count: {{ flow.count }} + traffic_type: {{ flow.traffic_type }} + rfc2544: + allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }} + correlated_traffic: true + vnf__0: + vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} + ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{ num_vnfs * 2}}_port.ixncfg + + runner: + type: Iteration + iterations: 10 + interval: 35 +contexts: + - name: yardstick + type: Node + file: /etc/yardstick/nodes/ixia_correlated_{{num_vnfs}}.yaml + - type: Node + file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml + name: yardstick diff --git a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia.yaml index a56321396..7813a29a3 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia_scale_up.yaml b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia_scale_up.yaml index 71f6d1dc8..ef99a2fea 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia_scale_up.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia_scale_up.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -41,7 +41,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows.ixncfg {% endfor %} context: type: Node diff --git a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_with_latency_ipv4_1flow_dynamic_cgnapt_ixia.yaml b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_with_latency_ipv4_1flow_dynamic_cgnapt_ixia.yaml index c51729790..08a22586d 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_with_latency_ipv4_1flow_dynamic_cgnapt_ixia.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_rfc2544_with_latency_ipv4_1flow_dynamic_cgnapt_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the License); # you may not use this file except in compliance with the License. @@ -44,7 +44,6 @@ scenarios: type: Iteration iterations: 28 interval: 35 - ixia_profile: ../../traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows_3node_latency.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml index e2002abc0..72d19fc6c 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -47,7 +47,6 @@ scenarios: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} {% endfor %} - ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs}}_port.ixncfg runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/cgnapt/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/cgnapt/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index 1d8be5f74..90a3aaf6c 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -36,7 +36,6 @@ scenarios: vnf__0: rules: acl_1rule.yaml vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1} - ixia_profile: ../../traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows.ixncfg runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_correlated_scale_out_template.yaml index 7f6e76cc2..618d018a4 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_correlated_scale_out_template.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_correlated_scale_out_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -46,7 +46,6 @@ scenarios: vnf__{{ vnf_num }}: vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} {% endfor %} - ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs}}_port.ixncfg runner: type: Iteration diff --git a/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_scale_out_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_scale_out_template.yaml index a88a05d5a..913174917 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_scale_out_template.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_scale_out_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -46,7 +46,6 @@ scenarios: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} {% endfor %} - ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs * 2}}_port.ixncfg runner: type: Iteration diff --git a/samples/vnf_samples/nsut/cgnapt/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/cgnapt/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index f0d996d51..f163d33e7 100644 --- a/samples/vnf_samples/nsut/cgnapt/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/cgnapt/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -36,7 +36,6 @@ scenarios: vnf__0: rules: acl_1rule.yaml vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1} - ixia_profile: ../../traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows.ixncfg runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml b/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml index b9235eeec..ab2a633a5 100644 --- a/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -40,7 +40,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows_1518B.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_1518B_ixia_4port.yaml b/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_1518B_ixia_4port.yaml index eb5ae3ebb..03ceaafcb 100644 --- a/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_1518B_ixia_4port.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_1518B_ixia_4port.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# vfw_ipv4_profile_1flows.ixncfg --- schema: yardstick:task:0.1 @@ -41,7 +40,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_muttiport_1518B.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index 7f43ed2ed..0da6e427e 100644 --- a/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -40,7 +40,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows_64B.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_4port.yaml b/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_4port.yaml index 8754f4d24..6850fd8eb 100644 --- a/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_4port.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_4port.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# vfw_ipv4_profile_1flows.ixncfg --- schema: yardstick:task:0.1 @@ -41,7 +40,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_muttiport_64B.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1024B_ixia.yaml b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1024B_ixia.yaml index fa302d5d7..235c6fc8e 100644 --- a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1024B_ixia.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1024B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows_1024B.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1280B_ixia.yaml b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1280B_ixia.yaml index 97b19ad48..5e56847b5 100644 --- a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1280B_ixia.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1280B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows_1280B.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_128B_ixia.yaml b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_128B_ixia.yaml index 4cab0f2d9..2286fcb6c 100644 --- a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_128B_ixia.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_128B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows_128B.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml index fd30946f9..680cf7cab 100644 --- a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows_1518B.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_256B_ixia.yaml b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_256B_ixia.yaml index 63150af13..245236a48 100644 --- a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_256B_ixia.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_256B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows_256B.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_512B_ixia.yaml b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_512B_ixia.yaml index 9482a394e..3a100ede7 100644 --- a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_512B_ixia.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_512B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows_512B.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index 42dfcc187..f334aa916 100644 --- a/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/firewall/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows_64B.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/prox/configs/gen_l2fwd_multiflow-2.cfg b/samples/vnf_samples/nsut/prox/configs/gen_l2fwd_multiflow-2.cfg index c1939c06c..fb2584e91 100644 --- a/samples/vnf_samples/nsut/prox/configs/gen_l2fwd_multiflow-2.cfg +++ b/samples/vnf_samples/nsut/prox/configs/gen_l2fwd_multiflow-2.cfg @@ -53,15 +53,19 @@ mode=gen tx port=p0 bps=1250000000 ; Ethernet + IP + UDP -pkt inline=${sut_mac0} 70 00 00 00 00 01 08 00 45 00 00 1c 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 08 55 7b -; src_ip: 152.16.100.0/8 +pkt inline=${sut_mac0} 70 00 00 00 00 01 08 00 45 00 00 24 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 10 55 7b 00 01 02 03 04 05 06 07 +; src_ip: 152.16.100.0/28 random=0000XXX1 rand_offset=29 -; dst_ip: 152.16.100.0/8 +; dst_ip: 152.16.100.0/28 random=0000XXX0 rand_offset=33 +; src_port: 5000-5007, dst_port: 5000-5007 random=0001001110001XXX0001001110001XXX rand_offset=34 +lat pos=42 +signature pos=46 +signature=0xcafedeca [core 2] name=p1 @@ -70,16 +74,19 @@ mode=gen tx port=p1 bps=1250000000 ; Ethernet + IP + UDP -pkt inline=${sut_mac1} 70 00 00 00 00 01 08 00 45 00 00 1c 00 01 00 00 40 11 f7 7d 98 10 28 01 98 10 28 02 13 88 13 88 00 08 55 7b -; src_ip: 152.16.40.0/8 -random=1001100000010000001010000000XXXX -rand_offset=26 -; dst_ip: 152.16.40.0/8 -random=1001100000010000001010000000XXXX -rand_offset=30 +pkt inline=${sut_mac1} 70 00 00 00 00 02 08 00 45 00 00 24 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 10 55 7b 00 01 02 03 04 05 06 07 +; src_ip: 152.16.100.0/28 +random=0000XXX1 +rand_offset=29 +; dst_ip: 152.16.100.0/28 +random=0000XXX0 +rand_offset=33 +; src_port: 5000-5007, dst_port: 5000-5007 random=0001001110001XXX0001001110001XXX rand_offset=34 - +lat pos=42 +signature pos=46 +signature=0xcafedeca [core 3] name=rec 0 @@ -87,6 +94,8 @@ task=0 mode=lat rx port=p0 lat pos=42 +signature pos=46 +signature=0xcafedeca [core 4] name=rec 1 @@ -94,3 +103,5 @@ task=0 mode=lat rx port=p1 lat pos=42 +signature pos=46 +signature=0xcafedeca
\ No newline at end of file diff --git a/samples/vnf_samples/nsut/prox/configs/gen_l2fwd_multiflow-4.cfg b/samples/vnf_samples/nsut/prox/configs/gen_l2fwd_multiflow-4.cfg index f1e158414..c3c7c25d7 100644 --- a/samples/vnf_samples/nsut/prox/configs/gen_l2fwd_multiflow-4.cfg +++ b/samples/vnf_samples/nsut/prox/configs/gen_l2fwd_multiflow-4.cfg @@ -27,21 +27,29 @@ $sut_mac3=@@dst_mac3 [port 0] name=p0 mac=hardware +rx desc=2048 +tx desc=2048 promiscuous=yes [port 1] name=p1 mac=hardware +rx desc=2048 +tx desc=2048 promiscuous=yes [port 2] name=p2 mac=hardware +rx desc=2048 +tx desc=2048 promiscuous=yes [port 3] name=p3 mac=hardware +rx desc=2048 +tx desc=2048 promiscuous=yes [defaults] @@ -61,15 +69,19 @@ mode=gen tx port=p0 bps=1250000000 ; Ethernet + IP + UDP -pkt inline=${sut_mac0} 70 00 00 00 00 01 08 00 45 00 00 1c 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 08 55 7b -; src_ip: 152.16.100.0/8 +pkt inline=${sut_mac0} 70 00 00 00 00 01 08 00 45 00 00 24 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 10 55 7b 00 01 02 03 04 05 06 07 +; src_ip: 152.16.100.0/28 random=0000XXX1 rand_offset=29 -; dst_ip: 152.16.100.0/8 +; dst_ip: 152.16.100.0/28 random=0000XXX0 rand_offset=33 +; src_port: 5000-5007, dst_port: 5000-5007 random=0001001110001XXX0001001110001XXX rand_offset=34 +lat pos=42 +signature pos=46 +signature=0xcafedeca [core 2] name=p1 @@ -78,15 +90,19 @@ mode=gen tx port=p1 bps=1250000000 ; Ethernet + IP + UDP -pkt inline=${sut_mac1} 70 00 00 00 00 01 08 00 45 00 00 1c 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 08 55 7b -; src_ip: 152.16.100.0/8 +pkt inline=${sut_mac1} 70 00 00 00 00 02 08 00 45 00 00 24 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 10 55 7b 00 01 02 03 04 05 06 07 +; src_ip: 152.16.100.0/28 random=0000XXX1 rand_offset=29 -; dst_ip: 152.16.100.0/8 +; dst_ip: 152.16.100.0/28 random=0000XXX0 rand_offset=33 +; src_port: 5000-5007, dst_port: 5000-5007 random=0001001110001XXX0001001110001XXX rand_offset=34 +lat pos=42 +signature pos=46 +signature=0xcafedeca [core 3] name=p2 @@ -95,15 +111,19 @@ mode=gen tx port=p2 bps=1250000000 ; Ethernet + IP + UDP -pkt inline=${sut_mac2} 70 00 00 00 00 01 08 00 45 00 00 1c 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 08 55 7b -; src_ip: 152.16.100.0/8 +pkt inline=${sut_mac2} 70 00 00 00 00 03 08 00 45 00 00 24 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 10 55 7b 00 01 02 03 04 05 06 07 +; src_ip: 152.16.100.0/28 random=0000XXX1 rand_offset=29 -; dst_ip: 152.16.100.0/8 +; dst_ip: 152.16.100.0/28 random=0000XXX0 rand_offset=33 +; src_port: 5000-5007, dst_port: 5000-5007 random=0001001110001XXX0001001110001XXX rand_offset=34 +lat pos=42 +signature pos=46 +signature=0xcafedeca [core 4] name=p3 @@ -112,36 +132,52 @@ mode=gen tx port=p3 bps=1250000000 ; Ethernet + IP + UDP -pkt inline=${sut_mac3} 70 00 00 00 00 01 08 00 45 00 00 1c 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 08 55 7b -; src_ip: 152.16.100.0/8 +pkt inline=${sut_mac3} 70 00 00 00 00 04 08 00 45 00 00 24 00 01 00 00 40 11 f7 7d 98 10 64 01 98 10 64 02 13 88 13 88 00 10 55 7b 00 01 02 03 04 05 06 07 +; src_ip: 152.16.100.0/28 random=0000XXX1 rand_offset=29 -; dst_ip: 152.16.100.0/8 +; dst_ip: 152.16.100.0/28 random=0000XXX0 rand_offset=33 +; src_port: 5000-5007, dst_port: 5000-5007 random=0001001110001XXX0001001110001XXX rand_offset=34 +lat pos=42 +signature pos=46 +signature=0xcafedeca [core 5] name=rec 0 task=0 mode=lat rx port=p0 +lat pos=42 +signature pos=46 +signature=0xcafedeca [core 6] name=rec 1 task=0 mode=lat rx port=p1 +lat pos=42 +signature pos=46 +signature=0xcafedeca [core 7] name=rec 2 task=0 mode=lat rx port=p2 +lat pos=42 +signature pos=46 +signature=0xcafedeca [core 8] name=rec 3 task=0 mode=lat rx port=p3 +lat pos=42 +signature pos=46 +signature=0xcafedeca diff --git a/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd-2.yaml b/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd-2.yaml index 2f5e6ea27..e819ffc21 100644 --- a/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd-2.yaml +++ b/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd-2.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2018 Intel Corporation +# Copyright (c) 2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -71,8 +71,6 @@ contexts: hw:cpu_sockets: 1 hw:cpu_cores: 10 hw:cpu_threads: 2 - user: "root" - password: "" servers: vnf_0: network_ports: diff --git a/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd-4.yaml b/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd-4.yaml new file mode 100644 index 000000000..213d557e3 --- /dev/null +++ b/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd-4.yaml @@ -0,0 +1,113 @@ +# Copyright (c) 2018 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema: "yardstick:task:0.1" + +scenarios: +- + type: NSPerf + traffic_profile: ../../traffic_profiles/prox_binsearch.yaml + topology: prox-tg-topology-4.yaml + + nodes: + tg__0: tg__0.yardstick + vnf__0: vnf__0.yardstick + + options: + interface_speed_gbps: 10 + + vnf__0: + prox_path: /opt/nsb_bin/prox + prox_config: "configs/handle_l2fwd-4.cfg" + prox_args: + "-t": "" + + tg__0: + prox_path: /opt/nsb_bin/prox + prox_config: "configs/gen_l2fwd-4.cfg" + prox_args: + "-e": "" + "-t": "" + + runner: + type: Duration + # we kill after duration, independent of test duration, so set this high + duration: 300 + +contexts: + - name: yardstick + type: Node + file: prox_tg_bm.yaml + - name: yardstick + type: StandaloneOvsDpdk + file: /etc/yardstick/nodes/standalone/host_ovs.yaml + vm_deploy: True + ovs_properties: + version: + ovs: 2.8.0 + dpdk: 17.05.2 + pmd_threads: 2 + ram: + socket_0: 2048 + socket_1: 2048 + queues: 4 + vpath: "/usr/local" + flavor: + images: "/var/lib/libvirt/images/yardstick-nsb-image.img" + ram: 16384 + extra_specs: + hw:cpu_sockets: 1 + hw:cpu_cores: 10 + hw:cpu_threads: 2 + servers: + vnf__0: + network_ports: + mgmt: + cidr: '1.1.1.62/24' + xe0: + - uplink_0 + xe1: + - downlink_0 + xe2: + - uplink_1 + xe3: + - downlink_1 + + networks: + uplink_0: + port_num: 0 + phy_port: "0000:05:00.0" + vpci: "0000:00:0a.0" + cidr: '152.16.100.10/24' + gateway_ip: '152.16.100.20' + downlink_0: + port_num: 1 + phy_port: "0000:05:00.1" + vpci: "0000:00:0b.0" + cidr: '152.16.40.10/24' + gateway_ip: '152.16.100.20' + uplink_1: + port_num: 2 + phy_port: "0000:05:00.2" + vpci: "0000:00:0c.0" + cidr: '152.16.50.10/24' + gateway_ip: '152.16.100.20' + downlink_1: + port_num: 3 + phy_port: "0000:05:00.3" + vpci: "0000:00:0d.0" + cidr: '152.16.30.10/24' + gateway_ip: '152.16.100.20' + diff --git a/samples/vnf_samples/nsut/prox/tc_prox_ovs_l2fwd_pktTouch-2.yaml b/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd_pktTouch-2.yaml index f3b5c4fef..81f867ea3 100644 --- a/samples/vnf_samples/nsut/prox/tc_prox_ovs_l2fwd_pktTouch-2.yaml +++ b/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd_pktTouch-2.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2018 Intel Corporation +# Copyright (c) 2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -71,8 +71,6 @@ contexts: hw:cpu_sockets: 1 hw:cpu_cores: 10 hw:cpu_threads: 2 - user: "" - password: "" servers: vnf__0: network_ports: diff --git a/samples/vnf_samples/nsut/prox/tc_prox_ovs_l2fwd_pktTouch-4.yaml b/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd_pktTouch-4.yaml index a2385bd4a..c7e7ba506 100644 --- a/samples/vnf_samples/nsut/prox/tc_prox_ovs_l2fwd_pktTouch-4.yaml +++ b/samples/vnf_samples/nsut/prox/tc_prox_ovs-dpdk_l2fwd_pktTouch-4.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2018 Intel Corporation +# Copyright (c) 2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -71,8 +71,6 @@ contexts: hw:cpu_sockets: 1 hw:cpu_cores: 10 hw:cpu_threads: 2 - user: "" - password: "" servers: vnf__0: network_ports: diff --git a/samples/vnf_samples/nsut/prox/tc_prox_sriov_l2fwd-2.yaml b/samples/vnf_samples/nsut/prox/tc_prox_sriov_l2fwd-2.yaml index 97a3d5af3..ceeb877f8 100644 --- a/samples/vnf_samples/nsut/prox/tc_prox_sriov_l2fwd-2.yaml +++ b/samples/vnf_samples/nsut/prox/tc_prox_sriov_l2fwd-2.yaml @@ -61,8 +61,6 @@ contexts: hw:cpu_sockets: 1 hw:cpu_cores: 10 hw:cpu_threads: 2 - user: "" - password: "" servers: vnf_0: network_ports: diff --git a/samples/vnf_samples/nsut/prox/tc_prox_sriov_l2fwd_pktTouch-2.yaml b/samples/vnf_samples/nsut/prox/tc_prox_sriov_l2fwd_pktTouch-2.yaml new file mode 100644 index 000000000..660fce508 --- /dev/null +++ b/samples/vnf_samples/nsut/prox/tc_prox_sriov_l2fwd_pktTouch-2.yaml @@ -0,0 +1,83 @@ +# Copyright (c) 2016-2018 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema: "yardstick:task:0.1" + +scenarios: +- + type: NSPerf + traffic_profile: ../../traffic_profiles/prox_binsearch.yaml + topology: prox-tg-topology-2.yaml + + nodes: + tg__0: tg__0.yardstick + vnf__0: vnf__0.yardstick + + options: + interface_speed_gbps: 10 + + vnf__0: + prox_path: /opt/nsb_bin/prox + prox_config: "configs/handle_l2fwd_pktTouch-2.cfg" + prox_args: + "-t": "" + + tg__0: + prox_path: /opt/nsb_bin/prox + prox_config: "configs/gen_l2fwd_pktTouch-2.cfg" + prox_args: + "-e": "" + "-t": "" + + runner: + type: Duration + # we kill after duration, independent of test duration, so set this high + duration: 300 + +contexts: + - name: yardstick + type: Node + file: prox_tg_bm.yaml + - name: yardstick + type: StandaloneSriov + file: /etc/yardstick/nodes/standalone/host_sriov.yaml + vm_deploy: True + flavor: + images: "/var/lib/libvirt/images/yardstick-nsb-image.img" + ram: 16384 + extra_specs: + hw:cpu_sockets: 1 + hw:cpu_cores: 10 + hw:cpu_threads: 2 + servers: + vnf__0: + network_ports: + mgmt: + cidr: '1.1.1.61/24' + xe0: + - uplink_0 + xe1: + - downlink_0 + networks: + uplink_0: + phy_port: "0000:05:00.0" + vpci: "0000:00:0a.0" + cidr: '152.16.100.10/24' + gateway_ip: '152.16.100.20' + downlink_0: + phy_port: "0000:05:00.1" + vpci: "0000:00:0b.0" + cidr: '152.16.40.10/24' + gateway_ip: '152.16.100.20' diff --git a/samples/vnf_samples/nsut/prox/tc_prox_sriov_l2fwd_pktTouch-4.yaml b/samples/vnf_samples/nsut/prox/tc_prox_sriov_l2fwd_pktTouch-4.yaml new file mode 100644 index 000000000..1571f2ffe --- /dev/null +++ b/samples/vnf_samples/nsut/prox/tc_prox_sriov_l2fwd_pktTouch-4.yaml @@ -0,0 +1,99 @@ +# Copyright (c) 2016-2018 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema: "yardstick:task:0.1" + +scenarios: +- + type: NSPerf + traffic_profile: ../../traffic_profiles/prox_binsearch.yaml + topology: prox-tg-topology-4.yaml + + nodes: + tg__0: tg__0.yardstick + vnf__0: vnf__0.yardstick + + options: + interface_speed_gbps: 10 + + vnf__0: + prox_path: /opt/nsb_bin/prox + prox_config: "configs/handle_l2fwd_pktTouch-4.cfg" + prox_args: + "-t": "" + + tg__0: + prox_path: /opt/nsb_bin/prox + prox_config: "configs/gen_l2fwd_pktTouch-4.cfg" + prox_args: + "-e": "" + "-t": "" + + runner: + type: Duration + # we kill after duration, independent of test duration, so set this high + duration: 300 + +contexts: + - name: yardstick + type: Node + file: prox_tg_bm.yaml + - name: yardstick + type: StandaloneSriov + file: /etc/yardstick/nodes/standalone/host_sriov.yaml + vm_deploy: True + flavor: + images: "/var/lib/libvirt/images/yardstick-nsb-image.img" + ram: 16384 + extra_specs: + hw:cpu_sockets: 1 + hw:cpu_cores: 10 + hw:cpu_threads: 2 + servers: + vnf__0: + network_ports: + mgmt: + cidr: '1.1.1.61/24' + xe0: + - uplink_0 + xe1: + - downlink_0 + xe2: + - uplink_1 + xe3: + - downlink_1 + + networks: + uplink_0: + phy_port: "0000:05:00.0" + vpci: "0000:00:0a.0" + cidr: '152.16.100.10/24' + gateway_ip: '152.16.100.20' + downlink_0: + phy_port: "0000:05:00.1" + vpci: "0000:00:0b.0" + cidr: '152.16.40.10/24' + gateway_ip: '152.16.100.20' + uplink_1: + phy_port: "0000:05:00.2" + vpci: "0000:00:0c.0" + cidr: '152.16.50.10/24' + gateway_ip: '152.16.100.20' + downlink_1: + phy_port: "0000:05:00.3" + vpci: "0000:00:0d.0" + cidr: '152.16.30.10/24' + gateway_ip: '152.16.100.20' + diff --git a/samples/vnf_samples/nsut/prox/tc_prox_sriov_l3fwd-2.yaml b/samples/vnf_samples/nsut/prox/tc_prox_sriov_l3fwd-2.yaml new file mode 100644 index 000000000..e8807bad8 --- /dev/null +++ b/samples/vnf_samples/nsut/prox/tc_prox_sriov_l3fwd-2.yaml @@ -0,0 +1,87 @@ +# Copyright (c) 2016-2017 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema: "yardstick:task:0.1" + +scenarios: +- + type: NSPerf + traffic_profile: ../../traffic_profiles/prox_binsearch.yaml + topology: prox-tg-topology-2.yaml + + nodes: + tg__0: tg__0.yardstick + vnf__0: vnf__0.yardstick + + options: + vnf__0: + prox_path: /opt/nsb_bin/prox + prox_config: "configs/handle_l3fwd-2.cfg" + prox_args: + "-t": "" + prox_files: + "configs/ipv4-2port.lua" : "" + prox_generate_parameter: True + + tg__0: + collectd: + interval: 1 + prox_path: /opt/nsb_bin/prox + prox_config: "configs/gen_l3fwd-2.cfg" + prox_args: + "-e": "" + "-t": "" + + runner: + type: Duration + # we kill after duration, independent of test duration, so set this high + duration: 1800 + +contexts: + - name: yardstick + type: Node + file: prox_tg_bm.yaml + - name: yardstick + type: StandaloneSriov + file: /etc/yardstick/nodes/standalone/host_sriov.yaml + vm_deploy: True + flavor: + images: "/var/lib/libvirt/images/yardstick-nsb-image.img" + ram: 16384 + extra_specs: + hw:cpu_sockets: 1 + hw:cpu_cores: 10 + hw:cpu_threads: 2 + servers: + vnf__0: + network_ports: + mgmt: + cidr: '1.1.1.62/24' + xe0: + - uplink_0 + xe1: + - downlink_0 + networks: + uplink_0: + phy_port: "0000:05:00.0" + vpci: "0000:00:0a.0" + cidr: '152.16.100.10/24' + gateway_ip: '152.16.100.20' + downlink_0: + phy_port: "0000:05:00.1" + vpci: "0000:00:0b.0" + cidr: '152.16.40.10/24' + gateway_ip: '152.16.100.20' + diff --git a/samples/vnf_samples/nsut/prox/tc_prox_sriov_l3fwd-4.yaml b/samples/vnf_samples/nsut/prox/tc_prox_sriov_l3fwd-4.yaml new file mode 100644 index 000000000..16578a190 --- /dev/null +++ b/samples/vnf_samples/nsut/prox/tc_prox_sriov_l3fwd-4.yaml @@ -0,0 +1,102 @@ +# Copyright (c) 2016-2017 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema: "yardstick:task:0.1" + +scenarios: +- + type: NSPerf + traffic_profile: ../../traffic_profiles/prox_binsearch.yaml + topology: prox-tg-topology-4.yaml + + nodes: + tg__0: tg__0.yardstick + vnf__0: vnf__0.yardstick + + options: + vnf__0: + prox_path: /opt/nsb_bin/prox + prox_config: "configs/handle_l3fwd-4.cfg" + prox_args: + "-t": "" + prox_files: + "configs/ipv4.lua" : "" + prox_generate_parameter: True + + tg__0: + collectd: + interval: 1 + prox_path: /opt/nsb_bin/prox + prox_config: "configs/gen_l3fwd-4.cfg" + prox_args: + "-e": "" + "-t": "" + + runner: + type: Duration + # we kill after duration, independent of test duration, so set this high + duration: 1800 + +contexts: + - name: yardstick + type: Node + file: prox_tg_bm.yaml + - name: yardstick + type: StandaloneSriov + file: /etc/yardstick/nodes/standalone/host_sriov.yaml + vm_deploy: True + flavor: + images: "/var/lib/libvirt/images/yardstick-nsb-image.img" + ram: 16384 + extra_specs: + hw:cpu_sockets: 1 + hw:cpu_cores: 10 + hw:cpu_threads: 2 + servers: + vnf__0: + network_ports: + mgmt: + cidr: '1.1.1.62/24' + xe0: + - uplink_0 + xe1: + - downlink_0 + xe2: + - uplink_1 + xe3: + - downlink_1 + + networks: + uplink_0: + phy_port: "0000:05:00.0" + vpci: "0000:00:0a.0" + cidr: '152.16.100.10/24' + gateway_ip: '152.16.100.20' + downlink_0: + phy_port: "0000:05:00.1" + vpci: "0000:00:0b.0" + cidr: '152.16.40.10/24' + gateway_ip: '152.16.100.20' + uplink_1: + phy_port: "0000:05:00.2" + vpci: "0000:00:0c.0" + cidr: '152.16.50.10/24' + gateway_ip: '152.16.100.20' + downlink_1: + phy_port: "0000:05:00.3" + vpci: "0000:00:0d.0" + cidr: '152.16.30.10/24' + gateway_ip: '152.16.100.20' + diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_http_ixload_1b_Requests-65000_Concurrency.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_http_ixload_1b_Requests-65000_Concurrency.yaml index 1c807ca53..7a9a265d6 100644 --- a/samples/vnf_samples/nsut/vfw/tc_baremetal_http_ixload_1b_Requests-65000_Concurrency.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_http_ixload_1b_Requests-65000_Concurrency.yaml @@ -22,6 +22,10 @@ scenarios: tg__0: trafficgen_1.yardstick vnf__0: vnf.yardstick options: + simulated_users: + uplink: [65000] + page_object: + uplink: ["/1b.html"] framesize: uplink: {64B: 100} downlink: {64B: 100} diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index 6c9cb9d03..5f5fa4b95 100644 --- a/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -40,7 +40,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_4port.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_4port.yaml index 56afdf426..9055eb896 100644 --- a/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_4port.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_4port.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -11,7 +11,6 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# vfw_ipv4_profile_1flows.ixncfg --- schema: yardstick:task:0.1 @@ -41,7 +40,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_muttiport.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_scale_up.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_scale_up.yaml index 0aea82247..07138d60a 100644 --- a/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_scale_up.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_ixia_scale_up.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -41,7 +41,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg {% endfor %} context: type: Node diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_with_latency_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_with_latency_ipv4_1rule_1flow_64B_ixia.yaml index d71b985b8..077f1fb15 100644 --- a/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_with_latency_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_with_latency_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -41,7 +41,6 @@ scenarios: type: Iteration iterations: 28 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_ixia_template.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_ixia_template.yaml index f442c71d0..28e3216ba 100644 --- a/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_ixia_template.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_ixia_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -41,7 +41,6 @@ scenarios: vnf__0: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} - ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs * 2}}_port.ixncfg runner: type: Iteration iterations: 10 @@ -49,7 +48,7 @@ scenarios: contexts: - name: yardstick type: Node - file: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml + file: /etc/yardstick/nodes/baremetal_ixia_{{num_vnfs}}.yaml - name: yardstick type: Node file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml index d00fe1dcf..462d14f1a 100644 --- a/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -42,8 +42,6 @@ scenarios: vnf__0: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} - ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{ num_vnfs }}_port.ixncfg - runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_scale_out_template.yaml new file mode 100644 index 000000000..77d0bf809 --- /dev/null +++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_scale_out_template.yaml @@ -0,0 +1,60 @@ +# Copyright (c) 2018 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema: yardstick:task:0.1 +scenarios: + - type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml + topology: vfw-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml + nodes: + tg__0: tg__0.yardstick + tg__1: tg__1.yardstick +{% for vnf_num in range(num_vnfs|int) %} + vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick +{% endfor %} + options: + framesize: + uplink: {{ flow.pkt_size.uplink | to_yaml }} + downlink: {{ flow.pkt_size.downlink | to_yaml }} + flow: + src_ip: +{% for vnf_num in range(num_vnfs|int) %} + - {'tg__0': 'xe{{ vnf_num }}'} +{% endfor %} + dst_ip: +{% for vnf_num in range(num_vnfs|int) %} + - {'tg__1': 'xe{{ vnf_num }}'} +{% endfor %} + count: {{ flow.count }} + traffic_type: {{ flow.traffic_type }} + rfc2544: + allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }} + correlated_traffic: true + vnf__0: + rules: acl_1rule.yaml + vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} + ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{ num_vnfs * 2 }}_port.ixncfg + + runner: + type: Iteration + iterations: 10 + interval: 35 +contexts: + - name: yardstick + type: Node + file: /etc/yardstick/nodes/ixia_correlated_{{num_vnfs}}.yaml + - type: Node + file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml + name: yardstick diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1024B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1024B_ixia.yaml index 1e95c8c2d..7b597d64a 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1024B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1024B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1280B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1280B_ixia.yaml index 1a7e147aa..03e6c3477 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1280B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1280B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_128B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_128B_ixia.yaml index 9a4e60be1..516afcdb0 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_128B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_128B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml index 7a1ffd82c..73f21cac2 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_1518B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_256B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_256B_ixia.yaml index c06c9ad1a..4603ad0b7 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_256B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_256B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_512B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_512B_ixia.yaml index 798dca293..340a1be9d 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_512B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_512B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: yardstick1 diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index b685699cc..042eb24be 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: traffic_gen diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_trex_4port.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_trex_4port.yaml index 2469dc866..c94ab313a 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_trex_4port.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_external_rfc2544_ipv4_1rule_1flow_64B_trex_4port.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,6 @@ scenarios: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_muttiport.ixncfg contexts: # put node context first, so we don't HEAT deploy if node has errors - name: traffic_gen diff --git a/samples/vnf_samples/nsut/vfw/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index a77d9003c..d23c74677 100644 --- a/samples/vnf_samples/nsut/vfw/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -35,7 +35,6 @@ scenarios: vnf__0: rules: acl_1rule.yaml vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1} - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_correlated_scale_out_template.yaml index 3606a5585..42903cd81 100644 --- a/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_correlated_scale_out_template.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_correlated_scale_out_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -46,7 +46,6 @@ scenarios: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} {% endfor %} - ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs}}_port.ixncfg runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_scale_out_template.yaml b/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_scale_out_template.yaml index c263a7688..14934e91e 100644 --- a/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_scale_out_template.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_scale_out_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Intel Corporation +# Copyright (c) 2017-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -45,7 +45,6 @@ scenarios: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} {% endfor %} - ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{num_vnfs * 2}}_port.ixncfg runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vfw/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/vfw/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml index 458471a28..96cdf0f6e 100644 --- a/samples/vnf_samples/nsut/vfw/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -35,7 +35,6 @@ scenarios: vnf__0: rules: acl_1rule.yaml vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1} - ixia_profile: ../../traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_correlated_scale_out_template.yaml index d7016964a..7ac918dd4 100644 --- a/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_correlated_scale_out_template.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_correlated_scale_out_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -46,7 +46,6 @@ scenarios: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} {% endfor %} - ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{ num_vnfs }}_port.ixncfg runner: type: Iteration diff --git a/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_scale_out_template.yaml b/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_scale_out_template.yaml index 79a6be073..c91bb2386 100644 --- a/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_scale_out_template.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_scale_out_template.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -45,7 +45,6 @@ scenarios: rules: acl_1rule.yaml vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}} {% endfor %} - ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{num_vnfs * 2}}_port.ixncfg runner: type: Iteration diff --git a/samples/vnf_samples/nsut/vpe/tc_baremetal_http_ipv4_ixload.yaml b/samples/vnf_samples/nsut/vpe/tc_baremetal_http_ipv4_ixload.yaml index 04668d38f..cbe6cf196 100644 --- a/samples/vnf_samples/nsut/vpe/tc_baremetal_http_ipv4_ixload.yaml +++ b/samples/vnf_samples/nsut/vpe/tc_baremetal_http_ipv4_ixload.yaml @@ -32,11 +32,12 @@ scenarios: traffic_type: 4 vnf__0: nfvi_enable: True - vnf_config: vpe_config + vnf_config: {file: './vpe_config/vpe_config_2_ports', + action_bulk_file: './vpe_config/action_bulk_512.txt', + full_tm_profile_file: './vpe_config/full_tm_profile_10G.cfg'} runner: type: Duration duration: 4 - ixia_profile: ../../traffic_profiles/vpe/HTTP-vPE_IPv4_2Ports.rxf # Need vlan update context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_1518B.yaml b/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_1518B.yaml index 4f8395b53..158768094 100644 --- a/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_1518B.yaml +++ b/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_1518B.yaml @@ -34,7 +34,9 @@ scenarios: allowed_drop_rate: 0.0001 - 0.0001 vnf__0: nfvi_enable: True - vnf_config: vpe_config + vnf_config: {file: './vpe_config/vpe_config_2_ports', + action_bulk_file: './vpe_config/action_bulk_512.txt', + full_tm_profile_file: './vpe_config/full_tm_profile_10G.cfg'} runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B.yaml b/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B.yaml index 271cb8978..b7d209eab 100644 --- a/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B.yaml +++ b/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B.yaml @@ -34,7 +34,9 @@ scenarios: allowed_drop_rate: 0.0001 - 0.0001 vnf__0: nfvi_enable: True - vnf_config: vpe_config + vnf_config: {file: './vpe_config/vpe_config_2_ports', + action_bulk_file: './vpe_config/action_bulk_512.txt', + full_tm_profile_file: './vpe_config/full_tm_profile_10G.cfg'} runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia.yaml b/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia.yaml index d55540afb..330d8e85e 100644 --- a/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -34,12 +34,13 @@ scenarios: allowed_drop_rate: 0.0001 - 0.0001 vnf__0: nfvi_enable: True - vnf_config: vpe_config + vnf_config: {file: './vpe_config/vpe_config_2_ports', + action_bulk_file: './vpe_config/action_bulk_512.txt', + full_tm_profile_file: './vpe_config/full_tm_profile_10G.cfg'} runner: type: Iteration iterations: 10 interval: 35 - ixia_profile: ../../traffic_profiles/vpe/vpe_ipv4_profile_1flows.ixncfg context: type: Node name: yardstick diff --git a/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B_trex_corelated_traffic.yaml b/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B_trex_corelated_traffic.yaml index a552730a5..b68716492 100644 --- a/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B_trex_corelated_traffic.yaml +++ b/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_64B_trex_corelated_traffic.yaml @@ -36,7 +36,9 @@ scenarios: correlated_traffic: true vnf__0: nfvi_enable: True - vnf_config: vpe_config + vnf_config: {file: './vpe_config/vpe_config_2_ports', + action_bulk_file: './vpe_config/action_bulk_512.txt', + full_tm_profile_file: './vpe_config/full_tm_profile_10G.cfg'} runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_IMIX.yaml b/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_IMIX.yaml index 47b9a6f2e..421697ff0 100644 --- a/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_IMIX.yaml +++ b/samples/vnf_samples/nsut/vpe/tc_baremetal_rfc2544_ipv4_1flow_IMIX.yaml @@ -35,7 +35,9 @@ scenarios: allowed_drop_rate: 0.0001 - 0.0001 vnf__0: nfvi_enable: True - vnf_config: vpe_config + vnf_config: {file: './vpe_config/vpe_config_2_ports', + action_bulk_file: './vpe_config/action_bulk_512.txt', + full_tm_profile_file: './vpe_config/full_tm_profile_10G.cfg'} runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_ixia.yaml b/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_ixia.yaml index 5293b5270..56c7147db 100644 --- a/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2017 Intel Corporation +# Copyright (c) 2016-2018 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -34,8 +34,9 @@ scenarios: allowed_drop_rate: 0.0001 - 0.0001 vnf__0: nfvi_enable: True - vnf_config: vpe_config - ixia_profile: ../../traffic_profiles/vpe/vpe_ipv4_profile_1flows.ixncfg + vnf_config: {file: './vpe_config/vpe_config_2_ports', + action_bulk_file: './vpe_config/action_bulk_512.txt', + full_tm_profile_file: './vpe_config/full_tm_profile_10G.cfg'} runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml b/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml index ce239808e..39aea1382 100644 --- a/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml +++ b/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml @@ -34,7 +34,9 @@ scenarios: allowed_drop_rate: 0.0001 - 0.0001 vnf__0: nfvi_enable: True - vnf_config: vpe_config + vnf_config: {file: './vpe_config/vpe_config_2_ports', + action_bulk_file: './vpe_config/action_bulk_512.txt', + full_tm_profile_file: './vpe_config/full_tm_profile_10G.cfg'} runner: type: Iteration iterations: 10 diff --git a/samples/vnf_samples/nsut/vpe/vpe_config/vpe_config_2_ports b/samples/vnf_samples/nsut/vpe/vpe_config/vpe_config_2_ports new file mode 100644 index 000000000..35443c877 --- /dev/null +++ b/samples/vnf_samples/nsut/vpe/vpe_config/vpe_config_2_ports @@ -0,0 +1,86 @@ +[PIPELINE0] +type = MASTER +core = 0 + +[TM0] +burst_read = 24 +burst_write = 32 +cfg = /tmp/full_tm_profile_10G.cfg + +[PIPELINE1] +type = FIREWALL +core = s0c1 +pktq_in = RXQ0.0 +pktq_out = SWQ0 SINK0 +n_rules = 4096 +pkt_type = qinq_ipv4 + +[PIPELINE2] +type = FLOW_CLASSIFICATION +core = s0c2 +pktq_in = SWQ0 +pktq_out = SWQ1 SINK1 +n_flows = 65536 +key_size = 8 +key_offset = 268 +key_mask = 00000FFF00000FFF +flowid_offset = 172 + +[PIPELINE3] +type = FLOW_ACTIONS +core = s0c2 +pktq_in = SWQ1 +pktq_out = SWQ2 +n_flows = 65536 +n_meters_per_flow = 1 +flow_id_offset = 172 +ip_hdr_offset = 278 +color_offset = 176 + +[PIPELINE4] +type = FLOW_ACTIONS +core = s0c1 +pktq_in = SWQ2 +pktq_out = SWQ3 +n_flows = 65536 +n_meters_per_flow = 4 +flow_id_offset = 172 +ip_hdr_offset = 278 +color_offset = 176 + +[PIPELINE5] +type = ROUTING +core = s0c3 +pktq_in = SWQ3 +pktq_out = TXQ1.0 SINK2 +encap = ethernet_mpls +mpls_color_mark = yes +ip_hdr_offset = 278 +color_offset = 176 + +[PIPELINE6] +type = ROUTING +core = s0c4 +pktq_in = RXQ1.0 +pktq_out = SWQ4 SINK3 +encap = ethernet_qinq +qinq_sched = yes +ip_hdr_offset = 270 + +[PIPELINE7] +type = PASS-THROUGH +core = s0c5 +pktq_in = SWQ4 +pktq_out = SWQ5 + +[PIPELINE8] +type = PASS-THROUGH +core = s0c5 +pktq_in = SWQ5 TM0 +pktq_out = TM0 SWQ6 + +[PIPELINE9] +type = PASS-THROUGH +core = s0c5 +pktq_in = SWQ6 +pktq_out = TXQ0.0 diff --git a/samples/vnf_samples/traffic_profiles/acl/acl_ipv4_profile_1flows.ixncfg b/samples/vnf_samples/traffic_profiles/acl/acl_ipv4_profile_1flows.ixncfg Binary files differdeleted file mode 100644 index 01269bee2..000000000 --- a/samples/vnf_samples/traffic_profiles/acl/acl_ipv4_profile_1flows.ixncfg +++ /dev/null diff --git a/samples/vnf_samples/traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows.ixncfg b/samples/vnf_samples/traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows.ixncfg Binary files differdeleted file mode 100644 index d24204385..000000000 --- a/samples/vnf_samples/traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows.ixncfg +++ /dev/null diff --git a/samples/vnf_samples/traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows_3node_latency.ixncfg b/samples/vnf_samples/traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows_3node_latency.ixncfg Binary files differdeleted file mode 100644 index fdf47dad8..000000000 --- a/samples/vnf_samples/traffic_profiles/cgnapt/cgnat_ipv4_profile_1flows_3node_latency.ixncfg +++ /dev/null diff --git a/samples/vnf_samples/traffic_profiles/http_tests/HTTP_1b-requests_65000_concurrency.yaml b/samples/vnf_samples/traffic_profiles/http_tests/HTTP_1b-requests_65000_concurrency.yaml index dcc11d55a..fec8b3316 100644 --- a/samples/vnf_samples/traffic_profiles/http_tests/HTTP_1b-requests_65000_concurrency.yaml +++ b/samples/vnf_samples/traffic_profiles/http_tests/HTTP_1b-requests_65000_concurrency.yaml @@ -13,10 +13,8 @@ uplink_0: gateway: <GATEWAY_ADDR> # will be taken from pod file http_client: - http_no_requests: "1000" # number of http iterations - http_concurency: "65000" # number of threads to be run - http_locator: "/1B.bin" # http locator to be read - attacker_tests: "False" # True : If attacker Test, False : Otherwise + simulated_users: {{ get(simulated_users, 'simulated_users.uplink_0', '65000') }} # number of threads to be run + page_object: {{ get(page_object, 'page_object.uplink_0', '/1b.html') }} # http locator to be read downlink_0: ip: @@ -33,10 +31,8 @@ uplink_1: gateway: <GATEWAY_ADDR> http_client: - http_no_requests: "1000" - http_concurency: "65000" - http_locator: "/1B.bin" - attacker_tests: "False" + simulated_users: {{ get(simulated_users, 'simulated_users.uplink_1', '65000') }} # number of threads to be run + page_object: {{ get(page_object, 'page_object.uplink_1', '/1b.html') }} # http locator to be read downlink_1: ip: diff --git a/samples/vnf_samples/traffic_profiles/ixia/ixia_ipv4_profile_2_port.ixncfg b/samples/vnf_samples/traffic_profiles/ixia/ixia_ipv4_profile_2_port.ixncfg Binary files differdeleted file mode 100644 index 01269bee2..000000000 --- a/samples/vnf_samples/traffic_profiles/ixia/ixia_ipv4_profile_2_port.ixncfg +++ /dev/null diff --git a/samples/vnf_samples/traffic_profiles/ixia/ixia_ipv4_profile_4_port.ixncfg b/samples/vnf_samples/traffic_profiles/ixia/ixia_ipv4_profile_4_port.ixncfg Binary files differdeleted file mode 100644 index 76accc1ed..000000000 --- a/samples/vnf_samples/traffic_profiles/ixia/ixia_ipv4_profile_4_port.ixncfg +++ /dev/null diff --git a/samples/vnf_samples/traffic_profiles/ixia_ipv4_latency_vpe.yaml b/samples/vnf_samples/traffic_profiles/ixia_ipv4_latency_vpe.yaml index 7942fbf4d..a21227f38 100644 --- a/samples/vnf_samples/traffic_profiles/ixia_ipv4_latency_vpe.yaml +++ b/samples/vnf_samples/traffic_profiles/ixia_ipv4_latency_vpe.yaml @@ -41,7 +41,7 @@ name: rfc2544 description: Traffic profile to run RFC2544 latency traffic_profile: traffic_type : IXIARFC2544Profile # defines traffic behavior - constant or look for highest possible throughput - frame_rate : 100 # pc of linerate + frame_rate : 100% # pc of linerate injection_time: {{ injection_time }} enable_latency: True @@ -50,7 +50,7 @@ uplink_0: id: 1 outer_l2: framesize: - 64B: "{{ get(imix, 'imix.uplink.imix_small', '0') }}" + 64B: "{{ get(imix, 'imix.uplink.imix_64B', '0') }}" 128B: "{{ get(imix, 'imix.uplink.imix_128B', '0') }}" 256B: "{{ get(imix, 'imix.uplink.imix_256B', '0') }}" 373b: "{{ get(imix, 'imix.uplink.imix_373B', '0') }}" @@ -69,7 +69,7 @@ uplink_0: cfi: 0 outer_l3v4: - proto: "tcp" + proto: "udp" srcip4: "{{get(flow, 'flow.src_ip_0', '192.168.0.0-192.168.255.255') }}" dstip4: "{{get(flow, 'flow.dst_ip_0', '192.16.0.0-192.16.0.31') }}" count: "{{get(flow, 'flow.count', '1') }}" @@ -84,11 +84,11 @@ uplink_0: count: "{{get(flow, 'flow.count', '1') }}" seed: "{{get(flow, 'flow.seed', '1') }}" downlink_0: - id: 2 ipv4: + id: 2 outer_l2: framesize: - 64B: "{{ get(imix, 'imix.uplink.imix_small', '0') }}" + 64B: "{{ get(imix, 'imix.uplink.imix_64B', '0') }}" 128B: "{{ get(imix, 'imix.uplink.imix_128B', '0') }}" 256B: "{{ get(imix, 'imix.uplink.imix_256B', '0') }}" 373b: "{{ get(imix, 'imix.uplink.imix_373B', '0') }}" @@ -97,7 +97,7 @@ downlink_0: 1518B: "{{get(imix, 'imix.uplink.imix_1500B', '0') }}" outer_l3v4: - proto: "tcp" + proto: "udp" srcip4: "{{get(flow, 'flow.dst_ip_0', '192.16.0.0-192.16.0.31') }}" dstip4: "{{get(flow, 'flow.src_ip_0', '192.168.0.0-192.168.255.255') }}" count: "{{get(flow, 'flow.count', '1') }}" @@ -112,11 +112,11 @@ downlink_0: count: "{{get(flow, 'flow.count', '1') }}" seed: "{{get(flow, 'flow.seed', '1') }}" uplink_1: - id: 3 ipv4: + id: 3 outer_l2: framesize: - 64B: "{{ get(imix, 'imix.uplink.imix_small', '0') }}" + 64B: "{{ get(imix, 'imix.uplink.imix_64B', '0') }}" 128B: "{{ get(imix, 'imix.uplink.imix_128B', '0') }}" 256B: "{{ get(imix, 'imix.uplink.imix_256B', '0') }}" 373b: "{{ get(imix, 'imix.uplink.imix_373B', '0') }}" @@ -135,7 +135,7 @@ uplink_1: cfi: 0 outer_l3v4: - proto: "tcp" + proto: "udp" srcip4: "{{get(flow, 'flow.srcip_1', '192.168.0.0-192.168.255.255') }}" dstip4: "{{get(flow, 'flow.dstip_1', '192.16.0.0-192.16.0.31') }}" count: "{{get(flow, 'flow.count', '1') }}" @@ -150,11 +150,11 @@ uplink_1: count: "{{get(flow, 'flow.count', '1') }}" seed: "{{get(flow, 'flow.seed', '1') }}" downlink_1: - id: 4 ipv4: + id: 4 outer_l2: framesize: - 64B: "{{ get(imix, 'imix.uplink.imix_small', '0') }}" + 64B: "{{ get(imix, 'imix.uplink.imix_64B', '0') }}" 128B: "{{ get(imix, 'imix.uplink.imix_128B', '0') }}" 256B: "{{ get(imix, 'imix.uplink.imix_256B', '0') }}" 373b: "{{ get(imix, 'imix.uplink.imix_373B', '0') }}" @@ -163,7 +163,7 @@ downlink_1: 1518B: "{{get(imix, 'imix.uplink.imix_1500B', '0') }}" outer_l3v4: - proto: "tcp" + proto: "udp" srcip4: "{{get(flow, 'flow.dst_ip_1', '192.16.0.0-192.16.0.31') }}" dstip4: "{{get(flow, 'flow.src_ip_1', '192.168.0.0-192.168.255.255') }}" count: "{{get(flow, 'flow.count', '1') }}" diff --git a/samples/vnf_samples/traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg b/samples/vnf_samples/traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg Binary files differdeleted file mode 100644 index 01269bee2..000000000 --- a/samples/vnf_samples/traffic_profiles/vfw/vfw_ipv4_profile_1flows.ixncfg +++ /dev/null diff --git a/samples/vnf_samples/traffic_profiles/vfw/vfw_ipv4_profile_muttiport.ixncfg b/samples/vnf_samples/traffic_profiles/vfw/vfw_ipv4_profile_muttiport.ixncfg Binary files differdeleted file mode 100644 index 76accc1ed..000000000 --- a/samples/vnf_samples/traffic_profiles/vfw/vfw_ipv4_profile_muttiport.ixncfg +++ /dev/null diff --git a/samples/vnf_samples/traffic_profiles/vpe/vpe_ipv4_profile_1flows.ixncfg b/samples/vnf_samples/traffic_profiles/vpe/vpe_ipv4_profile_1flows.ixncfg Binary files differdeleted file mode 100644 index dc05fc89a..000000000 --- a/samples/vnf_samples/traffic_profiles/vpe/vpe_ipv4_profile_1flows.ixncfg +++ /dev/null diff --git a/samples/vnf_samples/traffic_profiles/vpe/vpe_ipv4_profile_256Kflows.ixncfg b/samples/vnf_samples/traffic_profiles/vpe/vpe_ipv4_profile_256Kflows.ixncfg Binary files differdeleted file mode 100644 index b7e45bfae..000000000 --- a/samples/vnf_samples/traffic_profiles/vpe/vpe_ipv4_profile_256Kflows.ixncfg +++ /dev/null diff --git a/yardstick/benchmark/contexts/standalone/model.py b/yardstick/benchmark/contexts/standalone/model.py index fda667137..aa5fdd391 100644 --- a/yardstick/benchmark/contexts/standalone/model.py +++ b/yardstick/benchmark/contexts/standalone/model.py @@ -45,7 +45,7 @@ VM_TEMPLATE = """ <vcpu cpuset='{cpuset}'>{vcpu}</vcpu> {cputune} <os> - <type arch="x86_64" machine="pc-i440fx-xenial">hvm</type> + <type arch="x86_64" machine="{machine}">hvm</type> <boot dev="hd" /> </os> <features> @@ -306,6 +306,7 @@ class Libvirt(object): cpuset = Libvirt.pin_vcpu_for_perf(connection, hw_socket) cputune = extra_spec.get('cputune', '') + machine = extra_spec.get('machine_type', 'pc-i440fx-xenial') mac = StandaloneContextHelper.get_mac_address(0x00) image = cls.create_snapshot_qemu(connection, index, flavor.get("images", None)) @@ -316,7 +317,8 @@ class Libvirt(object): memory=memory, vcpu=vcpu, cpu=cpu, numa_cpus=numa_cpus, socket=socket, threads=threads, - vm_image=image, cpuset=cpuset, cputune=cputune) + vm_image=image, cpuset=cpuset, + machine=machine, cputune=cputune) # Add CD-ROM device vm_xml = Libvirt.add_cdrom(cdrom_img, vm_xml) diff --git a/yardstick/benchmark/contexts/standalone/ovs_dpdk.py b/yardstick/benchmark/contexts/standalone/ovs_dpdk.py index 42a275455..c6e19f614 100644 --- a/yardstick/benchmark/contexts/standalone/ovs_dpdk.py +++ b/yardstick/benchmark/contexts/standalone/ovs_dpdk.py @@ -74,6 +74,11 @@ class OvsDpdkContext(base.Context): self.wait_for_vswitchd = 10 super(OvsDpdkContext, self).__init__() + def get_dpdk_socket_mem_size(self, socket_id): + """Get the size of OvS DPDK socket memory (Mb)""" + ram = self.ovs_properties.get("ram", {}) + return ram.get('socket_%d' % (socket_id), 2048) + def init(self, attrs): """initializes itself from the supplied arguments""" super(OvsDpdkContext, self).init(attrs) @@ -134,9 +139,6 @@ class OvsDpdkContext(base.Context): if pmd_cpu_mask: pmd_mask = pmd_cpu_mask - socket0 = self.ovs_properties.get("ram", {}).get("socket_0", "2048") - socket1 = self.ovs_properties.get("ram", {}).get("socket_1", "2048") - ovs_other_config = "ovs-vsctl {0}set Open_vSwitch . other_config:{1}" detach_cmd = "ovs-vswitchd unix:{0}{1} --pidfile --detach --log-file={2}" @@ -154,7 +156,9 @@ class OvsDpdkContext(base.Context): ("ovsdb-server --remote=punix:/{0}/{1} --remote=ptcp:6640" " --pidfile --detach").format(vpath, ovs_sock_path), ovs_other_config.format("--no-wait ", "dpdk-init=true"), - ovs_other_config.format("--no-wait ", "dpdk-socket-mem='%s,%s'" % (socket0, socket1)), + ovs_other_config.format("--no-wait ", "dpdk-socket-mem='%d,%d'" % ( + self.get_dpdk_socket_mem_size(0), + self.get_dpdk_socket_mem_size(1))), lcore_mask, detach_cmd.format(vpath, ovs_sock_path, log_path), ovs_other_config.format("", "pmd-cpu-mask=%s" % pmd_mask), @@ -168,12 +172,12 @@ class OvsDpdkContext(base.Context): def setup_ovs_bridge_add_flows(self): dpdk_args = "" - dpdk_list = [] vpath = self.ovs_properties.get("vpath", "/usr/local") version = self.ovs_properties.get('version', {}) ovs_ver = [int(x) for x in version.get('ovs', self.DEFAULT_OVS).split('.')] ovs_add_port = ('ovs-vsctl add-port {br} {port} -- ' - 'set Interface {port} type={type_}{dpdk_args}{dpdk_rxq}') + 'set Interface {port} type={type_}{dpdk_args}' + '{dpdk_rxq}{pmd_rx_aff}') chmod_vpath = 'chmod 0777 {0}/var/run/openvswitch/dpdkvhostuser*' cmd_list = [ @@ -187,23 +191,38 @@ class OvsDpdkContext(base.Context): if queues: dpdk_rxq = " options:n_rxq={queue}".format(queue=queues) - ordered_network = collections.OrderedDict(self.networks) + # Sorting the array to make sure we execute dpdk0... in the order + ordered_network = collections.OrderedDict( + sorted(self.networks.items(), key=lambda t: t[1].get('port_num', 0))) + pmd_rx_aff_ports = self.ovs_properties.get("dpdk_pmd-rxq-affinity", {}) for index, vnf in enumerate(ordered_network.values()): if ovs_ver >= [2, 7, 0]: dpdk_args = " options:dpdk-devargs=%s" % vnf.get("phy_port") - dpdk_list.append(ovs_add_port.format( + affinity = pmd_rx_aff_ports.get(vnf.get("port_num", -1), "") + if affinity: + pmd_rx_aff = ' other_config:pmd-rxq-affinity=' \ + '"{affinity}"'.format(affinity=affinity) + else: + pmd_rx_aff = "" + cmd_list.append(ovs_add_port.format( br=MAIN_BRIDGE, port='dpdk%s' % vnf.get("port_num", 0), - type_='dpdk', dpdk_args=dpdk_args, dpdk_rxq=dpdk_rxq)) - - # Sorting the array to make sure we execute dpdk0... in the order - list.sort(dpdk_list) - cmd_list.extend(dpdk_list) + type_='dpdk', dpdk_args=dpdk_args, dpdk_rxq=dpdk_rxq, + pmd_rx_aff=pmd_rx_aff)) # Need to do two for loop to maintain the dpdk/vhost ports. + pmd_rx_aff_ports = self.ovs_properties.get("vhost_pmd-rxq-affinity", + {}) for index, _ in enumerate(ordered_network): + affinity = pmd_rx_aff_ports.get(index) + if affinity: + pmd_rx_aff = ' other_config:pmd-rxq-affinity=' \ + '"{affinity}"'.format(affinity=affinity) + else: + pmd_rx_aff = "" cmd_list.append(ovs_add_port.format( br=MAIN_BRIDGE, port='dpdkvhostuser%s' % index, - type_='dpdkvhostuser', dpdk_args="", dpdk_rxq="")) + type_='dpdkvhostuser', dpdk_args="", dpdk_rxq=dpdk_rxq, + pmd_rx_aff=pmd_rx_aff)) ovs_flow = ("ovs-ofctl add-flow {0} in_port=%s,action=output:%s". format(MAIN_BRIDGE)) @@ -399,7 +418,9 @@ class OvsDpdkContext(base.Context): self.configure_nics_for_ovs_dpdk() hp_total_mb = int(self.vm_flavor.get('ram', '4096')) * len(self.servers) - common_utils.setup_hugepages(self.connection, hp_total_mb * 1024) + common_utils.setup_hugepages(self.connection, (hp_total_mb + \ + self.get_dpdk_socket_mem_size(0) + \ + self.get_dpdk_socket_mem_size(1)) * 1024) self._check_hugepages() diff --git a/yardstick/benchmark/core/report.py b/yardstick/benchmark/core/report.py index 199602444..a484a49f3 100644 --- a/yardstick/benchmark/core/report.py +++ b/yardstick/benchmark/core/report.py @@ -1,7 +1,7 @@ -############################################################################# -# Copyright (c) 2017 Rajesh Kudaka +############################################################################## +# Copyright (c) 2017 Rajesh Kudaka <4k.rajesh@gmail.com> +# Copyright (c) 2018 Intel Corporation. # -# Author: Rajesh Kudaka 4k.rajesh@gmail.com # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at @@ -10,27 +10,76 @@ """ Handler for yardstick command 'report' """ -from __future__ import print_function - -from __future__ import absolute_import - import ast import re import uuid +import jinja2 from api.utils import influx - -from django.conf import settings -from django.template import Context -from django.template import Template - from oslo_utils import encodeutils from oslo_utils import uuidutils from yardstick.common import constants as consts -from yardstick.common.html_template import template from yardstick.common.utils import cliargs -settings.configure() + +class JSTree(object): + """Data structure to parse data for use with the JS library jsTree""" + def __init__(self): + self._created_nodes = ['#'] + self.jstree_data = [] + + def _create_node(self, _id): + """Helper method for format_for_jstree to create each node. + + Creates the node (and any required parents) and keeps track + of the created nodes. + + :param _id: (string) id of the node to be created + :return: None + """ + components = _id.split(".") + + if len(components) == 1: + text = components[0] + parent_id = "#" + else: + text = components[-1] + parent_id = ".".join(components[:-1]) + # make sure the parent has been created + if not parent_id in self._created_nodes: + self._create_node(parent_id) + + self.jstree_data.append({"id": _id, "text": text, "parent": parent_id}) + self._created_nodes.append(_id) + + def format_for_jstree(self, data): + """Format the data into the required format for jsTree. + + The data format expected is a list of key-value pairs which represent + the data and name for each metric e.g.: + + [{'data': [0, ], 'name': 'tg__0.DropPackets'}, + {'data': [548, ], 'name': 'tg__0.LatencyAvg.5'},] + + This data is converted into the format required for jsTree to group and + display the metrics in a hierarchial fashion, including creating a + number of parent nodes e.g.:: + + [{"id": "tg__0", "text": "tg__0", "parent": "#"}, + {"id": "tg__0.DropPackets", "text": "DropPackets", "parent": "tg__0"}, + {"id": "tg__0.LatencyAvg", "text": "LatencyAvg", "parent": "tg__0"}, + {"id": "tg__0.LatencyAvg.5", "text": "5", "parent": "tg__0.LatencyAvg"},] + + :param data: (list) data to be converted + :return: list + """ + self._created_nodes = ['#'] + self.jstree_data = [] + + for item in data: + self._create_node(item["name"]) + + return self.jstree_data class Report(object): @@ -64,7 +113,7 @@ class Report(object): if query_exec: return query_exec else: - raise KeyError("Task ID or Test case not found..") + raise KeyError("Test case not found.") def _get_tasks(self): task_cmd = "select * from \"%s\" where task_id= '%s'" @@ -73,7 +122,7 @@ class Report(object): if query_exec: return query_exec else: - raise KeyError("Task ID or Test case not found..") + raise KeyError("Task ID or Test case not found.") @cliargs("task_id", type=str, help=" task id", nargs=1) @cliargs("yaml_name", type=str, help=" Yaml file Name", nargs=1) @@ -117,12 +166,22 @@ class Report(object): series['data'] = values temp_series.append(series) - Template_html = Template(template) - Context_html = Context({"series": temp_series, - "Timestamp": self.Timestamp, - "task_id": self.task_id, - "table": table_vals}) + template_dir = consts.YARDSTICK_ROOT_PATH + "yardstick/common" + template_environment = jinja2.Environment( + autoescape=False, + loader=jinja2.FileSystemLoader(template_dir), + trim_blocks=False) + + context = { + "series": temp_series, + "Timestamps": self.Timestamp, + "task_id": self.task_id, + "table": table_vals, + } + + template_html = template_environment.get_template("report.html.j2") + with open(consts.DEFAULT_HTML_FILE, "w") as file_open: - file_open.write(Template_html.render(Context_html)) + file_open.write(template_html.render(context)) print("Report generated. View /tmp/yardstick.htm") diff --git a/yardstick/benchmark/scenarios/networking/vnf_generic.py b/yardstick/benchmark/scenarios/networking/vnf_generic.py index d8f062522..5ac51cdfc 100644 --- a/yardstick/benchmark/scenarios/networking/vnf_generic.py +++ b/yardstick/benchmark/scenarios/networking/vnf_generic.py @@ -151,6 +151,26 @@ class NetworkServiceTestCase(scenario_base.Scenario): return options.get('duration', tprofile_base.TrafficProfileConfig.DEFAULT_DURATION) + def _key_list_to_dict(self, key, value_list): + value_dict = {} + try: + for index, count in enumerate(value_list[key]): + value_dict["{}_{}".format(key, index)] = count + except KeyError: + value_dict = {} + + return value_dict + + def _get_simulated_users(self): + users = self.scenario_cfg.get("options", {}).get("simulated_users", {}) + simulated_users = self._key_list_to_dict("uplink", users) + return {"simulated_users": simulated_users} + + def _get_page_object(self): + objects = self.scenario_cfg.get("options", {}).get("page_object", {}) + page_object = self._key_list_to_dict("uplink", objects) + return {"page_object": page_object} + def _fill_traffic_profile(self): tprofile = self._get_traffic_profile() extra_args = self.scenario_cfg.get('extra_args', {}) @@ -160,8 +180,9 @@ class NetworkServiceTestCase(scenario_base.Scenario): tprofile_base.TrafficProfile.UPLINK: {}, tprofile_base.TrafficProfile.DOWNLINK: {}, 'extra_args': extra_args, - 'duration': self._get_duration()} - + 'duration': self._get_duration(), + 'page_object': self._get_page_object(), + 'simulated_users': self._get_simulated_users()} traffic_vnfd = vnfdgen.generate_vnfd(tprofile, tprofile_data) traffic_config = \ diff --git a/yardstick/benchmark/scenarios/storage/storperf.py b/yardstick/benchmark/scenarios/storage/storperf.py index e4c72dc8f..5b8b00075 100644 --- a/yardstick/benchmark/scenarios/storage/storperf.py +++ b/yardstick/benchmark/scenarios/storage/storperf.py @@ -102,13 +102,14 @@ class StorPerf(base.Scenario): setup_res = requests.post('http://%s:5000/api/v1.0/configurations' % self.target, json=env_args) - setup_res_content = jsonutils.loads( - setup_res.content) if setup_res.status_code != 200: - raise RuntimeError("Failed to create a stack, error message:", - setup_res_content["message"]) + LOG.error("Failed to create stack. %s: %s", + setup_res.status_code, setup_res.content) + raise RuntimeError("Failed to create stack. %s: %s" % + (setup_res.status_code, setup_res.content)) elif setup_res.status_code == 200: + setup_res_content = jsonutils.loads(setup_res.content) LOG.info("stack_id: %s", setup_res_content["stack_id"]) while not self._query_setup_state(): @@ -122,14 +123,15 @@ class StorPerf(base.Scenario): def _query_job_state(self, job_id): """Query the status of the supplied job_id and report on metrics""" LOG.info("Fetching report for %s...", job_id) - report_res = requests.get('http://{}:5000/api/v1.0/jobs'.format - (self.target), + report_res = requests.get('http://%s:5000/api/v1.0/jobs' % self.target, params={'id': job_id, 'type': 'status'}) report_res_content = jsonutils.loads( report_res.content) if report_res.status_code != 200: + LOG.error("Failed to fetch report, error message: %s", + report_res_content["message"]) raise RuntimeError("Failed to fetch report, error message:", report_res_content["message"]) else: @@ -186,15 +188,15 @@ class StorPerf(base.Scenario): LOG.info("Starting a job with parameters %s", job_args) job_res = requests.post('http://%s:5000/api/%s/jobs' % (self.target, - api_version), - json=job_args) - - job_res_content = jsonutils.loads(job_res.content) + api_version), json=job_args) if job_res.status_code != 200: - raise RuntimeError("Failed to start a job, error message:", - job_res_content["message"]) + LOG.error("Failed to start job. %s: %s", + job_res.status_code, job_res.content) + raise RuntimeError("Failed to start job. %s: %s" % + (job_res.status_code, job_res.content)) elif job_res.status_code == 200: + job_res_content = jsonutils.loads(job_res.content) job_id = job_res_content["job_id"] LOG.info("Started job id: %s...", job_id) @@ -225,8 +227,8 @@ class StorPerf(base.Scenario): LOG.info("Job %s completed with steady state %s", job_id, steady_state) - result_res = requests.get('http://%s:5000/api/v1.0/jobs?' - 'type=status&id=%s' % (self.target, job_id)) + result_res = requests.get('http://%s:5000/api/v1.0/jobs?id=%s' % + (self.target, job_id)) result_res_content = jsonutils.loads( result_res.content) result.update(result_res_content) @@ -247,13 +249,14 @@ class StorPerf(base.Scenario): job_res = requests.post('http://%s:5000/api/v1.0/initializations' % self.target, json=job_args) - job_res_content = jsonutils.loads(job_res.content) if job_res.status_code != 200: - raise RuntimeError( - "Failed to start initialization job, error message:", - job_res_content["message"]) + LOG.error("Failed to start initialization job, error message: %s: %s", + job_res.status_code, job_res.content) + raise RuntimeError("Failed to start initialization job, error message: %s: %s" % + (job_res.status_code, job_res.content)) elif job_res.status_code == 200: + job_res_content = jsonutils.loads(job_res.content) job_id = job_res_content["job_id"] LOG.info("Started initialization as job id: %s...", job_id) @@ -271,6 +274,8 @@ class StorPerf(base.Scenario): if teardown_res.status_code == 400: teardown_res_content = jsonutils.loads( teardown_res.json_data) + LOG.error("Failed to reset environment, error message: %s", + teardown_res_content['message']) raise RuntimeError("Failed to reset environment, error message:", teardown_res_content['message']) diff --git a/yardstick/common/html_template.py b/yardstick/common/html_template.py index e17c76637..c15dd8238 100644 --- a/yardstick/common/html_template.py +++ b/yardstick/common/html_template.py @@ -8,130 +8,6 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################# -template = """ -<html> -<body> -<head> -<meta charset="utf-8"> -<meta name="viewport" content="width=device-width, initial-scale=1"> -<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7\ -/css/bootstrap.min.css"> -<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1\ -/jquery.min.js"></script> -<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7\ -/js/bootstrap.min.js"></script> -<script src="https://code.highcharts.com/highcharts.js"></script> -<script src="jquery.min.js"></script> -<script src="highcharts.js"></script> -</head> -<style> - -table{ - overflow-y: scroll; - height: 360px; - display: block; - } - - header,h3{ - font-family:Frutiger; - clear: left; - text-align: center; -} -</style> -<header class="jumbotron text-center"> - <h1>Yardstick User Interface</h1> - <h4>Report of {{task_id}} Generated</h4> -</header> - -<div class="container"> - <div class="row"> - <div class="col-md-4"> - <div class="table-responsive" > - <table class="table table-hover" > </table> - </div> - </div> - <div class="col-md-8" > - <div id="container" ></div> - </div> - </div> -</div> -<script> - var arr, tab, th, tr, td, tn, row, col, thead, tbody; - arr={{table|safe}} - tab = document.getElementsByTagName('table')[0]; - thead=document.createElement('thead'); - tr = document.createElement('tr'); - for(row=0;row<Object.keys(arr).length;row++) - { - th = document.createElement('th'); - tn = document.createTextNode(Object.keys(arr).sort()[row]); - th.appendChild(tn); - tr.appendChild(th); - thead.appendChild(tr); - } - tab.appendChild(thead); - tbody=document.createElement('tbody'); - - for (col = 0; col < arr[Object.keys(arr)[0]].length; col++){ - tr = document.createElement('tr'); - for(row=0;row<Object.keys(arr).length;row++) - { - td = document.createElement('td'); - tn = document.createTextNode(arr[Object.keys(arr).sort()[row]][col]); - td.appendChild(tn); - tr.appendChild(td); - } - tbody.appendChild(tr); - } -tab.appendChild(tbody); - -</script> - -<script language="JavaScript"> - -$(function() { - $('#container').highcharts({ - title: { - text: 'Yardstick test results', - x: -20 //center - }, - subtitle: { - text: 'Report of {{task_id}} Task Generated', - x: -20 - }, - xAxis: { - title: { - text: 'Timestamp' - }, - categories:{{Timestamp|safe}} - }, - yAxis: { - - plotLines: [{ - value: 0, - width: 1, - color: '#808080' - }] - }, - tooltip: { - valueSuffix: '' - }, - legend: { - layout: 'vertical', - align: 'right', - verticalAlign: 'middle', - borderWidth: 0 - }, - series: {{series|safe}} - }); -}); - -</script> - - -</body> -</html>""" - report_template = """ <html> <head> diff --git a/yardstick/common/nsb_report.css b/yardstick/common/nsb_report.css new file mode 100644 index 000000000..0c47791e2 --- /dev/null +++ b/yardstick/common/nsb_report.css @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2017 Rajesh Kudaka <4k.rajesh@gmail.com> + * Copyright (c) 2018 Intel Corporation. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Apache License, Version 2.0 + * which accompanies this distribution, and is available at + * http://www.apache.org/licenses/LICENSE-2.0 + ******************************************************************************/ + +body { + font-size: 16pt; +} + +table { + overflow-y: scroll; + height: 360px; + display: block; +} + +header { + font-family: Frutiger; + clear: left; + text-align: center; +} + +.control-pane { + font-size: 10pt; +} diff --git a/yardstick/common/nsb_report.html.j2 b/yardstick/common/nsb_report.html.j2 new file mode 100644 index 000000000..f1b4ae1c2 --- /dev/null +++ b/yardstick/common/nsb_report.html.j2 @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<html> + +<!-- + Copyright (c) 2017 Rajesh Kudaka <4k.rajesh@gmail.com> + Copyright (c) 2018 Intel Corporation. + + All rights reserved. This program and the accompanying materials + are made available under the terms of the Apache License, Version 2.0 + which accompanies this distribution, and is available at + http://www.apache.org/licenses/LICENSE-2.0 +--> + + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.5/themes/default/style.min.css"> + <link rel="stylesheet" href="{{template_dir}}/nsb_report.css"> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> + <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script> + <script src="https://code.highcharts.com/highcharts.js"></script> + </head> + + <body> + <div class="container" style="width:80%"> + <div class="row"> + <header class="jumbotron"> + <h1>Yardstick User Interface</h1> + <h4>Report of {{task_id}} Generated</h4> + </header> + </div> + <div class="row" style="height:500px"> + <div class="col-md-2 control-pane"> + <div id="data_selector"></div> + </div> + <div class="col-md-10 data-pane"> + <div id="graph"></div> + </div> + </div> + <div class="row"> + <div class="col-md-12 table-responsive"> + <table class="table table-hover"></table> + </div> + </div> + </div> + + <script> + var arr, tab, tr, td, tbody, keys, key, curr_data; + arr = {{table|safe}}; + + tab = document.getElementsByTagName('table')[0]; + tbody = document.createElement('tbody'); + keys = Object.keys(arr); + // for each metric + for (var i = 0; i < keys.length; i++) { + tr = document.createElement('tr'); + td = document.createElement('td'); + key = keys[i]; + td.append(key); + tr.append(td); + curr_data = arr[key]; + // add each piece of data as its own column + for (var j = 0; j < curr_data.length; j++) { + td = document.createElement('td'); + td.append(curr_data[j]); + tr.append(td); + } + tbody.append(tr); + } + tab.appendChild(tbody); + + $(function() { + $('#data_selector').jstree({ + plugins: ['checkbox'], + checkbox: { + three_state: false, + whole_node: true, + tie_selection: false, + }, + core: { + themes: { + icons: false, + stripes: true, + }, + data: {{jstree_nodes|safe}}, + }, + }); + + $('#data_selector').on('check_node.jstree uncheck_node.jstree', function(e, data) { + var selected_leaves = []; + for (var i = 0; i < data.selected.length; i++) { + var node = data.instance.get_node(data.selected[i]); + if (node.children.length == 0) { + var point = {name: node.id, data: arr[node.id]}; + selected_leaves.push(point); + } + } + + $('#graph').highcharts({ + title: { + text: 'Yardstick Graphs', + x: -20, //center + }, + chart: { + marginLeft: 400, + zoomType: 'x', + type: 'spline', + }, + xAxis: { + crosshair: { + width: 1, + color: 'black', + }, + title: { + text: 'Timestamp', + }, + categories: {{Timestamps|safe}}, + }, + yAxis: { + crosshair: { + width: 1, + color: 'black', + }, + plotLines: [{ + value: 0, + width: 1, + color: '#808080', + }], + }, + plotOptions: { + series: { + showCheckbox: false, + visible: false, + }, + }, + tooltip: { + valueSuffix: '', + }, + legend: { + enabled: true, + }, + series: selected_leaves, + }); + + var chart = $('#graph').highcharts(); + for (var i = 0; i < chart.series.length; i++) { + var series = chart.series[i]; + if (series.visible) { + series.hide(); + } else { + series.show(); + } + } + }); + }); + </script> + </body> +</html> diff --git a/yardstick/common/report.html.j2 b/yardstick/common/report.html.j2 new file mode 100644 index 000000000..ab76510ca --- /dev/null +++ b/yardstick/common/report.html.j2 @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<html> + +<!-- + Copyright (c) 2017 Rajesh Kudaka <4k.rajesh@gmail.com> + Copyright (c) 2018 Intel Corporation. + + All rights reserved. This program and the accompanying materials + are made available under the terms of the Apache License, Version 2.0 + which accompanies this distribution, and is available at + http://www.apache.org/licenses/LICENSE-2.0 +--> + + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> + <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> + <script src="https://code.highcharts.com/highcharts.js"></script> + + <style> + table { + overflow-y: scroll; + height: 360px; + display: block; + } + header { + font-family: Frutiger; + clear: left; + text-align: center; + } + </style> + </head> + + <body> + <header class="jumbotron text-center"> + <h1>Yardstick User Interface</h1> + <h4>Report of {{task_id}} Generated</h4> + </header> + + <div class="container"> + <div class="row"> + <div class="col-md-4"> + <div class="table-responsive"> + <table class="table table-hover"></table> + </div> + </div> + <div class="col-md-8"> + <div id="container"></div> + </div> + </div> + </div> + + <script> + var arr, tab, th, tr, td, tn, row, col, thead, tbody; + arr = {{table|safe}}; + tab = document.getElementsByTagName('table')[0]; + + thead = document.createElement('thead'); + tr = document.createElement('tr'); + for (col = 0; col < Object.keys(arr).length; col++) { + th = document.createElement('th'); + tn = document.createTextNode(Object.keys(arr).sort()[col]); + th.appendChild(tn); + tr.appendChild(th); + thead.appendChild(tr); + } + tab.appendChild(thead); + + tbody = document.createElement('tbody'); + for (row = 0; row < arr[Object.keys(arr)[0]].length; row++) { + tr = document.createElement('tr'); + for (col = 0; col < Object.keys(arr).length; col++) { + td = document.createElement('td'); + tn = document.createTextNode(arr[Object.keys(arr).sort()[col]][row]); + td.appendChild(tn); + tr.appendChild(td); + } + tbody.appendChild(tr); + } + tab.appendChild(tbody); + + $(function() { + $('#container').highcharts({ + title: { + text: 'Yardstick test results', + x: -20, //center + }, + subtitle: { + text: 'Report of {{task_id}} Task Generated', + x: -20, + }, + xAxis: { + title: { + text: 'Timestamp', + }, + categories: {{Timestamps|safe}}, + }, + yAxis: { + plotLines: [{ + value: 0, + width: 1, + color: '#808080', + }], + }, + tooltip: { + valueSuffix: '', + }, + legend: { + layout: 'vertical', + align: 'right', + verticalAlign: 'middle', + borderWidth: 0, + }, + series: {{series|safe}}, + }); + }); + </script> + </body> +</html> diff --git a/yardstick/common/utils.py b/yardstick/common/utils.py index 205247947..51313ef47 100644 --- a/yardstick/common/utils.py +++ b/yardstick/common/utils.py @@ -30,6 +30,7 @@ import subprocess import sys import time import threading +import math import six from flask import jsonify @@ -505,7 +506,7 @@ def setup_hugepages(ssh_client, size_kb): NR_HUGEPAGES_PATH = '/proc/sys/vm/nr_hugepages' meminfo = read_meminfo(ssh_client) hp_size_kb = int(meminfo['Hugepagesize']) - hp_number = int(abs(size_kb / hp_size_kb)) + hp_number = int(math.ceil(size_kb / float(hp_size_kb))) ssh_client.execute( 'echo %s | sudo tee %s' % (hp_number, NR_HUGEPAGES_PATH)) hp = six.BytesIO() diff --git a/yardstick/network_services/pipeline.py b/yardstick/network_services/pipeline.py index 7155480d4..4fbe7967f 100644 --- a/yardstick/network_services/pipeline.py +++ b/yardstick/network_services/pipeline.py @@ -22,7 +22,7 @@ from yardstick.common import utils FIREWALL_ADD_DEFAULT = "p {0} firewall add default 1"
FIREWALL_ADD_PRIO = """\
-p {0} firewall add priority 1 ipv4 {1} 24 0.0.0.0 0 0 65535 0 65535 6 0xFF port 0"""
+p {0} firewall add priority 1 ipv4 {1} 24 0.0.0.0 0 0 65535 0 65535 17 0xFF port 0"""
FLOW_ADD_QINQ_RULES = """\
p {0} flow add qinq 128 512 port 0 id 1
diff --git a/yardstick/network_services/traffic_profile/http_ixload.py b/yardstick/network_services/traffic_profile/http_ixload.py index 9210f3c6d..c64e7511f 100644 --- a/yardstick/network_services/traffic_profile/http_ixload.py +++ b/yardstick/network_services/traffic_profile/http_ixload.py @@ -264,6 +264,57 @@ class IXLOADHttpTest(object): continue self.update_network_param(net_traffic, param["ip"]) + if "uplink" in name: + self.update_http_client_param(net_traffic, param["http_client"]) + + def update_http_client_param(self, net_traffic, param): + """Update http client object in net_traffic + + Update http client object in net_traffic by parameters + specified in param. + Do not return anything. + + :param net_traffic: (IxLoadObjectProxy) proxy obj to tcl net_traffic object + :param param: (dict) http_client section from traffic profile + :return: + """ + self.update_page_size(net_traffic, param["page_object"]) + self.update_user_count(net_traffic, param["simulated_users"]) + + def update_page_size(self, net_traffic, page_object): + """Update page_object field in http client object in net_traffic + + This function update field which configure page_object + which will be loaded from server + Do not return anything. + + :param net_traffic: (IxLoadObjectProxy) proxy obj to tcl net_traffic object + :param page_object: (str) path to object on server e.g. "/4k.html" + :return: + """ + try: + activity = net_traffic.activityList[0] + ix_http_command = activity.agent.actionList[0] + ix_http_command.config(pageObject=page_object) + except Exception: + raise exceptions.InvalidRxfFile + + def update_user_count(self, net_traffic, user_count): + """Update userObjectiveValue field in activity object in net_traffic + + This function update field which configure users count + which will be simulated by client. + Do not return anything. + + :param net_traffic: (IxLoadObjectProxy) proxy obj to tcl net_traffic object + :param user_count: (int) number of simulated users + :return: + """ + try: + activity = net_traffic.activityList[0] + activity.config(userObjectiveValue=user_count) + except Exception: + raise exceptions.InvalidRxfFile def start_http_test(self): self.ix_load = IxLoad() diff --git a/yardstick/network_services/traffic_profile/prox_binsearch.py b/yardstick/network_services/traffic_profile/prox_binsearch.py index f924cf419..402bf741c 100644 --- a/yardstick/network_services/traffic_profile/prox_binsearch.py +++ b/yardstick/network_services/traffic_profile/prox_binsearch.py @@ -168,8 +168,8 @@ class ProxBinSearchProfile(ProxProfile): samples = result.get_samples(pkt_size, successful_pkt_loss, port_samples) - if theor_max_thruput < samples["TxThroughput"]: - theor_max_thruput = samples['TxThroughput'] + if theor_max_thruput < samples["RequestedTxThroughput"]: + theor_max_thruput = samples['RequestedTxThroughput'] samples['theor_max_throughput'] = theor_max_thruput samples["rx_total"] = int(result.rx_total) diff --git a/yardstick/network_services/vnf_generic/vnf/prox_helpers.py b/yardstick/network_services/vnf_generic/vnf/prox_helpers.py index 8d721c045..e9d83623b 100644 --- a/yardstick/network_services/vnf_generic/vnf/prox_helpers.py +++ b/yardstick/network_services/vnf_generic/vnf/prox_helpers.py @@ -601,6 +601,99 @@ class ProxSocketHelper(object): LOG.debug("Multi port packet ..OK.. %s", tot_result) return True, tot_result + @staticmethod + def multi_port_stats_tuple(stats, ports): + """ + Create a statistics tuple from port stats. + + Returns a dict with contains the port stats indexed by port name + + :param stats: (List) - List of List of port stats in pps + :param ports (Iterator) - to List of Ports + + :return: (Dict) of port stats indexed by port_name + """ + + samples = {} + port_names = {} + try: + port_names = {port_num: port_name for port_name, port_num in ports} + except (TypeError, IndexError, KeyError): + LOG.critical("Ports are not initialized or number of port is ZERO ... CRITICAL ERROR") + return {} + + try: + for stat in stats: + port_num = stat[0] + samples[port_names[port_num]] = { + "in_packets": stat[1], + "out_packets": stat[2]} + except (TypeError, IndexError, KeyError): + LOG.error("Ports data and samples data is incompatable ....") + return {} + + return samples + + @staticmethod + def multi_port_stats_diff(prev_stats, new_stats, hz): + """ + Create a statistics tuple from difference between prev port stats + and current port stats. And store results in pps. + + :param prev_stats: (List) - Previous List of port statistics + :param new_stats: (List) - Current List of port statistics + :param hz (float) - speed of system in Hz + + :return: sample (List) - Difference of prev_port_stats and + new_port_stats in pps + """ + + RX_TOTAL_INDEX = 1 + TX_TOTAL_INDEX = 2 + TSC_INDEX = 5 + + stats = [] + + if len(prev_stats) is not len(new_stats): + for port_index, stat in enumerate(new_stats): + stats.append([port_index, float(0), float(0), 0, 0, 0]) + return stats + + try: + for port_index, stat in enumerate(new_stats): + if stat[RX_TOTAL_INDEX] > prev_stats[port_index][RX_TOTAL_INDEX]: + rx_total = stat[RX_TOTAL_INDEX] - \ + prev_stats[port_index][RX_TOTAL_INDEX] + else: + rx_total = stat[RX_TOTAL_INDEX] + + if stat[TX_TOTAL_INDEX] > prev_stats[port_index][TX_TOTAL_INDEX]: + tx_total = stat[TX_TOTAL_INDEX] - prev_stats[port_index][TX_TOTAL_INDEX] + else: + tx_total = stat[TX_TOTAL_INDEX] + + if stat[TSC_INDEX] > prev_stats[port_index][TSC_INDEX]: + tsc = stat[TSC_INDEX] - prev_stats[port_index][TSC_INDEX] + else: + tsc = stat[TSC_INDEX] + + if tsc is 0: + rx_total = tx_total = float(0) + else: + if hz is 0: + LOG.error("HZ is ZERO ..") + rx_total = tx_total = float(0) + else: + rx_total = float(rx_total * hz / tsc) + tx_total = float(tx_total * hz / tsc) + + stats.append([port_index, rx_total, tx_total, 0, 0, tsc]) + except (TypeError, IndexError, KeyError): + stats = [] + LOG.info("Current Port Stats incompatable to previous Port stats .. Discarded") + + return stats + def port_stats(self, ports): """get counter values from a specific port""" tot_result = [0] * 12 @@ -968,6 +1061,8 @@ class ProxResourceHelper(ClientResourceHelper): self.step_delta = 1 self.step_time = 0.5 self._test_type = None + self.prev_multi_port = [] + self.prev_hz = 0 @property def sut(self): @@ -1006,11 +1101,40 @@ class ProxResourceHelper(ClientResourceHelper): def collect_collectd_kpi(self): return self._collect_resource_kpi() + def collect_live_stats(self): + ports = [] + for _, port_num in self.vnfd_helper.ports_iter(): + ports.append(port_num) + + ok, curr_port_stats = self.sut.multi_port_stats(ports) + if not ok: + return False, {} + + hz = self.sut.hz() + if hz is 0: + hz = self.prev_hz + else: + self.prev_hz = hz + + new_all_port_stats = \ + self.sut.multi_port_stats_diff(self.prev_multi_port, curr_port_stats, hz) + + self.prev_multi_port = curr_port_stats + + live_stats = self.sut.multi_port_stats_tuple(new_all_port_stats, + self.vnfd_helper.ports_iter()) + return True, live_stats + def collect_kpi(self): result = super(ProxResourceHelper, self).collect_kpi() # add in collectd kpis manually if result: result['collect_stats'] = self._collect_resource_kpi() + + ok, live_stats = self.collect_live_stats() + if ok: + result.update({'live_stats': live_stats}) + return result def terminate(self): diff --git a/yardstick/network_services/vnf_generic/vnf/sample_vnf.py b/yardstick/network_services/vnf_generic/vnf/sample_vnf.py index b2c5a98bc..673344f4e 100644 --- a/yardstick/network_services/vnf_generic/vnf/sample_vnf.py +++ b/yardstick/network_services/vnf_generic/vnf/sample_vnf.py @@ -180,7 +180,7 @@ class DpdkVnfSetupEnvHelper(SetupEnvHelper): """No actions/rules (flows) by default""" return None - def _build_pipeline_kwargs(self): + def _build_pipeline_kwargs(self, cfg_file=None): tool_path = self.ssh_helper.provision_tool(tool_file=self.APP_NAME) # count the number of actual ports in the list of pairs # remove duplicate ports @@ -200,7 +200,7 @@ class DpdkVnfSetupEnvHelper(SetupEnvHelper): hwlb = ' --hwlb %s' % worker_threads self.pipeline_kwargs = { - 'cfg_file': self.CFG_CONFIG, + 'cfg_file': cfg_file if cfg_file else self.CFG_CONFIG, 'script': self.CFG_SCRIPT, 'port_mask_hex': ports_mask_hex, 'tool_path': tool_path, diff --git a/yardstick/network_services/vnf_generic/vnf/vpe_vnf.py b/yardstick/network_services/vnf_generic/vnf/vpe_vnf.py index b7cf8b35e..349ef7888 100644 --- a/yardstick/network_services/vnf_generic/vnf/vpe_vnf.py +++ b/yardstick/network_services/vnf_generic/vnf/vpe_vnf.py @@ -17,13 +17,11 @@ from __future__ import absolute_import from __future__ import print_function -import os import logging import re import posixpath -from six.moves import configparser, zip - +from yardstick.common import utils from yardstick.common.process import check_if_process_failed from yardstick.network_services.helpers.samplevnf_helper import PortPairs from yardstick.network_services.pipeline import PipelineRules @@ -43,15 +41,6 @@ Pkts in:\\s(\\d+)\r\n\ class ConfigCreate(object): - @staticmethod - def vpe_tmq(config, index): - tm_q = 'TM{0}'.format(index) - config.add_section(tm_q) - config.set(tm_q, 'burst_read', '24') - config.set(tm_q, 'burst_write', '32') - config.set(tm_q, 'cfg', '/tmp/full_tm_profile_10G.cfg') - return config - def __init__(self, vnfd_helper, socket): super(ConfigCreate, self).__init__() self.sw_q = -1 @@ -64,141 +53,6 @@ class ConfigCreate(object): self.socket = socket self._dpdk_port_to_link_id_map = None - @property - def dpdk_port_to_link_id_map(self): - # we need interface name -> DPDK port num (PMD ID) -> LINK ID - # LINK ID -> PMD ID is governed by the port mask - # LINK instances are created implicitly based on the PORT_MASK application startup - # argument. LINK0 is the first port enabled in the PORT_MASK, port 1 is the next one, - # etc. The LINK ID is different than the DPDK PMD-level NIC port ID, which is the actual - # position in the bitmask mentioned above. For example, if bit 5 is the first bit set - # in the bitmask, then LINK0 is having the PMD ID of 5. This mechanism creates a - # contiguous LINK ID space and isolates the configuration file against changes in the - # board PCIe slots where NICs are plugged in. - if self._dpdk_port_to_link_id_map is None: - self._dpdk_port_to_link_id_map = {} - for link_id, port_name in enumerate(sorted(self.vnfd_helper.port_pairs.all_ports, - key=self.vnfd_helper.port_num)): - self._dpdk_port_to_link_id_map[port_name] = link_id - return self._dpdk_port_to_link_id_map - - def vpe_initialize(self, config): - config.add_section('EAL') - config.set('EAL', 'log_level', '0') - - config.add_section('PIPELINE0') - config.set('PIPELINE0', 'type', 'MASTER') - config.set('PIPELINE0', 'core', 's%sC0' % self.socket) - - config.add_section('MEMPOOL0') - config.set('MEMPOOL0', 'pool_size', '256K') - - config.add_section('MEMPOOL1') - config.set('MEMPOOL1', 'pool_size', '2M') - return config - - def vpe_rxq(self, config): - for port in self.downlink_ports: - new_section = 'RXQ{0}.0'.format(self.dpdk_port_to_link_id_map[port]) - config.add_section(new_section) - config.set(new_section, 'mempool', 'MEMPOOL1') - - return config - - def get_sink_swq(self, parser, pipeline, k, index): - sink = "" - pktq = parser.get(pipeline, k) - if "SINK" in pktq: - self.sink_q += 1 - sink = " SINK{0}".format(self.sink_q) - if "TM" in pktq: - sink = " TM{0}".format(index) - pktq = "SWQ{0}{1}".format(self.sw_q, sink) - return pktq - - def vpe_upstream(self, vnf_cfg, index=0): # pragma: no cover - # NOTE(ralonsoh): this function must be covered in UTs. - parser = configparser.ConfigParser() - parser.read(os.path.join(vnf_cfg, 'vpe_upstream')) - - for pipeline in parser.sections(): - for k, v in parser.items(pipeline): - if k == "pktq_in": - if "RXQ" in v: - port = self.dpdk_port_to_link_id_map[self.uplink_ports[index]] - value = "RXQ{0}.0".format(port) - else: - value = self.get_sink_swq(parser, pipeline, k, index) - - parser.set(pipeline, k, value) - - elif k == "pktq_out": - if "TXQ" in v: - port = self.dpdk_port_to_link_id_map[self.downlink_ports[index]] - value = "TXQ{0}.0".format(port) - else: - self.sw_q += 1 - value = self.get_sink_swq(parser, pipeline, k, index) - - parser.set(pipeline, k, value) - - new_pipeline = 'PIPELINE{0}'.format(self.n_pipeline) - if new_pipeline != pipeline: - parser._sections[new_pipeline] = parser._sections[pipeline] - parser._sections.pop(pipeline) - self.n_pipeline += 1 - return parser - - def vpe_downstream(self, vnf_cfg, index): # pragma: no cover - # NOTE(ralonsoh): this function must be covered in UTs. - parser = configparser.ConfigParser() - parser.read(os.path.join(vnf_cfg, 'vpe_downstream')) - for pipeline in parser.sections(): - for k, v in parser.items(pipeline): - - if k == "pktq_in": - port = self.dpdk_port_to_link_id_map[self.downlink_ports[index]] - if "RXQ" not in v: - value = self.get_sink_swq(parser, pipeline, k, index) - elif "TM" in v: - value = "RXQ{0}.0 TM{1}".format(port, index) - else: - value = "RXQ{0}.0".format(port) - - parser.set(pipeline, k, value) - - if k == "pktq_out": - port = self.dpdk_port_to_link_id_map[self.uplink_ports[index]] - if "TXQ" not in v: - self.sw_q += 1 - value = self.get_sink_swq(parser, pipeline, k, index) - elif "TM" in v: - value = "TXQ{0}.0 TM{1}".format(port, index) - else: - value = "TXQ{0}.0".format(port) - - parser.set(pipeline, k, value) - - new_pipeline = 'PIPELINE{0}'.format(self.n_pipeline) - if new_pipeline != pipeline: - parser._sections[new_pipeline] = parser._sections[pipeline] - parser._sections.pop(pipeline) - self.n_pipeline += 1 - return parser - - def create_vpe_config(self, vnf_cfg): - config = configparser.ConfigParser() - vpe_cfg = os.path.join("/tmp/vpe_config") - with open(vpe_cfg, 'w') as cfg_file: - config = self.vpe_initialize(config) - config = self.vpe_rxq(config) - config.write(cfg_file) - for index, _ in enumerate(self.uplink_ports): - config = self.vpe_upstream(vnf_cfg, index) - config.write(cfg_file) - config = self.vpe_downstream(vnf_cfg, index) - config = self.vpe_tmq(config, index) - config.write(cfg_file) def generate_vpe_script(self, interfaces): rules = PipelineRules(pipeline_id=1) @@ -231,16 +85,10 @@ class ConfigCreate(object): return rules.get_string() - def generate_tm_cfg(self, vnf_cfg): - vnf_cfg = os.path.join(vnf_cfg, "full_tm_profile_10G.cfg") - if os.path.exists(vnf_cfg): - return open(vnf_cfg).read() - class VpeApproxSetupEnvHelper(DpdkVnfSetupEnvHelper): APP_NAME = 'vPE_vnf' - CFG_CONFIG = "/tmp/vpe_config" CFG_SCRIPT = "/tmp/vpe_script" TM_CONFIG = "/tmp/full_tm_profile_10G.cfg" CORES = ['0', '1', '2', '3', '4', '5'] @@ -253,33 +101,44 @@ class VpeApproxSetupEnvHelper(DpdkVnfSetupEnvHelper): self.all_ports = self._port_pairs.all_ports def build_config(self): + vnf_cfg = self.scenario_helper.vnf_cfg + task_path = self.scenario_helper.task_path + action_bulk_file = vnf_cfg.get('action_bulk_file', '/tmp/action_bulk_512.txt') + full_tm_profile_file = vnf_cfg.get('full_tm_profile_file', '/tmp/full_tm_profile_10G.cfg') + config_file = vnf_cfg.get('file', '/tmp/vpe_config') vpe_vars = { "bin_path": self.ssh_helper.bin_path, "socket": self.socket, } - self._build_vnf_ports() vpe_conf = ConfigCreate(self.vnfd_helper, self.socket) - vpe_conf.create_vpe_config(self.scenario_helper.vnf_cfg) - config_basename = posixpath.basename(self.CFG_CONFIG) + config_basename = posixpath.basename(config_file) script_basename = posixpath.basename(self.CFG_SCRIPT) - tm_basename = posixpath.basename(self.TM_CONFIG) - with open(self.CFG_CONFIG) as handle: - vpe_config = handle.read() - self.ssh_helper.upload_config_file(config_basename, vpe_config.format(**vpe_vars)) + with utils.open_relative_file(action_bulk_file, task_path) as handle: + action_bulk = handle.read() + with utils.open_relative_file(full_tm_profile_file, task_path) as handle: + full_tm_profile = handle.read() + + with utils.open_relative_file(config_file, task_path) as handle: + vpe_config = handle.read() + + # vpe_script needs to be autogenerated vpe_script = vpe_conf.generate_vpe_script(self.vnfd_helper.interfaces) + # upload the 4 config files to the target server + self.ssh_helper.upload_config_file(config_basename, vpe_config.format(**vpe_vars)) self.ssh_helper.upload_config_file(script_basename, vpe_script.format(**vpe_vars)) - - tm_config = vpe_conf.generate_tm_cfg(self.scenario_helper.vnf_cfg) - self.ssh_helper.upload_config_file(tm_basename, tm_config) + self.ssh_helper.upload_config_file(posixpath.basename(action_bulk_file), + action_bulk.format(**vpe_vars)) + self.ssh_helper.upload_config_file(posixpath.basename(full_tm_profile_file), + full_tm_profile.format(**vpe_vars)) LOG.info("Provision and start the %s", self.APP_NAME) - LOG.info(self.CFG_CONFIG) + LOG.info(config_file) LOG.info(self.CFG_SCRIPT) - self._build_pipeline_kwargs() + self._build_pipeline_kwargs(cfg_file='/tmp/' + config_basename) return self.PIPELINE_COMMAND.format(**self.pipeline_kwargs) diff --git a/yardstick/tests/unit/benchmark/contexts/standalone/test_model.py b/yardstick/tests/unit/benchmark/contexts/standalone/test_model.py index d880b4169..e76a3ca27 100644 --- a/yardstick/tests/unit/benchmark/contexts/standalone/test_model.py +++ b/yardstick/tests/unit/benchmark/contexts/standalone/test_model.py @@ -55,7 +55,7 @@ class ModelLibvirtTestCase(unittest.TestCase): numa_cpus=0 - 10, socket=1, threads=1, vm_image="/var/lib/libvirt/images/yardstick-nsb-image.img", - cpuset=2 - 10, cputune='') + cpuset=2 - 10, cputune='', machine='pc') def setUp(self): self.pci_address_str = '0001:04:03.2' @@ -352,7 +352,8 @@ class ModelLibvirtTestCase(unittest.TestCase): xml_ref = model.VM_TEMPLATE.format(vm_name='vm_name', random_uuid=_uuid, mac_addr=mac, memory='1024', vcpu='8', cpu='4', numa_cpus='0-7', socket='3', threads='2', - vm_image='qemu_image', cpuset='4,5', cputune='cool') + vm_image='qemu_image', cpuset='4,5', cputune='cool', + machine='pc-i440fx-xenial') xml_ref = model.Libvirt.add_cdrom(cdrom_img, xml_ref) self.assertEqual(xml_out, xml_ref) mock_get_mac_address.assert_called_once_with(0x00) diff --git a/yardstick/tests/unit/benchmark/contexts/standalone/test_ovs_dpdk.py b/yardstick/tests/unit/benchmark/contexts/standalone/test_ovs_dpdk.py index 190e83d5f..413bb68b7 100644 --- a/yardstick/tests/unit/benchmark/contexts/standalone/test_ovs_dpdk.py +++ b/yardstick/tests/unit/benchmark/contexts/standalone/test_ovs_dpdk.py @@ -160,6 +160,13 @@ class OvsDpdkContextTestCase(unittest.TestCase): } self.ovs_dpdk.wait_for_vswitchd = 0 self.assertIsNone(self.ovs_dpdk.setup_ovs_bridge_add_flows()) + self.ovs_dpdk.ovs_properties.update( + {'dpdk_pmd-rxq-affinity': {'0': "0:1"}}) + self.ovs_dpdk.ovs_properties.update( + {'vhost_pmd-rxq-affinity': {'0': "0:1"}}) + self.NETWORKS['private_0'].update({'port_num': '0'}) + self.NETWORKS['public_0'].update({'port_num': '1'}) + self.ovs_dpdk.setup_ovs_bridge_add_flows() @mock.patch("yardstick.ssh.SSH") def test_cleanup_ovs_dpdk_env(self, mock_ssh): @@ -430,7 +437,8 @@ class OvsDpdkContextTestCase(unittest.TestCase): self.assertEqual([vnf_instance_2], self.ovs_dpdk.setup_ovs_dpdk_context()) - mock_setup_hugepages.assert_called_once_with(self.ovs_dpdk.connection, 1024 * 1024) + mock_setup_hugepages.assert_called_once_with(self.ovs_dpdk.connection, + (1024 + 4096) * 1024) # ram + dpdk_socket0_mem + dpdk_socket1_mem mock__check_hugepages.assert_called_once() mock_create_vm.assert_called_once_with( self.ovs_dpdk.connection, '/tmp/vm_ovs_0.xml') diff --git a/yardstick/tests/unit/benchmark/core/test_report.py b/yardstick/tests/unit/benchmark/core/test_report.py index 524302f92..3e80dcc45 100644 --- a/yardstick/tests/unit/benchmark/core/test_report.py +++ b/yardstick/tests/unit/benchmark/core/test_report.py @@ -1,5 +1,6 @@ ############################################################################## # Copyright (c) 2017 Rajesh Kudaka. +# Copyright (c) 2018 Intel Corporation. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -7,30 +8,93 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -# Unittest for yardstick.benchmark.core.report - -from __future__ import print_function - -from __future__ import absolute_import - +import mock import unittest import uuid -try: - from unittest import mock -except ImportError: - import mock - +from api.utils import influx from yardstick.benchmark.core import report from yardstick.cmd.commands import change_osloobj_to_paras -FAKE_YAML_NAME = 'fake_name' -FAKE_TASK_ID = str(uuid.uuid4()) -FAKE_DB_FIELDKEYS = [{'fieldKey': 'fake_key'}] -FAKE_TIME = '0000-00-00T00:00:00.000000Z' -FAKE_DB_TASK = [{'fake_key': 0.000, 'time': FAKE_TIME}] -FAKE_TIMESTAMP = ['fake_time'] -DUMMY_TASK_ID = 'aaaaaa-aaaaaaaa-aaaaaaaaaa-aaaaaa' +GOOD_YAML_NAME = 'fake_name' +GOOD_TASK_ID = str(uuid.uuid4()) +GOOD_DB_FIELDKEYS = [{'fieldKey': 'fake_key'}] +GOOD_DB_TASK = [{ + 'fake_key': 0.000, + 'time': '0000-00-00T00:00:00.000000Z', + }] +GOOD_TIMESTAMP = ['00:00:00.000000'] +BAD_YAML_NAME = 'F@KE_NAME' +BAD_TASK_ID = 'aaaaaa-aaaaaaaa-aaaaaaaaaa-aaaaaa' + + +class JSTreeTestCase(unittest.TestCase): + + def setUp(self): + self.jstree = report.JSTree() + + def test__create_node(self): + _id = "tg__0.DropPackets" + + expected_data = [ + {"id": "tg__0", "text": "tg__0", "parent": "#"}, + {"id": "tg__0.DropPackets", "text": "DropPackets", "parent": "tg__0"} + ] + self.jstree._create_node(_id) + + self.assertEqual(self.jstree._created_nodes, ['#', 'tg__0', 'tg__0.DropPackets']) + self.assertEqual(self.jstree.jstree_data, expected_data) + + def test_format_for_jstree(self): + data = [ + {'data': [0, ], 'name': 'tg__0.DropPackets'}, + {'data': [548, ], 'name': 'tg__0.LatencyAvg.5'}, + {'data': [1172, ], 'name': 'tg__0.LatencyAvg.6'}, + {'data': [1001, ], 'name': 'tg__0.LatencyMax.5'}, + {'data': [1468, ], 'name': 'tg__0.LatencyMax.6'}, + {'data': [18.11, ], 'name': 'tg__0.RxThroughput'}, + {'data': [18.11, ], 'name': 'tg__0.TxThroughput'}, + {'data': [0, ], 'name': 'tg__1.DropPackets'}, + {'data': [548, ], 'name': 'tg__1.LatencyAvg.5'}, + {'data': [1172, ], 'name': 'tg__1.LatencyAvg.6'}, + {'data': [1001, ], 'name': 'tg__1.LatencyMax.5'}, + {'data': [1468, ], 'name': 'tg__1.LatencyMax.6'}, + {'data': [18.1132084505, ], 'name': 'tg__1.RxThroughput'}, + {'data': [18.1157260383, ], 'name': 'tg__1.TxThroughput'}, + {'data': [9057888, ], 'name': 'vnf__0.curr_packets_in'}, + {'data': [0, ], 'name': 'vnf__0.packets_dropped'}, + {'data': [617825443, ], 'name': 'vnf__0.packets_fwd'}, + ] + + expected_output = [ + {"id": "tg__0", "text": "tg__0", "parent": "#"}, + {"id": "tg__0.DropPackets", "text": "DropPackets", "parent": "tg__0"}, + {"id": "tg__0.LatencyAvg", "text": "LatencyAvg", "parent": "tg__0"}, + {"id": "tg__0.LatencyAvg.5", "text": "5", "parent": "tg__0.LatencyAvg"}, + {"id": "tg__0.LatencyAvg.6", "text": "6", "parent": "tg__0.LatencyAvg"}, + {"id": "tg__0.LatencyMax", "text": "LatencyMax", "parent": "tg__0"}, + {"id": "tg__0.LatencyMax.5", "text": "5", "parent": "tg__0.LatencyMax"}, + {"id": "tg__0.LatencyMax.6", "text": "6", "parent": "tg__0.LatencyMax"}, + {"id": "tg__0.RxThroughput", "text": "RxThroughput", "parent": "tg__0"}, + {"id": "tg__0.TxThroughput", "text": "TxThroughput", "parent": "tg__0"}, + {"id": "tg__1", "text": "tg__1", "parent": "#"}, + {"id": "tg__1.DropPackets", "text": "DropPackets", "parent": "tg__1"}, + {"id": "tg__1.LatencyAvg", "text": "LatencyAvg", "parent": "tg__1"}, + {"id": "tg__1.LatencyAvg.5", "text": "5", "parent": "tg__1.LatencyAvg"}, + {"id": "tg__1.LatencyAvg.6", "text": "6", "parent": "tg__1.LatencyAvg"}, + {"id": "tg__1.LatencyMax", "text": "LatencyMax", "parent": "tg__1"}, + {"id": "tg__1.LatencyMax.5", "text": "5", "parent": "tg__1.LatencyMax"}, + {"id": "tg__1.LatencyMax.6", "text": "6", "parent": "tg__1.LatencyMax"}, + {"id": "tg__1.RxThroughput", "text": "RxThroughput", "parent": "tg__1"}, + {"id": "tg__1.TxThroughput", "text": "TxThroughput", "parent": "tg__1"}, + {"id": "vnf__0", "text": "vnf__0", "parent": "#"}, + {"id": "vnf__0.curr_packets_in", "text": "curr_packets_in", "parent": "vnf__0"}, + {"id": "vnf__0.packets_dropped", "text": "packets_dropped", "parent": "vnf__0"}, + {"id": "vnf__0.packets_fwd", "text": "packets_fwd", "parent": "vnf__0"}, + ] + + result = self.jstree.format_for_jstree(data) + self.assertEqual(expected_output, result) class ReportTestCase(unittest.TestCase): @@ -38,37 +102,69 @@ class ReportTestCase(unittest.TestCase): def setUp(self): super(ReportTestCase, self).setUp() self.param = change_osloobj_to_paras({}) - self.param.yaml_name = [FAKE_YAML_NAME] - self.param.task_id = [FAKE_TASK_ID] + self.param.yaml_name = [GOOD_YAML_NAME] + self.param.task_id = [GOOD_TASK_ID] self.rep = report.Report() + def test___init__(self): + self.assertEqual([], self.rep.Timestamp) + self.assertEqual("", self.rep.yaml_name) + self.assertEqual("", self.rep.task_id) + + def test__validate(self): + self.rep._validate(GOOD_YAML_NAME, GOOD_TASK_ID) + self.assertEqual(GOOD_YAML_NAME, self.rep.yaml_name) + self.assertEqual(GOOD_TASK_ID, str(self.rep.task_id)) + + def test__validate_invalid_yaml_name(self): + with self.assertRaisesRegexp(ValueError, "yaml*"): + self.rep._validate(BAD_YAML_NAME, GOOD_TASK_ID) + + def test__validate_invalid_task_id(self): + with self.assertRaisesRegexp(ValueError, "task*"): + self.rep._validate(GOOD_YAML_NAME, BAD_TASK_ID) + + @mock.patch.object(influx, 'query') + def test__get_fieldkeys(self, mock_query): + mock_query.return_value = GOOD_DB_FIELDKEYS + self.rep.yaml_name = GOOD_YAML_NAME + self.rep.task_id = GOOD_TASK_ID + self.assertEqual(GOOD_DB_FIELDKEYS, self.rep._get_fieldkeys()) + + @mock.patch.object(influx, 'query') + def test__get_fieldkeys_nodbclient(self, mock_query): + mock_query.side_effect = RuntimeError + self.assertRaises(RuntimeError, self.rep._get_fieldkeys) + + @mock.patch.object(influx, 'query') + def test__get_fieldkeys_testcase_not_found(self, mock_query): + mock_query.return_value = [] + self.rep.yaml_name = GOOD_YAML_NAME + self.rep.task_id = GOOD_TASK_ID + self.assertRaisesRegexp(KeyError, "Test case", self.rep._get_fieldkeys) + + @mock.patch.object(influx, 'query') + def test__get_tasks(self, mock_query): + mock_query.return_value = GOOD_DB_TASK + self.rep.yaml_name = GOOD_YAML_NAME + self.rep.task_id = GOOD_TASK_ID + self.assertEqual(GOOD_DB_TASK, self.rep._get_tasks()) + + @mock.patch.object(influx, 'query') + def test__get_tasks_task_not_found(self, mock_query): + mock_query.return_value = [] + self.rep.yaml_name = GOOD_YAML_NAME + self.rep.task_id = GOOD_TASK_ID + self.assertRaisesRegexp(KeyError, "Task ID", self.rep._get_tasks) + @mock.patch.object(report.Report, '_get_tasks') @mock.patch.object(report.Report, '_get_fieldkeys') @mock.patch.object(report.Report, '_validate') - def test_generate_success(self, mock_valid, mock_keys, mock_tasks): - mock_tasks.return_value = FAKE_DB_TASK - mock_keys.return_value = FAKE_DB_FIELDKEYS + def test_generate(self, mock_valid, mock_keys, mock_tasks): + mock_tasks.return_value = GOOD_DB_TASK + mock_keys.return_value = GOOD_DB_FIELDKEYS self.rep.generate(self.param) - mock_valid.assert_called_once_with(FAKE_YAML_NAME, FAKE_TASK_ID) + mock_valid.assert_called_once_with(GOOD_YAML_NAME, GOOD_TASK_ID) mock_tasks.assert_called_once_with() mock_keys.assert_called_once_with() - - # pylint: disable=deprecated-method - def test_invalid_yaml_name(self): - self.assertRaisesRegexp(ValueError, "yaml*", self.rep._validate, - 'F@KE_NAME', FAKE_TASK_ID) - - # pylint: disable=deprecated-method - def test_invalid_task_id(self): - self.assertRaisesRegexp(ValueError, "task*", self.rep._validate, - FAKE_YAML_NAME, DUMMY_TASK_ID) - - @mock.patch('api.utils.influx.query') - def test_task_not_found(self, mock_query): - mock_query.return_value = [] - self.rep.yaml_name = FAKE_YAML_NAME - self.rep.task_id = FAKE_TASK_ID - # pylint: disable=deprecated-method - self.assertRaisesRegexp(KeyError, "Task ID", self.rep._get_fieldkeys) - self.assertRaisesRegexp(KeyError, "Task ID", self.rep._get_tasks) - # pylint: enable=deprecated-method + self.assertEqual(GOOD_TIMESTAMP, self.rep.Timestamp) diff --git a/yardstick/tests/unit/benchmark/scenarios/networking/test_vnf_generic.py b/yardstick/tests/unit/benchmark/scenarios/networking/test_vnf_generic.py index 90248d1bf..8214782b2 100644 --- a/yardstick/tests/unit/benchmark/scenarios/networking/test_vnf_generic.py +++ b/yardstick/tests/unit/benchmark/scenarios/networking/test_vnf_generic.py @@ -325,6 +325,8 @@ class TestNetworkServiceTestCase(unittest.TestCase): }, }, 'options': { + 'simulated_users': {'uplink': [1, 2]}, + 'page_object': {'uplink': [1, 2]}, 'framesize': {'64B': 100} }, 'runner': { @@ -620,6 +622,20 @@ class TestNetworkServiceTestCase(unittest.TestCase): with self.assertRaises(IOError): self.s._get_traffic_profile() + def test__key_list_to_dict(self): + result = self.s._key_list_to_dict("uplink", {"uplink": [1, 2]}) + self.assertEqual({"uplink_0": 1, "uplink_1": 2}, result) + + def test__get_simulated_users(self): + result = self.s._get_simulated_users() + self.assertEqual({'simulated_users': {'uplink_0': 1, 'uplink_1': 2}}, + result) + + def test__get_page_object(self): + result = self.s._get_page_object() + self.assertEqual({'page_object': {'uplink_0': 1, 'uplink_1': 2}}, + result) + def test___get_traffic_imix_exception(self): with mock.patch.dict(self.scenario_cfg["traffic_options"], {'imix': ''}): self.assertEqual({'imix': {'64B': 100}}, @@ -642,7 +658,11 @@ class TestNetworkServiceTestCase(unittest.TestCase): 'flow': {'flow': {}}, 'imix': {'imix': {'64B': 100}}, 'uplink': {}, - 'duration': 30} + 'duration': 30, + 'simulated_users': { + 'simulated_users': {'uplink_0': 1, 'uplink_1': 2}}, + 'page_object': { + 'page_object': {'uplink_0': 1, 'uplink_1': 2}},} ) mock_tprofile_get.assert_called_once_with(fake_vnfd) diff --git a/yardstick/tests/unit/network_services/traffic_profile/test_http_ixload.py b/yardstick/tests/unit/network_services/traffic_profile/test_http_ixload.py index 1adab48bc..c9be200b2 100644 --- a/yardstick/tests/unit/network_services/traffic_profile/test_http_ixload.py +++ b/yardstick/tests/unit/network_services/traffic_profile/test_http_ixload.py @@ -249,16 +249,20 @@ class TestIxLoadTrafficGen(unittest.TestCase): ixload = http_ixload.IXLOADHttpTest( jsonutils.dump_as_bytes(self.test_input)) - ixload.links_param = {"uplink_0": {"ip": {}}} + ixload.links_param = {"uplink_0": {"ip": {}, + "http_client": {}}} ixload.test = mock.Mock() ixload.test.communityList = community_list ixload.update_network_param = mock.Mock() + ixload.update_http_client_param = mock.Mock() ixload.update_config() ixload.update_network_param.assert_called_once_with(net_taraffic_0, {}) + ixload.update_http_client_param.assert_called_once_with(net_taraffic_0, + {}) def test_update_network_mac_address(self): ethernet = mock.MagicMock() @@ -338,6 +342,57 @@ class TestIxLoadTrafficGen(unittest.TestCase): net_traffic, "mac") + def test_update_http_client_param(self): + net_traffic = mock.Mock() + + ixload = http_ixload.IXLOADHttpTest( + jsonutils.dump_as_bytes(self.test_input)) + + ixload.update_page_size = mock.Mock() + ixload.update_user_count = mock.Mock() + + param = {"page_object": "page_object", + "simulated_users": "simulated_users"} + + ixload.update_http_client_param(net_traffic, param) + + ixload.update_page_size.assert_called_once_with(net_traffic, + "page_object") + ixload.update_user_count.assert_called_once_with(net_traffic, + "simulated_users") + + def test_update_page_size(self): + activity = mock.MagicMock() + net_traffic = mock.Mock() + + ixload = http_ixload.IXLOADHttpTest( + jsonutils.dump_as_bytes(self.test_input)) + + net_traffic.activityList = [activity] + ix_http_command = activity.agent.actionList[0] + ixload.update_page_size(net_traffic, "page_object") + ix_http_command.config.assert_called_once_with( + pageObject="page_object") + + net_traffic.activityList = [] + with self.assertRaises(exceptions.InvalidRxfFile): + ixload.update_page_size(net_traffic, "page_object") + + def test_update_user_count(self): + activity = mock.MagicMock() + net_traffic = mock.Mock() + + ixload = http_ixload.IXLOADHttpTest( + jsonutils.dump_as_bytes(self.test_input)) + + net_traffic.activityList = [activity] + ixload.update_user_count(net_traffic, 123) + activity.config.assert_called_once_with(userObjectiveValue=123) + + net_traffic.activityList = [] + with self.assertRaises(exceptions.InvalidRxfFile): + ixload.update_user_count(net_traffic, 123) + @mock.patch('yardstick.network_services.traffic_profile.http_ixload.IxLoad') @mock.patch('yardstick.network_services.traffic_profile.http_ixload.StatCollectorUtils') def test_start_http_test(self, *args): diff --git a/yardstick/tests/unit/network_services/traffic_profile/test_prox_binsearch.py b/yardstick/tests/unit/network_services/traffic_profile/test_prox_binsearch.py index 4524eb7e6..f17656328 100644 --- a/yardstick/tests/unit/network_services/traffic_profile/test_prox_binsearch.py +++ b/yardstick/tests/unit/network_services/traffic_profile/test_prox_binsearch.py @@ -21,6 +21,8 @@ from yardstick.network_services.traffic_profile import prox_binsearch class TestProxBinSearchProfile(unittest.TestCase): + THEOR_MAX_THROUGHPUT = 0.00012340000000000002 + def setUp(self): self._mock_log_info = mock.patch.object(prox_binsearch.LOG, 'info') self.mock_log_info = self._mock_log_info.start() @@ -80,7 +82,7 @@ class TestProxBinSearchProfile(unittest.TestCase): # Result Samples inc theor_max result_tuple = {'Actual_throughput': 5e-07, - 'theor_max_throughput': 7.5e-07, + 'theor_max_throughput': self.THEOR_MAX_THROUGHPUT, 'PktSize': 200, 'Status': 'Result'} @@ -96,7 +98,7 @@ class TestProxBinSearchProfile(unittest.TestCase): "PktSize": 200, "RxThroughput": 7.5e-07, "Throughput": 7.5e-07, - "TxThroughput": 0.00012340000000000002, + "TxThroughput": self.THEOR_MAX_THROUGHPUT, "Status": 'Success'} calls = profile.queue.put(success_result_tuple) @@ -222,6 +224,7 @@ class TestProxBinSearchProfile(unittest.TestCase): raise RuntimeError(' '.join([str(args), str(runs)])) if args[2] > 75.0: return fail_tuple, {} + return success_tuple, {} tp_config = { @@ -258,7 +261,7 @@ class TestProxBinSearchProfile(unittest.TestCase): # Result Samples inc theor_max result_tuple = {'Actual_throughput': 5e-07, - 'theor_max_throughput': 7.5e-07, + 'theor_max_throughput': self.THEOR_MAX_THROUGHPUT, 'PktSize': 200, "Status": 'Result'} @@ -274,7 +277,7 @@ class TestProxBinSearchProfile(unittest.TestCase): "PktSize": 200, "RxThroughput": 7.5e-07, "Throughput": 7.5e-07, - "TxThroughput": 0.00012340000000000002, + "TxThroughput": self.THEOR_MAX_THROUGHPUT, "Status": 'Success'} calls = profile.queue.put(success_result_tuple) diff --git a/yardstick/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py index 894b16e13..6d1d8c6a1 100644 --- a/yardstick/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py @@ -648,6 +648,82 @@ class TestProxSocketHelper(unittest.TestCase): self.assertListEqual(result, expected) self.assertTrue(ok) + @mock.patch.object(prox_helpers.LOG, 'error') + def test_multi_port_stats_diff(self, *args): + mock_socket = mock.MagicMock() + prox = prox_helpers.ProxSocketHelper(mock_socket) + prox.get_string = mock.MagicMock(return_value=(True, '0,1,2,3,4,5;1,1,2,3,4,5')) + _, t1 = prox.multi_port_stats([0, 1]) + + prox.get_string = mock.MagicMock(return_value=(True, '0,2,4,6,8,6;1,4,8,16,32,6')) + _, t2 = prox.multi_port_stats([0, 1]) + + prox.get_string = mock.MagicMock(return_value=(True, '0,1,1,1,1,1;1,1,1,1,1,1')) + _, t3 = prox.multi_port_stats([0, 1]) + + prox.get_string = mock.MagicMock(return_value=(True, '0,2,2,2,2,2;1,2,2,2,2,2')) + _, t4 = prox.multi_port_stats([0, 1]) + + expected = [[0, 1.0, 2.0, 0, 0, 1], [1, 3.0, 6.0, 0, 0, 1]] + result = prox.multi_port_stats_diff(t1, t2, 1) + + self.assertListEqual(result, expected) + + result = prox.multi_port_stats_diff(t4, t3, 1) + expected = [[0, 1.0, 1.0, 0, 0, 1], [1, 1.0, 1.0, 0, 0, 1]] + + self.assertListEqual(result, expected) + + prox.get_string = mock.MagicMock(return_value=(True, '0,2,4,6,8,10')) + ok, t5 = prox.multi_port_stats([0, 1]) + self.assertFalse(ok) + self.assertListEqual(t5, []) + + result = prox.multi_port_stats_diff(t5, t4, 1) + expected = [[0, 0.0, 0.0, 0, 0, 0], [1, 0.0, 0.0, 0, 0, 0]] + self.assertListEqual(result, expected) + + prox.get_string = mock.MagicMock(return_value=(True, '0,10,10,20,30,0;1,30,40,50,60,0')) + _, t6 = prox.multi_port_stats([0, 1]) + + prox.get_string = \ + mock.MagicMock(return_value=(True, '0,100,100,100,100,0;1,100,100,100,100,0')) + _, t7 = prox.multi_port_stats([0, 1]) + + result = prox.multi_port_stats_diff(t6, t7, 1) + expected = [[0, 0.0, 0.0, 0, 0, 0], [1, 0.0, 0.0, 0, 0, 0]] + self.assertListEqual(result, expected) + + result = prox.multi_port_stats_diff(t1, t2, 0) + expected = [[0, 0.0, 0.0, 0, 0, 1], [1, 0.0, 0.0, 0, 0, 1]] + self.assertListEqual(result, expected) + + @mock.patch.object(prox_helpers.LOG, 'error') + def test_multi_port_stats_tuple(self, *args): + mock_socket = mock.MagicMock() + prox = prox_helpers.ProxSocketHelper(mock_socket) + prox.get_string = mock.MagicMock(return_value=(True, '0,1,2,3,4,5;1,1,2,3,4,5')) + _, result1 = prox.multi_port_stats([0, 1]) + prox.get_string = mock.MagicMock(return_value=(True, '0,2,4,6,8,6;1,4,8,16,32,6')) + _, result2 = prox.multi_port_stats([0, 1]) + + result = prox.multi_port_stats_diff(result1, result2, 1) + + vnfd_helper = mock.MagicMock() + vnfd_helper.ports_iter.return_value = [('xe0', 0), ('xe1', 1)] + + expected = {'xe0': {'in_packets': 1.0, 'out_packets': 2.0}, + 'xe1': {'in_packets': 3.0, 'out_packets': 6.0}} + live_stats = prox.multi_port_stats_tuple(result, vnfd_helper.ports_iter()) + self.assertDictEqual(live_stats, expected) + + live_stats = prox.multi_port_stats_tuple(result, None) + expected = {} + self.assertDictEqual(live_stats, expected) + + live_stats = prox.multi_port_stats_tuple(None, vnfd_helper.ports_iter()) + self.assertDictEqual(live_stats, expected) + def test_port_stats(self): port_stats = [ ','.join(str(n) for n in range(3, 15)), @@ -1568,8 +1644,83 @@ class TestProxResourceHelper(unittest.TestCase): helper = prox_helpers.ProxResourceHelper(mock.MagicMock()) helper._queue = queue = mock.MagicMock() helper._result = {'z': 123} + + helper.client = mock.MagicMock() + helper.client.hz.return_value = 1 + helper.client.multi_port_stats.return_value = \ + (True, [[0, 1, 2, 3, 4, 5], [1, 1, 2, 3, 4, 5]]) + helper.client.multi_port_stats_diff.return_value = \ + ([0, 1, 2, 3, 4, 5, 6, 7]) + helper.client.multi_port_stats_tuple.return_value = \ + {"xe0": {"in_packets": 1, "out_packets": 2}} + helper.resource = resource = mock.MagicMock() + + vnfd_helper = mock.MagicMock() + vnfd_helper.ports_iter.return_value = [('xe0', 0), ('xe1', 1)] + helper.vnfd_helper = vnfd_helper + + resource.check_if_system_agent_running.return_value = 0, '1234' + resource.amqp_collect_nfvi_kpi.return_value = 543 + resource.check_if_system_agent_running.return_value = (0, None) + + queue.empty.return_value = False + queue.get.return_value = {'a': 789} + + expected = {'z': 123, 'a': 789, + 'collect_stats': {'core': 543}, + 'live_stats': {'xe0': {'in_packets': 1, 'out_packets': 2}}} + result = helper.collect_kpi() + self.assertDictEqual(result, expected) + + def test_collect_kpi_no_hz(self): + helper = prox_helpers.ProxResourceHelper(mock.MagicMock()) + helper._queue = queue = mock.MagicMock() + helper._result = {'z': 123} + + helper.client = mock.MagicMock() + helper.client.multi_port_stats.return_value = \ + (True, [[0, 1, 2, 3, 4, 5], [1, 1, 2, 3, 4, 5]]) + helper.client.multi_port_stats_diff.return_value = \ + ([0, 1, 2, 3, 4, 5, 6, 7]) + helper.client.multi_port_stats_tuple.return_value = \ + {"xe0": {"in_packets": 1, "out_packets": 2}} + helper.resource = resource = mock.MagicMock() + + vnfd_helper = mock.MagicMock() + vnfd_helper.ports_iter.return_value = [('xe0', 0), ('xe1', 1)] + helper.vnfd_helper = vnfd_helper + + resource.check_if_system_agent_running.return_value = 0, '1234' + resource.amqp_collect_nfvi_kpi.return_value = 543 + resource.check_if_system_agent_running.return_value = (0, None) + + queue.empty.return_value = False + queue.get.return_value = {'a': 789} + + expected = {'z': 123, 'a': 789, + 'collect_stats': {'core': 543}, + 'live_stats': {'xe0': {'in_packets': 1, 'out_packets': 2}}} + result = helper.collect_kpi() + self.assertDictEqual(result, expected) + + def test_collect_kpi_bad_data(self): + helper = prox_helpers.ProxResourceHelper(mock.MagicMock()) + helper._queue = queue = mock.MagicMock() + helper._result = {'z': 123} + + helper.client = mock.MagicMock() + helper.client.multi_port_stats.return_value = \ + (False, [[0, 1, 2, 3, 4, 5], [1, 1, 2, 3, 4, 5]]) + helper.client.multi_port_stats_diff.return_value = \ + ([0, 1, 2, 3, 4, 5, 6, 7]) + helper.client.multi_port_stats_tuple.return_value = \ + {"xe0": {"in_packets": 1, "out_packets": 2}} helper.resource = resource = mock.MagicMock() + vnfd_helper = mock.MagicMock() + vnfd_helper.ports_iter.return_value = [('xe0', 0), ('xe1', 1)] + helper.vnfd_helper = vnfd_helper + resource.check_if_system_agent_running.return_value = 0, '1234' resource.amqp_collect_nfvi_kpi.return_value = 543 resource.check_if_system_agent_running.return_value = (0, None) @@ -1577,7 +1728,8 @@ class TestProxResourceHelper(unittest.TestCase): queue.empty.return_value = False queue.get.return_value = {'a': 789} - expected = {'z': 123, 'a': 789, 'collect_stats': {'core': 543}} + expected = {'z': 123, 'a': 789, + 'collect_stats': {'core': 543}} result = helper.collect_kpi() self.assertDictEqual(result, expected) diff --git a/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py index a7e61da0f..935d3fa30 100644 --- a/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py @@ -329,13 +329,27 @@ class TestProxTrafficGen(unittest.TestCase): } prox_traffic_gen._vnf_wrapper.resource_helper.resource = mock.MagicMock( **{"self.check_if_system_agent_running.return_value": [False]}) + + vnfd_helper = mock.MagicMock() + vnfd_helper.ports_iter.return_value = [('xe0', 0), ('xe1', 1)] + prox_traffic_gen.resource_helper.vnfd_helper = vnfd_helper + + prox_traffic_gen._vnf_wrapper.resource_helper.client = mock.MagicMock() + prox_traffic_gen._vnf_wrapper.resource_helper.client.multi_port_stats.return_value = \ + [[0, 1, 2, 3, 4, 5], [1, 1, 2, 3, 4, 5]] + prox_traffic_gen._vnf_wrapper.resource_helper.client.multi_port_stats_diff.return_value = \ + [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7] + prox_traffic_gen._vnf_wrapper.resource_helper.client.\ + multi_port_stats_tuple.return_value = \ + {"xe0": {"in_packets": 1, "out_packets": 2}} + prox_traffic_gen._vnf_wrapper.vnf_execute = mock.Mock(return_value="") expected = { - 'collect_stats': {}, + 'collect_stats': {'live_stats': {'xe0': {'in_packets': 1, 'out_packets': 2}}}, 'physical_node': 'mock_node' } - self.assertEqual(prox_traffic_gen.collect_kpi(), expected) - + result = prox_traffic_gen.collect_kpi() + self.assertDictEqual(result, expected) @mock.patch('yardstick.network_services.vnf_generic.vnf.prox_helpers.find_relative_file') @mock.patch( diff --git a/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py index ec0e6aa6d..741201fdb 100644 --- a/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py @@ -205,8 +205,8 @@ class TestIXIATrafficGen(unittest.TestCase): vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] ixnet_traffic_gen = tg_rfc2544_ixia.IxiaTrafficGen(NAME, vnfd, 'task_id') - scenario_cfg = {'tc': "nsb_test_case", "topology": "", - 'ixia_profile': "ixload.cfg"} + scenario_cfg = {'tc': "nsb_test_case", + "topology": ""} scenario_cfg.update( { 'options': { @@ -379,7 +379,6 @@ class TestIXIATrafficGen(unittest.TestCase): }, }, }, - 'ixia_profile': '/path/to/profile', 'task_path': '/path/to/task' } diff --git a/yardstick/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py index 7b937dfb5..8d49cb3f4 100644 --- a/yardstick/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py @@ -16,7 +16,6 @@ from multiprocessing import Process, Queue import time import mock -from six.moves import configparser import unittest from yardstick.benchmark.contexts import base as ctx_base @@ -147,48 +146,6 @@ class TestConfigCreate(unittest.TestCase): self.assertEqual(config_create.downlink_ports, ['xe1']) self.assertEqual(config_create.socket, 2) - def test_dpdk_port_to_link_id(self): - vnfd_helper = vnf_base.VnfdHelper(self.VNFD_0) - config_create = vpe_vnf.ConfigCreate(vnfd_helper, 2) - self.assertEqual(config_create.dpdk_port_to_link_id_map, {'xe0': 0, 'xe1': 1}) - - def test_vpe_initialize(self): - vnfd_helper = vnf_base.VnfdHelper(self.VNFD_0) - config_create = vpe_vnf.ConfigCreate(vnfd_helper, 2) - config = configparser.ConfigParser() - config_create.vpe_initialize(config) - self.assertEqual(config.get('EAL', 'log_level'), '0') - self.assertEqual(config.get('PIPELINE0', 'type'), 'MASTER') - self.assertEqual(config.get('PIPELINE0', 'core'), 's2C0') - self.assertEqual(config.get('MEMPOOL0', 'pool_size'), '256K') - self.assertEqual(config.get('MEMPOOL1', 'pool_size'), '2M') - - def test_vpe_rxq(self): - vnfd_helper = vnf_base.VnfdHelper(self.VNFD_0) - config_create = vpe_vnf.ConfigCreate(vnfd_helper, 2) - config = configparser.ConfigParser() - config_create.downlink_ports = ['xe0'] - config_create.vpe_rxq(config) - self.assertEqual(config.get('RXQ0.0', 'mempool'), 'MEMPOOL1') - - def test_get_sink_swq(self): - vnfd_helper = vnf_base.VnfdHelper(self.VNFD_0) - config_create = vpe_vnf.ConfigCreate(vnfd_helper, 2) - config = configparser.ConfigParser() - config.add_section('PIPELINE0') - config.set('PIPELINE0', 'key1', 'value1') - config.set('PIPELINE0', 'key2', 'value2 SINK') - config.set('PIPELINE0', 'key3', 'TM value3') - config.set('PIPELINE0', 'key4', 'value4') - config.set('PIPELINE0', 'key5', 'the SINK value5') - - self.assertEqual(config_create.get_sink_swq(config, 'PIPELINE0', 'key1', 5), 'SWQ-1') - self.assertEqual(config_create.get_sink_swq(config, 'PIPELINE0', 'key2', 5), 'SWQ-1 SINK0') - self.assertEqual(config_create.get_sink_swq(config, 'PIPELINE0', 'key3', 5), 'SWQ-1 TM5') - config_create.sw_q += 1 - self.assertEqual(config_create.get_sink_swq(config, 'PIPELINE0', 'key4', 5), 'SWQ0') - self.assertEqual(config_create.get_sink_swq(config, 'PIPELINE0', 'key5', 5), 'SWQ0 SINK1') - def test_generate_vpe_script(self): vnfd_helper = vnf_base.VnfdHelper(self.VNFD_0) vpe_config_vnf = vpe_vnf.ConfigCreate(vnfd_helper, 2) @@ -214,36 +171,6 @@ class TestConfigCreate(unittest.TestCase): self.assertIsInstance(result, str) self.assertNotEqual(result, '') - def test_create_vpe_config(self): - vnfd_helper = vnf_base.VnfdHelper(self.VNFD_0) - config_create = vpe_vnf.ConfigCreate(vnfd_helper, 23) - config_create.uplink_ports = ['xe1'] - with mock.patch.object(config_create, 'vpe_upstream') as mock_up, \ - mock.patch.object(config_create, 'vpe_downstream') as \ - mock_down, \ - mock.patch.object(config_create, 'vpe_tmq') as mock_tmq, \ - mock.patch.object(config_create, 'vpe_initialize') as \ - mock_ini, \ - mock.patch.object(config_create, 'vpe_rxq') as mock_rxq: - mock_ini_obj = mock.Mock() - mock_rxq_obj = mock.Mock() - mock_up_obj = mock.Mock() - mock_down_obj = mock.Mock() - mock_tmq_obj = mock.Mock() - mock_ini.return_value = mock_ini_obj - mock_rxq.return_value = mock_rxq_obj - mock_up.return_value = mock_up_obj - mock_down.return_value = mock_down_obj - mock_tmq.return_value = mock_tmq_obj - config_create.create_vpe_config('fake_config_file') - - mock_rxq.assert_called_once_with(mock_ini_obj) - mock_up.assert_called_once_with('fake_config_file', 0) - mock_down.assert_called_once_with('fake_config_file', 0) - mock_tmq.assert_called_once_with(mock_down_obj, 0) - mock_up_obj.write.assert_called_once() - mock_tmq_obj.write.assert_called_once() - class TestVpeApproxVnf(unittest.TestCase): |