summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dashboard/opnfv_yardstick_tc037.json2
-rw-r--r--dashboard/opnfv_yardstick_tc038.json2
-rw-r--r--dashboard/opnfv_yardstick_tc070.json2
-rw-r--r--dashboard/opnfv_yardstick_tc071.json2
-rw-r--r--dashboard/opnfv_yardstick_tc072.json2
-rw-r--r--samples/vnf_samples/nsut/acl/acl.cfg2
-rw-r--r--samples/vnf_samples/nsut/acl/acl_config/acl_config61
-rw-r--r--samples/vnf_samples/nsut/acl/acl_config/acl_script53
-rw-r--r--samples/vnf_samples/nsut/cgnapt/cgnat.cfg12
-rw-r--r--samples/vnf_samples/nsut/vfw/vfw.cfg2
-rw-r--r--tests/opnfv/test_suites/opnfv_os-nosdn-openbaton-ha_daily.yaml62
-rw-r--r--tests/opnfv/test_suites/opnfv_os-nosdn-ovs_dpdk-ha_daily.yaml62
-rw-r--r--tests/opnfv/test_suites/opnfv_os-nosdn-ovs_dpdk-noha_daily.yaml62
-rw-r--r--tests/opnfv/test_suites/opnfv_os-odl_l2-moon-noha_daily.yaml62
-rw-r--r--tests/unit/network_services/helpers/test_iniparser.py (renamed from tests/unit/network_services/vnf_generic/vnf/test_iniparser.py)14
-rw-r--r--tests/unit/network_services/helpers/test_samplevnf_helper.py6
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py2
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py1
-rw-r--r--yardstick/benchmark/core/task.py24
-rwxr-xr-xyardstick/benchmark/runners/base.py4
-rw-r--r--yardstick/benchmark/scenarios/compute/qemu_migrate_benchmark.bash25
-rw-r--r--yardstick/benchmark/scenarios/networking/ping.py35
-rw-r--r--yardstick/benchmark/scenarios/networking/vnf_generic.py6
-rwxr-xr-xyardstick/cmd/NSBperf.py20
-rw-r--r--yardstick/dispatcher/influxdb.py4
-rw-r--r--yardstick/network_services/collector/subscriber.py14
-rw-r--r--yardstick/network_services/helpers/iniparser.py (renamed from yardstick/network_services/vnf_generic/vnf/iniparser.py)0
-rw-r--r--yardstick/network_services/helpers/samplevnf_helper.py24
-rw-r--r--yardstick/network_services/nfvi/resource.py12
-rw-r--r--yardstick/network_services/vnf_generic/vnf/prox_helpers.py11
-rw-r--r--yardstick/network_services/vnf_generic/vnf/sample_vnf.py3
31 files changed, 394 insertions, 199 deletions
diff --git a/dashboard/opnfv_yardstick_tc037.json b/dashboard/opnfv_yardstick_tc037.json
index 366210503..85f7908b6 100644
--- a/dashboard/opnfv_yardstick_tc037.json
+++ b/dashboard/opnfv_yardstick_tc037.json
@@ -846,7 +846,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc038.json b/dashboard/opnfv_yardstick_tc038.json
index bf068d5a9..65b97d626 100644
--- a/dashboard/opnfv_yardstick_tc038.json
+++ b/dashboard/opnfv_yardstick_tc038.json
@@ -566,7 +566,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc070.json b/dashboard/opnfv_yardstick_tc070.json
index 152ecca24..c57d4194e 100644
--- a/dashboard/opnfv_yardstick_tc070.json
+++ b/dashboard/opnfv_yardstick_tc070.json
@@ -914,7 +914,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc071.json b/dashboard/opnfv_yardstick_tc071.json
index defd6fada..009e0a173 100644
--- a/dashboard/opnfv_yardstick_tc071.json
+++ b/dashboard/opnfv_yardstick_tc071.json
@@ -994,7 +994,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc072.json b/dashboard/opnfv_yardstick_tc072.json
index 2d330a05f..b8e9fa356 100644
--- a/dashboard/opnfv_yardstick_tc072.json
+++ b/dashboard/opnfv_yardstick_tc072.json
@@ -723,7 +723,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/samples/vnf_samples/nsut/acl/acl.cfg b/samples/vnf_samples/nsut/acl/acl.cfg
index fd3c51ee8..06da405db 100644
--- a/samples/vnf_samples/nsut/acl/acl.cfg
+++ b/samples/vnf_samples/nsut/acl/acl.cfg
@@ -20,8 +20,6 @@ type = ARPICMP
core = 1
pktq_in = SWQ4
pktq_out = TXQ0.0 TXQ1.0 TXQ2.0 TXQ3.0
-arp_route_tbl = (c0102814,fffff000,1,c0102814) (c0106414,fffff000,0,c0106414)
-nd_route_tbl = (0064:ff9b:0:0:0:0:9810:6414,120,0,0064:ff9b:0:0:0:0:9810:6414)
pktq_in_prv = RXQ0.0
prv_to_pub_map = (0,1)
[PIPELINE2]
diff --git a/samples/vnf_samples/nsut/acl/acl_config/acl_config b/samples/vnf_samples/nsut/acl/acl_config/acl_config
deleted file mode 100644
index 52b6a5002..000000000
--- a/samples/vnf_samples/nsut/acl/acl_config/acl_config
+++ /dev/null
@@ -1,61 +0,0 @@
-; Copyright (c) 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.
-
-[PIPELINE0]
-type = MASTER
-core = s{socket}c0
-[PIPELINE1]
-type = ARPICMP
-core = s{socket}c1
-pktq_in = SWQ2
-pktq_out = SWQ7
-# debug output
-# ({port1_dst_ip},{port1_netmask},1,{port1_dst_ip}) ({port0_dst_ip},{port0_netmask},0,{port0_dst_ip})
-arp_route_tbl = ({port0_dst_ip_hex},{port0_netmask_hex},0,{port0_dst_ip_hex}) ({port1_dst_ip_hex},{port1_netmask_hex},1,{port1_dst_ip_hex})
-#ports_mac_list = port0_local_mac port1_local_mac
-ports_mac_list = {port0_local_mac} {port1_local_mac}
-pktq_in_prv = RXQ0.0 RXQ1.0
-prv_to_pub_map = (0,1)
-prv_que_handler = (0)
-
-[PIPELINE2]
-type = TXRX
-core = s{socket}c2
-pktq_in = RXQ0.0 RXQ1.0
-pktq_out = SWQ0 SWQ1 SWQ2
-pipeline_txrx_type = RXRX
-dest_if_offset=176
-[PIPELINE3]
-type = LOADB
-core = s{socket}c3
-pktq_in = SWQ0 SWQ1
-pktq_out = SWQ3 SWQ4
-outport_offset = 136
-phyport_offset = 204
-n_vnf_threads = 1
-prv_que_handler = (0)
-[PIPELINE4]
-type = ACL
-core = s{socket}c4
-pktq_in = SWQ3 SWQ4
-pktq_out = SWQ5 SWQ6
-n_flows = 1000000
-pkt_type = ipv4
-traffic_type = 4
-[PIPELINE5]
-type = TXRX
-core = s{socket}c5
-pktq_in = SWQ5 SWQ6 SWQ7
-pktq_out = TXQ0.0 TXQ1.0
-pipeline_txrx_type = TXTX
diff --git a/samples/vnf_samples/nsut/acl/acl_config/acl_script b/samples/vnf_samples/nsut/acl/acl_config/acl_script
deleted file mode 100644
index 4d7553609..000000000
--- a/samples/vnf_samples/nsut/acl/acl_config/acl_script
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright (c) 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.
-
-link 0 down
-link 0 config {port0_local_ip} {port0_prefixlen}
-link 0 up
-link 1 down
-link 1 config {port1_local_ip} {port1_prefixlen}
-link 1 up
-
-p action add 0 accept
-p action add 0 fwd 0
-p action add 0 count
-
-p action add 1 accept
-p action add 1 fwd 1
-p action add 1 count
-
-#p acl add 1 0.0.0.0 0 0.0.0.0 0 0 65535 0 65535 0 0 0
-#p acl add 1 0.0.0.0 0 0.0.0.0 0 0 65535 0 65535 0 0 1
-
-# action rule matches dest port
-p acl add 1 {port1_local_network} {port1_prefix} 0.0.0.0 0 0 65535 0 65535 0 0 0
-p acl add 1 0.0.0.0 0 {port1_local_network} {port1_prefix} 0 65535 0 65535 0 0 1
-
-p acl add 1 {port0_local_network} {port0_prefix} 0.0.0.0 0 0 65535 0 65535 0 0 1
-p acl add 1 0.0.0.0 0 {port0_local_network} {port0_prefix} 0 65535 0 65535 0 0 0
-
-p acl add 1 {port0_local_network} {port0_prefix} {port1_local_network} {port1_prefix} 0 65535 0 65535 0 0 1
-p acl add 1 {port1_local_network} {port1_prefix} {port0_local_network} {port0_prefix} 0 65535 0 65535 0 0 0
-
-# gateway is the remote port
-p 1 arpadd 0 {port0_gateway} {port0_local_mac}
-p 1 arpadd 0 {port0_local_ip} {port0_local_mac}
-p 1 arpadd 0 {port0_dst_ip} {port0_dst_mac}
-p 1 arpadd 1 {port1_gateway} {port1_local_mac}
-p 1 arpadd 1 {port1_local_ip} {port1_local_mac}
-p 1 arpadd 1 {port1_dst_ip} {port1_dst_mac}
-
-p acl applyruleset
-
-#p acl dbg 1
diff --git a/samples/vnf_samples/nsut/cgnapt/cgnat.cfg b/samples/vnf_samples/nsut/cgnapt/cgnat.cfg
index 37c5e2731..27169f8dc 100644
--- a/samples/vnf_samples/nsut/cgnapt/cgnat.cfg
+++ b/samples/vnf_samples/nsut/cgnapt/cgnat.cfg
@@ -21,15 +21,7 @@ core = 1
pktq_in = SWQ4
pktq_out = TXQ0.0 TXQ1.0 TXQ2.0 TXQ3.0
-; ARP route table entries (ip, mask, if_port, nh) hex values with no 0x
-arp_route_tbl = (c0102814,fffff000,1,c0102814) (c0106414,fffff000,0,c0106414)
-;arp_route_tbl = (c0122814,fffff000,3,c0122814) (c0126414,fffff000,1,c0126414)
-; Link MAC addresses in order aa:bb:cc:dd:ee:ff separated by space
-nd_route_tbl = (0064:ff9b:0:0:0:0:9810:6414,120,0,0064:ff9b:0:0:0:0:9810:6414)
-;
-; Hex values with no leading 0x, MACs in ascending port order starting @P0
-;ports_mac_list = 00:05:CA:30:21:F0 00:05:CA:30:21:F1 ;00:05:CA:30:21:F2 00:05:CA:30:21:F3
-;
+
; egress (private interface) info
pktq_in_prv = RXQ0.0
;
@@ -72,7 +64,7 @@ key_size = 8
hash_offset = 200;72
;cgnapt_debug = 2
;
-timer_period = 10000
+timer_period = 100
max_clients_per_ip = 65535
max_port_per_client = 100
public_ip_port_range = 04040000:(1, 65535)
diff --git a/samples/vnf_samples/nsut/vfw/vfw.cfg b/samples/vnf_samples/nsut/vfw/vfw.cfg
index 8bab8d047..c0b11419c 100644
--- a/samples/vnf_samples/nsut/vfw/vfw.cfg
+++ b/samples/vnf_samples/nsut/vfw/vfw.cfg
@@ -20,8 +20,6 @@ type = ARPICMP
core = 1
pktq_in = SWQ4
pktq_out = TXQ0.0 TXQ1.0 TXQ2.0 TXQ3.0
-arp_route_tbl = (c0102814,fffff000,1,c0102814) (c0106414,fffff000,0,c0106414)
-nd_route_tbl = (0064:ff9b:0:0:0:0:9810:6414,120,0,0064:ff9b:0:0:0:0:9810:6414)
pktq_in_prv = RXQ0.0
prv_to_pub_map = (0,1)
[PIPELINE2]
diff --git a/tests/opnfv/test_suites/opnfv_os-nosdn-openbaton-ha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-nosdn-openbaton-ha_daily.yaml
new file mode 100644
index 000000000..d1b4cce1a
--- /dev/null
+++ b/tests/opnfv/test_suites/opnfv_os-nosdn-openbaton-ha_daily.yaml
@@ -0,0 +1,62 @@
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# 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
+##############################################################################
+---
+# os-nosdn-openbaton-ha daily task suite
+
+schema: "yardstick:suite:0.1"
+
+name: "os-nosdn-openbaton-ha"
+test_cases_dir: "tests/opnfv/test_cases/"
+test_cases:
+-
+ file_name: opnfv_yardstick_tc002.yaml
+-
+ file_name: opnfv_yardstick_tc005.yaml
+-
+ file_name: opnfv_yardstick_tc010.yaml
+-
+ file_name: opnfv_yardstick_tc011.yaml
+-
+ file_name: opnfv_yardstick_tc012.yaml
+-
+ file_name: opnfv_yardstick_tc014.yaml
+-
+ file_name: opnfv_yardstick_tc037.yaml
+-
+ file_name: opnfv_yardstick_tc055.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node5.yardstick-TC055"}'
+-
+ file_name: opnfv_yardstick_tc063.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node5.yardstick-TC063"}'
+-
+ file_name: opnfv_yardstick_tc069.yaml
+-
+ file_name: opnfv_yardstick_tc070.yaml
+-
+ file_name: opnfv_yardstick_tc071.yaml
+-
+ file_name: opnfv_yardstick_tc072.yaml
+-
+ file_name: opnfv_yardstick_tc075.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node1.LF"}'
diff --git a/tests/opnfv/test_suites/opnfv_os-nosdn-ovs_dpdk-ha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-nosdn-ovs_dpdk-ha_daily.yaml
new file mode 100644
index 000000000..10772e0cc
--- /dev/null
+++ b/tests/opnfv/test_suites/opnfv_os-nosdn-ovs_dpdk-ha_daily.yaml
@@ -0,0 +1,62 @@
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# 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
+##############################################################################
+---
+# os-nosdn-ovs_dpdk-ha daily task suite
+
+schema: "yardstick:suite:0.1"
+
+name: "os-nosdn-ovs_dpdk-ha"
+test_cases_dir: "tests/opnfv/test_cases/"
+test_cases:
+-
+ file_name: opnfv_yardstick_tc002.yaml
+-
+ file_name: opnfv_yardstick_tc005.yaml
+-
+ file_name: opnfv_yardstick_tc010.yaml
+-
+ file_name: opnfv_yardstick_tc011.yaml
+-
+ file_name: opnfv_yardstick_tc012.yaml
+-
+ file_name: opnfv_yardstick_tc014.yaml
+-
+ file_name: opnfv_yardstick_tc037.yaml
+-
+ file_name: opnfv_yardstick_tc055.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node5.yardstick-TC055"}'
+-
+ file_name: opnfv_yardstick_tc063.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node5.yardstick-TC063"}'
+-
+ file_name: opnfv_yardstick_tc069.yaml
+-
+ file_name: opnfv_yardstick_tc070.yaml
+-
+ file_name: opnfv_yardstick_tc071.yaml
+-
+ file_name: opnfv_yardstick_tc072.yaml
+-
+ file_name: opnfv_yardstick_tc075.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node1.LF"}'
diff --git a/tests/opnfv/test_suites/opnfv_os-nosdn-ovs_dpdk-noha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-nosdn-ovs_dpdk-noha_daily.yaml
new file mode 100644
index 000000000..9b2be3710
--- /dev/null
+++ b/tests/opnfv/test_suites/opnfv_os-nosdn-ovs_dpdk-noha_daily.yaml
@@ -0,0 +1,62 @@
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# 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
+##############################################################################
+---
+# os-nosdn-ovs_dpdk-noha daily task suite
+
+schema: "yardstick:suite:0.1"
+
+name: "os-nosdn-ovs_dpdk-noha"
+test_cases_dir: "tests/opnfv/test_cases/"
+test_cases:
+-
+ file_name: opnfv_yardstick_tc002.yaml
+-
+ file_name: opnfv_yardstick_tc005.yaml
+-
+ file_name: opnfv_yardstick_tc010.yaml
+-
+ file_name: opnfv_yardstick_tc011.yaml
+-
+ file_name: opnfv_yardstick_tc012.yaml
+-
+ file_name: opnfv_yardstick_tc014.yaml
+-
+ file_name: opnfv_yardstick_tc037.yaml
+-
+ file_name: opnfv_yardstick_tc055.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node5.yardstick-TC055"}'
+-
+ file_name: opnfv_yardstick_tc063.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node5.yardstick-TC063"}'
+-
+ file_name: opnfv_yardstick_tc069.yaml
+-
+ file_name: opnfv_yardstick_tc070.yaml
+-
+ file_name: opnfv_yardstick_tc071.yaml
+-
+ file_name: opnfv_yardstick_tc072.yaml
+-
+ file_name: opnfv_yardstick_tc075.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node1.LF"}'
diff --git a/tests/opnfv/test_suites/opnfv_os-odl_l2-moon-noha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-odl_l2-moon-noha_daily.yaml
new file mode 100644
index 000000000..cff147720
--- /dev/null
+++ b/tests/opnfv/test_suites/opnfv_os-odl_l2-moon-noha_daily.yaml
@@ -0,0 +1,62 @@
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# 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
+##############################################################################
+---
+# os-odl_l2-moon-noha daily task suite
+
+schema: "yardstick:suite:0.1"
+
+name: "os-odl_l2-moon-noha"
+test_cases_dir: "tests/opnfv/test_cases/"
+test_cases:
+-
+ file_name: opnfv_yardstick_tc002.yaml
+-
+ file_name: opnfv_yardstick_tc005.yaml
+-
+ file_name: opnfv_yardstick_tc010.yaml
+-
+ file_name: opnfv_yardstick_tc011.yaml
+-
+ file_name: opnfv_yardstick_tc012.yaml
+-
+ file_name: opnfv_yardstick_tc014.yaml
+-
+ file_name: opnfv_yardstick_tc037.yaml
+-
+ file_name: opnfv_yardstick_tc055.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node5.yardstick-TC055"}'
+-
+ file_name: opnfv_yardstick_tc063.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node5.yardstick-TC063"}'
+-
+ file_name: opnfv_yardstick_tc069.yaml
+-
+ file_name: opnfv_yardstick_tc070.yaml
+-
+ file_name: opnfv_yardstick_tc071.yaml
+-
+ file_name: opnfv_yardstick_tc072.yaml
+-
+ file_name: opnfv_yardstick_tc075.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node1.LF"}'
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_iniparser.py b/tests/unit/network_services/helpers/test_iniparser.py
index 1ad8df9c6..bd27b497e 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_iniparser.py
+++ b/tests/unit/network_services/helpers/test_iniparser.py
@@ -27,10 +27,10 @@ stl_patch = mock.patch.dict("sys.modules", STL_MOCKS)
stl_patch.start()
if stl_patch:
- from yardstick.network_services.vnf_generic.vnf.iniparser import ParseError
- from yardstick.network_services.vnf_generic.vnf.iniparser import LineParser
- from yardstick.network_services.vnf_generic.vnf.iniparser import BaseParser
- from yardstick.network_services.vnf_generic.vnf.iniparser import ConfigParser
+ from yardstick.network_services.helpers.iniparser import ParseError
+ from yardstick.network_services.helpers.iniparser import LineParser
+ from yardstick.network_services.helpers.iniparser import BaseParser
+ from yardstick.network_services.helpers.iniparser import ConfigParser
PARSE_TEXT_1 = """\
@@ -141,7 +141,7 @@ class TestConfigParser(unittest.TestCase):
return internal_open
- @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open')
+ @mock.patch('yardstick.network_services.helpers.iniparser.open')
def test_parse(self, mock_open):
mock_open.side_effect = self.make_open(PARSE_TEXT_1)
@@ -182,7 +182,7 @@ class TestConfigParser(unittest.TestCase):
self.assertEqual(config_parser.find_section_index('section1'), 1)
self.assertEqual(config_parser.find_section_index('section3'), -1)
- @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open')
+ @mock.patch('yardstick.network_services.helpers.iniparser.open')
def test_parse_2(self, mock_open):
mock_open.side_effect = self.make_open(PARSE_TEXT_2)
@@ -200,7 +200,7 @@ class TestConfigParser(unittest.TestCase):
self.assertEqual(config_parser.sections, expected)
- @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open')
+ @mock.patch('yardstick.network_services.helpers.iniparser.open')
def test_parse_negative(self, mock_open):
bad_text_dict = {
'no section': PARSE_TEXT_BAD_1,
diff --git a/tests/unit/network_services/helpers/test_samplevnf_helper.py b/tests/unit/network_services/helpers/test_samplevnf_helper.py
index 0ac363f28..bff3a7722 100644
--- a/tests/unit/network_services/helpers/test_samplevnf_helper.py
+++ b/tests/unit/network_services/helpers/test_samplevnf_helper.py
@@ -211,6 +211,7 @@ class TestMultiPortConfig(unittest.TestCase):
opnfv_vnf.generate_script_data = \
mock.Mock(return_value={'link_config': 0, 'arp_config': '',
'arp_config6': '', 'actions': '',
+ 'arp_route_tbl': '', 'arp_route_tbl6': '',
'rules': ''})
opnfv_vnf.port_pair_list = [("xe0", "xe1")]
self.assertIsNotNone(opnfv_vnf.generate_script(self.VNFD))
@@ -823,8 +824,9 @@ class TestMultiPortConfig(unittest.TestCase):
opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock)
opnfv_vnf.all_ports = [3, 2, 5]
- expected = '(0a141000,fffff000,32,0a141e28) (0ac81e00,ffffff00,1,0ac81e28) ' \
- '(0a000000,ff000000,987,0a140328)'
+ expected = 'routeadd net 32 10.20.30.40 0xfffff000\n' \
+ 'routeadd net 1 10.200.30.40 0xffffff00\n' \
+ 'routeadd net 987 10.20.3.40 0xff000000'
result = opnfv_vnf.generate_arp_route_tbl()
self.assertEqual(result, expected)
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py
index 09060ff57..a6d40877d 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py
@@ -376,7 +376,7 @@ class TestProxApproxVnf(unittest.TestCase):
return file_path
@mock.patch('yardstick.benchmark.scenarios.networking.vnf_generic.open', create=True)
- @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open', create=True)
+ @mock.patch('yardstick.network_services.helpers.iniparser.open', create=True)
@mock.patch(SSH_HELPER)
def test_run_prox(self, ssh, *_):
mock_ssh(ssh)
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
index 1e6bc1a13..c41da2c45 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
@@ -1886,6 +1886,7 @@ class TestSampleVnf(unittest.TestCase):
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
sample_vnf = SampleVNF('vnf1', vnfd)
sample_vnf.APP_NAME = 'sample1'
+ sample_vnf.WAIT_TIME_FOR_SCRIPT = 0
sample_vnf._start_server = mock.Mock(return_value=0)
sample_vnf._vnf_process = mock.MagicMock()
sample_vnf._vnf_process.exitcode = 0
diff --git a/yardstick/benchmark/core/task.py b/yardstick/benchmark/core/task.py
index 53298d8d3..9b1b3f851 100644
--- a/yardstick/benchmark/core/task.py
+++ b/yardstick/benchmark/core/task.py
@@ -28,6 +28,7 @@ from jinja2 import Environment
from yardstick.benchmark.contexts.base import Context
from yardstick.benchmark.runners import base as base_runner
+from yardstick.common.constants import CONF_FILE
from yardstick.common.yaml_loader import yaml_load
from yardstick.dispatcher.base import Base as DispatcherBase
from yardstick.common.task_template import TaskTemplate
@@ -36,10 +37,8 @@ from yardstick.common import constants
from yardstick.common.html_template import report_template
output_file_default = "/tmp/yardstick.out"
-config_file = '/etc/yardstick/yardstick.conf'
test_cases_dir_default = "tests/opnfv/test_cases/"
LOG = logging.getLogger(__name__)
-JOIN_TIMEOUT = 60
class Task(object): # pragma: no cover
@@ -69,7 +68,7 @@ class Task(object): # pragma: no cover
self._set_log()
try:
- output_config = utils.parse_ini_file(config_file)
+ output_config = utils.parse_ini_file(CONF_FILE)
except Exception:
# all error will be ignore, the default value is {}
output_config = {}
@@ -260,7 +259,7 @@ class Task(object): # pragma: no cover
# Wait for runners to finish
for runner in runners:
- status = runner_join(runner, self.outputs, result)
+ status = runner_join(runner, background_runners, self.outputs, result)
if status != 0:
raise RuntimeError(
"{0} runner status {1}".format(runner.__execution_type__, status))
@@ -270,7 +269,7 @@ class Task(object): # pragma: no cover
for scenario in scenarios:
if not _is_background_scenario(scenario):
runner = self.run_one_scenario(scenario, output_file)
- status = runner_join(runner, self.outputs, result)
+ status = runner_join(runner, background_runners, self.outputs, result)
if status != 0:
LOG.error('Scenario NO.%s: "%s" ERROR!',
scenarios.index(scenario) + 1,
@@ -285,11 +284,11 @@ class Task(object): # pragma: no cover
# Wait for background runners to finish
for runner in background_runners:
- status = runner.join(self.outputs, result, JOIN_TIMEOUT)
+ status = runner.join(self.outputs, result)
if status is None:
# Nuke if it did not stop nicely
base_runner.Runner.terminate(runner)
- runner.join(self.outputs, result, JOIN_TIMEOUT)
+ runner.join(self.outputs, result)
base_runner.Runner.release(runner)
print("Background task ended")
@@ -641,13 +640,22 @@ def get_networks_from_nodes(nodes):
return networks
-def runner_join(runner, outputs, result):
+def runner_join(runner, background_runners, outputs, result):
"""join (wait for) a runner, exit process at runner failure
+ :param background_runners:
+ :type background_runners:
:param outputs:
:type outputs: dict
:param result:
:type result: list
"""
+ while runner.poll() is None:
+ outputs.update(runner.get_output())
+ result.extend(runner.get_result())
+ # drain all the background runner queues
+ for background in background_runners:
+ outputs.update(background.get_output())
+ result.extend(background.get_result())
status = runner.join(outputs, result)
base_runner.Runner.release(runner)
return status
diff --git a/yardstick/benchmark/runners/base.py b/yardstick/benchmark/runners/base.py
index 13718d793..a887fa5b3 100755
--- a/yardstick/benchmark/runners/base.py
+++ b/yardstick/benchmark/runners/base.py
@@ -210,6 +210,10 @@ class Runner(object):
QUEUE_JOIN_INTERVAL = 5
+ def poll(self, timeout=QUEUE_JOIN_INTERVAL):
+ self.process.join(timeout)
+ return self.process.exitcode
+
def join(self, outputs, result, interval=QUEUE_JOIN_INTERVAL):
while self.process.exitcode is None:
# drain the queue while we are running otherwise we won't terminate
diff --git a/yardstick/benchmark/scenarios/compute/qemu_migrate_benchmark.bash b/yardstick/benchmark/scenarios/compute/qemu_migrate_benchmark.bash
index d9a440c89..757553e8b 100644
--- a/yardstick/benchmark/scenarios/compute/qemu_migrate_benchmark.bash
+++ b/yardstick/benchmark/scenarios/compute/qemu_migrate_benchmark.bash
@@ -21,15 +21,24 @@ max_down_time=$6
OUTPUT_FILE=/tmp/output-qemu.log
+echo "To check the parameters:"
+echo "SRC: $src"
+echo "DST: $dst"
+echo "DST_IP: $dst_ip"
+echo "MIGRATE_PORT: $migrate_to_port"
+echo "DOWN_TIME: $max_down_time"
+
do_migrate()
{
+ echo "Execution of Live Migration"
+
echo "info status" | nc -U $src
# with no speed limit
- echo "migrate_set_speed 0" |nc -U $src
+ echo "migrate_set_speed 0" | nc -U $src
# set the expected max downtime
- echo "migrate_set_downtime ${max_down_time}" |nc -U $src
+ echo "migrate_set_downtime ${max_down_time}" | nc -U $src
# start live migration
- echo "migrate -d tcp:${dst_ip}:$migrate_to_port" |nc -U $src
+ echo "migrate -d tcp:${dst_ip}:${migrate_to_port}" | nc -U $src
# wait until live migration completed
status=""
while [ "${status}" == "" ]
@@ -38,14 +47,17 @@ do_migrate()
echo ${status}
sleep 1;
done
-} >/dev/null
+
+ echo "End of Live Migration"
+}
output_qemu()
{
+ echo "Checking status of Migration"
# print detail information
echo "info migrate" | nc -U $src
echo "quit" | nc -U $src
- echo "quit" | nc -u $dst
+ echo "quit" | nc -U $dst
sleep 5
echo "Migration executed successfully"
@@ -65,8 +77,11 @@ echo -e "{ \
# main entry
main()
{
+ echo "Perform LiveMigration"
do_migrate
+ echo "LiveMigration Status"
output_qemu
+ echo "LiveMigration JSON output "
output_json
}
main
diff --git a/yardstick/benchmark/scenarios/networking/ping.py b/yardstick/benchmark/scenarios/networking/ping.py
index 3bade73e2..e7d9beea8 100644
--- a/yardstick/benchmark/scenarios/networking/ping.py
+++ b/yardstick/benchmark/scenarios/networking/ping.py
@@ -24,6 +24,8 @@ LOG = logging.getLogger(__name__)
class Ping(base.Scenario):
"""Execute ping between two hosts
+ If ping error, RTT will be set to 999999
+
Parameters
packetsize - number of data bytes to send
type: int
@@ -33,6 +35,8 @@ class Ping(base.Scenario):
__scenario_type__ = "Ping"
+ PING_ERROR_RTT = 999999
+
TARGET_SCRIPT = 'ping_benchmark.bash'
def __init__(self, scenario_cfg, context_cfg):
@@ -60,6 +64,7 @@ class Ping(base.Scenario):
rtt_result = {}
ping_result = {"rtt": rtt_result}
+ sla_max_rtt = self.scenario_cfg.get("sla", {}).get("max_rtt")
for pos, dest in enumerate(dest_list):
if 'targets' in self.scenario_cfg:
@@ -76,20 +81,34 @@ class Ping(base.Scenario):
if exit_status != 0:
raise RuntimeError(stderr)
+ if isinstance(target_vm, dict):
+ target_vm_name = target_vm.get("name")
+ else:
+ target_vm_name = target_vm.split('.')[0]
if stdout:
- if isinstance(target_vm, dict):
- target_vm_name = target_vm.get("name")
- else:
- target_vm_name = target_vm.split('.')[0]
- rtt_result[target_vm_name] = float(stdout)
- if "sla" in self.scenario_cfg:
- sla_max_rtt = int(self.scenario_cfg["sla"]["max_rtt"])
+ rtt_result[target_vm_name] = float(stdout.strip())
+ # store result before potential AssertionError
+ result.update(utils.flatten_dict_key(ping_result))
+ if sla_max_rtt is not None:
+ sla_max_rtt = float(sla_max_rtt)
assert rtt_result[target_vm_name] <= sla_max_rtt,\
"rtt %f > sla: max_rtt(%f); " % \
(rtt_result[target_vm_name], sla_max_rtt)
else:
LOG.error("ping '%s' '%s' timeout", options, target_vm)
- result.update(utils.flatten_dict_key(ping_result))
+ # we need to specify a result to satisfy influxdb schema
+ # choose a very large number to inidcate timeout
+ # in this case choose an order of magnitude greater than the SLA
+ rtt_result[target_vm_name] = float(self.PING_ERROR_RTT)
+ # store result before potential AssertionError
+ result.update(utils.flatten_dict_key(ping_result))
+ if sla_max_rtt is not None:
+ raise AssertionError("packet dropped rtt {:f} > sla: max_rtt({:f})".format(
+ rtt_result[target_vm_name], sla_max_rtt))
+
+ else:
+ raise AssertionError(
+ "packet dropped rtt {:f}".format(rtt_result[target_vm_name]))
def _test(): # pragma: no cover
diff --git a/yardstick/benchmark/scenarios/networking/vnf_generic.py b/yardstick/benchmark/scenarios/networking/vnf_generic.py
index 0fab45480..b94bfc9ab 100644
--- a/yardstick/benchmark/scenarios/networking/vnf_generic.py
+++ b/yardstick/benchmark/scenarios/networking/vnf_generic.py
@@ -190,6 +190,12 @@ class NetworkServiceTestCase(base.Scenario):
for index, publicip in enumerate(fflow.get("public_ip", [])):
flow["public_ip_{}".format(index)] = publicip
+ for index, src_port in enumerate(fflow.get("src_port", [])):
+ flow["src_port_{}".format(index)] = src_port
+
+ for index, dst_port in enumerate(fflow.get("dst_port", [])):
+ flow["dst_port_{}".format(index)] = dst_port
+
flow["count"] = fflow["count"]
except KeyError:
flow = {}
diff --git a/yardstick/cmd/NSBperf.py b/yardstick/cmd/NSBperf.py
index 2dc0f65e7..5d0aa746d 100755
--- a/yardstick/cmd/NSBperf.py
+++ b/yardstick/cmd/NSBperf.py
@@ -150,8 +150,24 @@ class YardstickNSCli(object):
testcases = os.listdir(test_path + vnf)
print(("VNF :(%s)" % vnf))
print("================")
- for testcase in [tc for tc in testcases if "tc_" in tc]:
- print('%s' % testcase)
+ test_cases = [tc for tc in testcases if "tc_" in tc and "template" not in tc]
+
+ print("\tBareMetal Testcase:")
+ print("\t===================")
+ for testcase in [tc for tc in test_cases if "baremetal" in tc]:
+ print("\t%s" % testcase)
+
+ print(os.linesep)
+ print("\tStandalone Virtualization Testcase:")
+ print("\t===================================")
+ for testcase in [tc for tc in test_cases if "ovs" in tc or "sriov" in tc]:
+ print("\t%s" % testcase)
+
+ print(os.linesep)
+ print("\tOpenstack Testcase:")
+ print("\t===================")
+ for testcase in [tc for tc in test_cases if "heat" in tc]:
+ print("\t%s" % testcase)
print(os.linesep)
raise SystemExit(0)
diff --git a/yardstick/dispatcher/influxdb.py b/yardstick/dispatcher/influxdb.py
index f157e91f9..632b433b5 100644
--- a/yardstick/dispatcher/influxdb.py
+++ b/yardstick/dispatcher/influxdb.py
@@ -55,7 +55,9 @@ class InfluxdbDispatcher(DispatchBase):
for case, data in testcases.items():
tc_criteria = data['criteria']
for record in data['tc_data']:
- self._upload_one_record(record, case, tc_criteria)
+ # skip results with no data because we influxdb encode empty dicts
+ if record.get("data"):
+ self._upload_one_record(record, case, tc_criteria)
return 0
diff --git a/yardstick/network_services/collector/subscriber.py b/yardstick/network_services/collector/subscriber.py
index d560e1d42..4dc5a796e 100644
--- a/yardstick/network_services/collector/subscriber.py
+++ b/yardstick/network_services/collector/subscriber.py
@@ -23,18 +23,6 @@ LOG = logging.getLogger(__name__)
class Collector(object):
"""Class that handles dictionary of results in yardstick-plot format."""
- @staticmethod
- def make_resource_profile(node, timeout):
- # node dict works as mgmt dict
- # don't need port names, there is no way we can
- # tell what port is used on the compute node
- collectd_options = node["collectd"]
- plugins = collectd_options.get("plugins", {})
- interval = collectd_options.get("interval")
-
- # use default cores = None to MatchAllCores
- return ResourceProfile(node, plugins=plugins, interval=interval, timeout=timeout)
-
def __init__(self, vnfs, nodes, traffic_profile, timeout=3600):
super(Collector, self).__init__()
self.traffic_profile = traffic_profile
@@ -42,7 +30,7 @@ class Collector(object):
self.nodes = nodes
self.timeout = timeout
self.bin_path = get_nsb_option('bin_path', '')
- self.resource_profiles = {node_name: self.make_resource_profile(node, self.timeout)
+ self.resource_profiles = {node_name: ResourceProfile.make_from_node(node, self.timeout)
for node_name, node in self.nodes.items()
if node.get("collectd")}
diff --git a/yardstick/network_services/vnf_generic/vnf/iniparser.py b/yardstick/network_services/helpers/iniparser.py
index 98256e08a..98256e08a 100644
--- a/yardstick/network_services/vnf_generic/vnf/iniparser.py
+++ b/yardstick/network_services/helpers/iniparser.py
diff --git a/yardstick/network_services/helpers/samplevnf_helper.py b/yardstick/network_services/helpers/samplevnf_helper.py
index 0174d9c0d..4718bbd59 100644
--- a/yardstick/network_services/helpers/samplevnf_helper.py
+++ b/yardstick/network_services/helpers/samplevnf_helper.py
@@ -55,6 +55,10 @@ SCRIPT_TPL = """
{arp_config6}
+{arp_route_tbl}
+
+{arp_route_tbl6}
+
{actions}
{rules}
@@ -345,30 +349,28 @@ class MultiPortConfig(object):
"".join(("{},".format(port_list.index(x)) for x in uplink_ports)))
def generate_arp_route_tbl(self):
- arp_route_tbl_tmpl = "({port0_dst_ip_hex},{port0_netmask_hex},{port_num}," \
- "{next_hop_ip_hex})"
+ arp_route_tbl_tmpl = "routeadd net {port_num} {port_dst_ip} 0x{port_netmask_hex}"
def build_arp_config(port):
dpdk_port_num = self.vnfd_helper.port_num(port)
interface = self.vnfd_helper.find_interface(name=port)["virtual-interface"]
# We must use the dst because we are on the VNF and we need to
# reach the TG.
- dst_port0_ip = ipaddress.ip_interface(six.text_type(
+ dst_port_ip = ipaddress.ip_interface(six.text_type(
"%s/%s" % (interface["dst_ip"], interface["netmask"])))
arp_vars = {
- "port0_dst_ip_hex": ip_to_hex(dst_port0_ip.network.network_address.exploded),
- "port0_netmask_hex": ip_to_hex(dst_port0_ip.network.netmask.exploded),
+ "port_netmask_hex": ip_to_hex(dst_port_ip.network.netmask.exploded),
# this is the port num that contains port0 subnet and next_hop_ip_hex
# this is LINKID which should be based on DPDK port number
"port_num": dpdk_port_num,
# next hop is dst in this case
# must be within subnet
- "next_hop_ip_hex": ip_to_hex(dst_port0_ip.ip.exploded),
+ "port_dst_ip": str(dst_port_ip.ip),
}
return arp_route_tbl_tmpl.format(**arp_vars)
- return ' '.join(build_arp_config(port) for port in self.all_ports)
+ return '\n'.join(build_arp_config(port) for port in self.all_ports)
def generate_arpicmp_data(self):
swq_in_str = self.make_range_str('SWQ{}', self.swq, offset=self.lb_count)
@@ -391,11 +393,6 @@ class MultiPortConfig(object):
# 'ports_mac_list': ' '.join(mac_iter),
'pktq_in_prv': ' '.join(pktq_in_iter),
'prv_to_pub_map': self.set_priv_to_pub_mapping(),
- 'arp_route_tbl': self.generate_arp_route_tbl(),
- # nd_route_tbl must be set or we get segault on random OpenStack IPv6 traffic
- # 'nd_route_tbl': "(0064:ff9b:0:0:0:0:9810:6414,120,0,0064:ff9b:0:0:0:0:9810:6414)"
- # safe default? route discard prefix to localhost
- 'nd_route_tbl': "(0100::,64,0,::1)"
}
self.pktq_out_os = swq_out_str.split(' ')
# HWLB is a run to complition. So override the pktq_in/pktq_out
@@ -710,6 +707,9 @@ class MultiPortConfig(object):
# disable IPv6 for now
# 'arp_config6': self.generate_arp_config6(),
'arp_config6': "",
+ 'arp_config': self.generate_arp_config(),
+ 'arp_route_tbl': self.generate_arp_route_tbl(),
+ 'arp_route_tbl6': "",
'actions': '',
'rules': '',
}
diff --git a/yardstick/network_services/nfvi/resource.py b/yardstick/network_services/nfvi/resource.py
index dea754d8b..5b96aaf29 100644
--- a/yardstick/network_services/nfvi/resource.py
+++ b/yardstick/network_services/nfvi/resource.py
@@ -82,6 +82,18 @@ class ResourceProfile(object):
self.mgmt = mgmt
self.connection = ssh.AutoConnectSSH.from_node(mgmt)
+ @classmethod
+ def make_from_node(cls, node, timeout):
+ # node dict works as mgmt dict
+ # don't need port names, there is no way we can
+ # tell what port is used on the compute node
+ collectd_options = node["collectd"]
+ plugins = collectd_options.get("plugins", {})
+ interval = collectd_options.get("interval")
+
+ # use default cores = None to MatchAllCores
+ return cls(node, plugins=plugins, interval=interval, timeout=timeout)
+
def check_if_sa_running(self, process):
""" verify if system agent is running """
try:
diff --git a/yardstick/network_services/vnf_generic/vnf/prox_helpers.py b/yardstick/network_services/vnf_generic/vnf/prox_helpers.py
index 992b6d06e..ac5abfbcb 100644
--- a/yardstick/network_services/vnf_generic/vnf/prox_helpers.py
+++ b/yardstick/network_services/vnf_generic/vnf/prox_helpers.py
@@ -14,28 +14,27 @@
from __future__ import absolute_import
import array
-import operator
-import logging
import io
+import logging
+import operator
import os
import re
import select
import socket
-
-from collections import OrderedDict, namedtuple
import time
+from collections import OrderedDict, namedtuple
from contextlib import contextmanager
from itertools import repeat, chain
from multiprocessing import Queue
import six
-from six.moves import zip, StringIO
from six.moves import cStringIO
+from six.moves import zip, StringIO
from yardstick.benchmark.scenarios.networking.vnf_generic import find_relative_file
from yardstick.common import utils
from yardstick.common.utils import SocketTopology, join_non_strings, try_int
-from yardstick.network_services.vnf_generic.vnf.iniparser import ConfigParser
+from yardstick.network_services.helpers.iniparser import ConfigParser
from yardstick.network_services.vnf_generic.vnf.sample_vnf import ClientResourceHelper
from yardstick.network_services.vnf_generic.vnf.sample_vnf import DpdkVnfSetupEnvHelper
diff --git a/yardstick/network_services/vnf_generic/vnf/sample_vnf.py b/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
index 92f78c2bc..06f259685 100644
--- a/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
+++ b/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
@@ -685,6 +685,7 @@ class SampleVNF(GenericVNF):
VNF_PROMPT = "pipeline>"
WAIT_TIME = 1
+ WAIT_TIME_FOR_SCRIPT = 10
APP_NAME = "SampleVNF"
# we run the VNF interactively, so the ssh command will timeout after this long
@@ -811,7 +812,7 @@ class SampleVNF(GenericVNF):
self.APP_NAME)
LOG.info("Waiting for %s VNF to start.. ", self.APP_NAME)
- time.sleep(1)
+ time.sleep(self.WAIT_TIME_FOR_SCRIPT)
# Send ENTER to display a new prompt in case the prompt text was corrupted
# by other VNF output
self.q_in.put('\r\n')