From b9bd7a7b582dff2a8186c58a1fc9de4a219fcb1f Mon Sep 17 00:00:00 2001 From: Edward MacGillivray Date: Fri, 18 Aug 2017 10:41:03 -0700 Subject: Refactor to make file sys more like class inheritance Change-Id: I5471d2e894ca78407a57f3ba01202264c69ad174 Signed-off-by: Edward MacGillivray --- .../benchmark/contexts/ovs_sample_password.yaml | 104 ----- .../benchmark/contexts/ovs_sample_ssh_key.yaml | 69 ---- .../contexts/ovs_sample_write_to_file.txt | 1 - .../benchmark/contexts/sriov_sample_password.yaml | 52 --- .../benchmark/contexts/sriov_sample_ssh_key.yaml | 54 --- .../contexts/sriov_sample_write_to_file.txt | 1 - .../unit/benchmark/contexts/standalone/__init__.py | 0 .../contexts/standalone/ovs_sample_password.yaml | 104 +++++ .../contexts/standalone/ovs_sample_ssh_key.yaml | 69 ++++ .../standalone/ovs_sample_write_to_file.txt | 1 + .../contexts/standalone/sriov_sample_password.yaml | 52 +++ .../contexts/standalone/sriov_sample_ssh_key.yaml | 54 +++ .../standalone/sriov_sample_write_to_file.txt | 1 + .../benchmark/contexts/standalone/test_ovsdpdk.py | 327 ++++++++++++++++ .../benchmark/contexts/standalone/test_sriov.py | 423 +++++++++++++++++++++ tests/unit/benchmark/contexts/test_ovsdpdk.py | 325 ---------------- tests/unit/benchmark/contexts/test_sriov.py | 421 -------------------- tests/unit/benchmark/contexts/test_standalone.py | 17 +- 18 files changed, 1040 insertions(+), 1035 deletions(-) delete mode 100644 tests/unit/benchmark/contexts/ovs_sample_password.yaml delete mode 100644 tests/unit/benchmark/contexts/ovs_sample_ssh_key.yaml delete mode 100644 tests/unit/benchmark/contexts/ovs_sample_write_to_file.txt delete mode 100644 tests/unit/benchmark/contexts/sriov_sample_password.yaml delete mode 100644 tests/unit/benchmark/contexts/sriov_sample_ssh_key.yaml delete mode 100644 tests/unit/benchmark/contexts/sriov_sample_write_to_file.txt create mode 100644 tests/unit/benchmark/contexts/standalone/__init__.py create mode 100644 tests/unit/benchmark/contexts/standalone/ovs_sample_password.yaml create mode 100644 tests/unit/benchmark/contexts/standalone/ovs_sample_ssh_key.yaml create mode 100644 tests/unit/benchmark/contexts/standalone/ovs_sample_write_to_file.txt create mode 100644 tests/unit/benchmark/contexts/standalone/sriov_sample_password.yaml create mode 100644 tests/unit/benchmark/contexts/standalone/sriov_sample_ssh_key.yaml create mode 100644 tests/unit/benchmark/contexts/standalone/sriov_sample_write_to_file.txt create mode 100644 tests/unit/benchmark/contexts/standalone/test_ovsdpdk.py create mode 100644 tests/unit/benchmark/contexts/standalone/test_sriov.py delete mode 100644 tests/unit/benchmark/contexts/test_ovsdpdk.py delete mode 100644 tests/unit/benchmark/contexts/test_sriov.py (limited to 'tests/unit') diff --git a/tests/unit/benchmark/contexts/ovs_sample_password.yaml b/tests/unit/benchmark/contexts/ovs_sample_password.yaml deleted file mode 100644 index b1da1ea9f..000000000 --- a/tests/unit/benchmark/contexts/ovs_sample_password.yaml +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (c) 2016 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: -- - name: trafficgen_1 - role: TrafficGen - ip: 10.223.197.182 - user: root - auth_type: password - password: intel123 - interfaces: - xe0: # logical name from topology.yaml and vnfd.yaml - vpci: "0000:03:00.0" - driver: ixgbe - dpdk_port_num: 0 - local_ip: "152.16.100.20" - netmask: "255.255.255.0" - local_mac: "90:e2:ba:77:ce:68" - xe1: # logical name from topology.yaml and vnfd.yaml - vpci: "0000:03:00.1" - driver: ixgbe - dpdk_port_num: 1 - local_ip: "152.16.100.21" - netmask: "255.255.255.0" - local_mac: "90:e2:ba:77:ce:69" -- - name: ovs - role: Ovsdpdk - ip: 10.223.197.222 - user: root - auth_type: password - password: intel123 - vpath: "/usr/local/" - vports: - - dpdkvhostuser0 - - dpdkvhostuser1 - vports_mac: - - "00:00:00:00:00:03" - - "00:00:00:00:00:04" - phy_ports: # Physical ports to configure ovs - - "0000:06:00.0" - - "0000:06:00.1" - flow: - - ovs-ofctl add-flow br0 in_port=1,action=output:3 - - ovs-ofctl add-flow br0 in_port=3,action=output:1 - - ovs-ofctl add-flow br0 in_port=4,action=output:2 - - ovs-ofctl add-flow br0 in_port=2,action=output:4 - phy_driver: i40e # kernel driver - images: "/var/lib/libvirt/images/ubuntu1.img" - -- - name: vnf - role: vnf - ip: 10.223.197.155 - user: root - auth_type: password - password: intel123 - host: 10.223.197.140 - interfaces: - xe0: # logical name from topology.yaml and vnfd.yaml - vpci: "0000:00:04.0" - driver: virtio-pci - dpdk_port_num: 0 - local_ip: "152.16.100.19" - netmask: "255.255.255.0" - local_mac: "00:00:00:00:00:03" - - xe1: # logical name from topology.yaml and vnfd.yaml - vpci: "0000:00:05.0" - driver: virtio-pci - dpdk_port_num: 1 - local_ip: "152.16.40.19" - netmask: "255.255.255.0" - local_mac: "00:00:00:00:00:04" - routing_table: - - network: "152.16.100.20" - netmask: "255.255.255.0" - gateway: "152.16.100.20" - if: "xe0" - - network: "152.16.40.20" - netmask: "255.255.255.0" - gateway: "152.16.40.20" - if: "xe1" - nd_route_tbl: - - network: "0064:ff9b:0:0:0:0:9810:6414" - netmask: "112" - gateway: "0064:ff9b:0:0:0:0:9810:6414" - if: "xe0" - - network: "0064:ff9b:0:0:0:0:9810:2814" - netmask: "112" - gateway: "0064:ff9b:0:0:0:0:9810:2814" - if: "xe1" diff --git a/tests/unit/benchmark/contexts/ovs_sample_ssh_key.yaml b/tests/unit/benchmark/contexts/ovs_sample_ssh_key.yaml deleted file mode 100644 index 896ec33bb..000000000 --- a/tests/unit/benchmark/contexts/ovs_sample_ssh_key.yaml +++ /dev/null @@ -1,69 +0,0 @@ -############################################################################## -# Copyright (c) 2015 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 -############################################################################## ---- -# Sample config file about the POD information, including the -# name/IP/user/ssh key of Bare Metal and Controllers/Computes -# -# The options of this config file include: -# name: the name of this node -# role: node's role, support role: Master/Controller/Comupte/BareMetal -# ip: the node's IP address -# user: the username for login -# key_filename:the path of the private key file for login - -nodes: -- - name: trafficgen_1 - role: TrafficGen - ip: 10.10.10.10 - auth_type: ssh_key - user: root - ssh_port: 22 - key_filename: /root/.ssh/id_rsa - interfaces: - xe0: # logical name from topology.yaml and vnfd.yaml - vpci: "0000:03:00.0" - driver: ixgbe - dpdk_port_num: 0 - local_ip: "152.16.100.20" - netmask: "255.255.255.0" - local_mac: "90:e2:ba:77:ce:68" - xe1: # logical name from topology.yaml and vnfd.yaml - vpci: "0000:03:00.1" - driver: ixgbe - dpdk_port_num: 1 - local_ip: "152.16.100.21" - netmask: "255.255.255.0" - local_mac: "90:e2:ba:77:ce:69" -- - name: ovs - role: Ovsdpdk - ip: 10.223.197.222 - auth_type: ssh_key - user: root - ssh_port: 22 - key_filename: /root/.ssh/id_rsa - vpath: "/usr/local/" - vports: - - dpdkvhostuser0 - - dpdkvhostuser1 - vports_mac: - - "00:00:00:00:00:03" - - "00:00:00:00:00:04" - phy_ports: # Physical ports to configure ovs - - "0000:06:00.0" - - "0000:06:00.1" - flow: - - ovs-ofctl add-flow br0 in_port=1,action=output:3 - - ovs-ofctl add-flow br0 in_port=3,action=output:1 - - ovs-ofctl add-flow br0 in_port=4,action=output:2 - - ovs-ofctl add-flow br0 in_port=2,action=output:4 - phy_driver: i40e # kernel driver - images: "/var/lib/libvirt/images/ubuntu1.img" - diff --git a/tests/unit/benchmark/contexts/ovs_sample_write_to_file.txt b/tests/unit/benchmark/contexts/ovs_sample_write_to_file.txt deleted file mode 100644 index f0eec86f6..000000000 --- a/tests/unit/benchmark/contexts/ovs_sample_write_to_file.txt +++ /dev/null @@ -1 +0,0 @@ -some content \ No newline at end of file diff --git a/tests/unit/benchmark/contexts/sriov_sample_password.yaml b/tests/unit/benchmark/contexts/sriov_sample_password.yaml deleted file mode 100644 index 4f60e46d5..000000000 --- a/tests/unit/benchmark/contexts/sriov_sample_password.yaml +++ /dev/null @@ -1,52 +0,0 @@ -# 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. - -nodes: -- - name: trafficgen_1 - role: TrafficGen - ip: 10.10.10.10 - auth_type: password - user: root - password: password - interfaces: - xe0: # logical name from topology.yaml and vnfd.yaml - vpci: "0000:03:00.0" - driver: ixgbe - dpdk_port_num: 0 - local_ip: "152.16.100.20" - netmask: "255.255.255.0" - local_mac: "90:e2:ba:77:ce:68" - xe1: # logical name from topology.yaml and vnfd.yaml - vpci: "0000:03:00.1" - driver: ixgbe - dpdk_port_num: 1 - local_ip: "152.16.100.21" - netmask: "255.255.255.0" - local_mac: "90:e2:ba:77:ce:69" -- - name: sriov - role: Sriov - ip: 10.10.10.11 - auth_type: password - user: root - password: password - vf_macs: - - "00:00:00:71:7d:25" - - "00:00:00:71:7d:26" - phy_ports: # Physical ports to configure sriov - - "0000:06:00.0" - - "0000:06:00.1" - phy_driver: i40e # kernel driver - images: "/var/lib/libvirt/images/ubuntu1.img" diff --git a/tests/unit/benchmark/contexts/sriov_sample_ssh_key.yaml b/tests/unit/benchmark/contexts/sriov_sample_ssh_key.yaml deleted file mode 100644 index faa496771..000000000 --- a/tests/unit/benchmark/contexts/sriov_sample_ssh_key.yaml +++ /dev/null @@ -1,54 +0,0 @@ -# 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. - -nodes: -- - name: trafficgen_1 - role: TrafficGen - ip: 10.10.10.10 - auth_type: ssh_key - user: root - ssh_port: 22 - key_filename: /root/.ssh/id_rsa - interfaces: - xe0: # logical name from topology.yaml and vnfd.yaml - vpci: "0000:03:00.0" - driver: ixgbe - dpdk_port_num: 0 - local_ip: "152.16.100.20" - netmask: "255.255.255.0" - local_mac: "90:e2:ba:77:ce:68" - xe1: # logical name from topology.yaml and vnfd.yaml - vpci: "0000:03:00.1" - driver: ixgbe - dpdk_port_num: 1 - local_ip: "152.16.100.21" - netmask: "255.255.255.0" - local_mac: "90:e2:ba:77:ce:69" -- - name: sriov - role: Sriov - ip: 10.10.10.11 - auth_type: ssh_key - user: root - ssh_port: 22 - key_filename: /root/.ssh/id_rsa - vf_macs: - - "00:00:00:71:7d:25" - - "00:00:00:71:7d:26" - phy_ports: # Physical ports to configure sriov - - "0000:06:00.0" - - "0000:06:00.1" - phy_driver: i40e # kernel driver - images: "/var/lib/libvirt/images/ubuntu1.img" diff --git a/tests/unit/benchmark/contexts/sriov_sample_write_to_file.txt b/tests/unit/benchmark/contexts/sriov_sample_write_to_file.txt deleted file mode 100644 index f0eec86f6..000000000 --- a/tests/unit/benchmark/contexts/sriov_sample_write_to_file.txt +++ /dev/null @@ -1 +0,0 @@ -some content \ No newline at end of file diff --git a/tests/unit/benchmark/contexts/standalone/__init__.py b/tests/unit/benchmark/contexts/standalone/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/unit/benchmark/contexts/standalone/ovs_sample_password.yaml b/tests/unit/benchmark/contexts/standalone/ovs_sample_password.yaml new file mode 100644 index 000000000..b1da1ea9f --- /dev/null +++ b/tests/unit/benchmark/contexts/standalone/ovs_sample_password.yaml @@ -0,0 +1,104 @@ +# Copyright (c) 2016 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: +- + name: trafficgen_1 + role: TrafficGen + ip: 10.223.197.182 + user: root + auth_type: password + password: intel123 + interfaces: + xe0: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:03:00.0" + driver: ixgbe + dpdk_port_num: 0 + local_ip: "152.16.100.20" + netmask: "255.255.255.0" + local_mac: "90:e2:ba:77:ce:68" + xe1: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:03:00.1" + driver: ixgbe + dpdk_port_num: 1 + local_ip: "152.16.100.21" + netmask: "255.255.255.0" + local_mac: "90:e2:ba:77:ce:69" +- + name: ovs + role: Ovsdpdk + ip: 10.223.197.222 + user: root + auth_type: password + password: intel123 + vpath: "/usr/local/" + vports: + - dpdkvhostuser0 + - dpdkvhostuser1 + vports_mac: + - "00:00:00:00:00:03" + - "00:00:00:00:00:04" + phy_ports: # Physical ports to configure ovs + - "0000:06:00.0" + - "0000:06:00.1" + flow: + - ovs-ofctl add-flow br0 in_port=1,action=output:3 + - ovs-ofctl add-flow br0 in_port=3,action=output:1 + - ovs-ofctl add-flow br0 in_port=4,action=output:2 + - ovs-ofctl add-flow br0 in_port=2,action=output:4 + phy_driver: i40e # kernel driver + images: "/var/lib/libvirt/images/ubuntu1.img" + +- + name: vnf + role: vnf + ip: 10.223.197.155 + user: root + auth_type: password + password: intel123 + host: 10.223.197.140 + interfaces: + xe0: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:00:04.0" + driver: virtio-pci + dpdk_port_num: 0 + local_ip: "152.16.100.19" + netmask: "255.255.255.0" + local_mac: "00:00:00:00:00:03" + + xe1: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:00:05.0" + driver: virtio-pci + dpdk_port_num: 1 + local_ip: "152.16.40.19" + netmask: "255.255.255.0" + local_mac: "00:00:00:00:00:04" + routing_table: + - network: "152.16.100.20" + netmask: "255.255.255.0" + gateway: "152.16.100.20" + if: "xe0" + - network: "152.16.40.20" + netmask: "255.255.255.0" + gateway: "152.16.40.20" + if: "xe1" + nd_route_tbl: + - network: "0064:ff9b:0:0:0:0:9810:6414" + netmask: "112" + gateway: "0064:ff9b:0:0:0:0:9810:6414" + if: "xe0" + - network: "0064:ff9b:0:0:0:0:9810:2814" + netmask: "112" + gateway: "0064:ff9b:0:0:0:0:9810:2814" + if: "xe1" diff --git a/tests/unit/benchmark/contexts/standalone/ovs_sample_ssh_key.yaml b/tests/unit/benchmark/contexts/standalone/ovs_sample_ssh_key.yaml new file mode 100644 index 000000000..896ec33bb --- /dev/null +++ b/tests/unit/benchmark/contexts/standalone/ovs_sample_ssh_key.yaml @@ -0,0 +1,69 @@ +############################################################################## +# Copyright (c) 2015 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 +############################################################################## +--- +# Sample config file about the POD information, including the +# name/IP/user/ssh key of Bare Metal and Controllers/Computes +# +# The options of this config file include: +# name: the name of this node +# role: node's role, support role: Master/Controller/Comupte/BareMetal +# ip: the node's IP address +# user: the username for login +# key_filename:the path of the private key file for login + +nodes: +- + name: trafficgen_1 + role: TrafficGen + ip: 10.10.10.10 + auth_type: ssh_key + user: root + ssh_port: 22 + key_filename: /root/.ssh/id_rsa + interfaces: + xe0: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:03:00.0" + driver: ixgbe + dpdk_port_num: 0 + local_ip: "152.16.100.20" + netmask: "255.255.255.0" + local_mac: "90:e2:ba:77:ce:68" + xe1: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:03:00.1" + driver: ixgbe + dpdk_port_num: 1 + local_ip: "152.16.100.21" + netmask: "255.255.255.0" + local_mac: "90:e2:ba:77:ce:69" +- + name: ovs + role: Ovsdpdk + ip: 10.223.197.222 + auth_type: ssh_key + user: root + ssh_port: 22 + key_filename: /root/.ssh/id_rsa + vpath: "/usr/local/" + vports: + - dpdkvhostuser0 + - dpdkvhostuser1 + vports_mac: + - "00:00:00:00:00:03" + - "00:00:00:00:00:04" + phy_ports: # Physical ports to configure ovs + - "0000:06:00.0" + - "0000:06:00.1" + flow: + - ovs-ofctl add-flow br0 in_port=1,action=output:3 + - ovs-ofctl add-flow br0 in_port=3,action=output:1 + - ovs-ofctl add-flow br0 in_port=4,action=output:2 + - ovs-ofctl add-flow br0 in_port=2,action=output:4 + phy_driver: i40e # kernel driver + images: "/var/lib/libvirt/images/ubuntu1.img" + diff --git a/tests/unit/benchmark/contexts/standalone/ovs_sample_write_to_file.txt b/tests/unit/benchmark/contexts/standalone/ovs_sample_write_to_file.txt new file mode 100644 index 000000000..f0eec86f6 --- /dev/null +++ b/tests/unit/benchmark/contexts/standalone/ovs_sample_write_to_file.txt @@ -0,0 +1 @@ +some content \ No newline at end of file diff --git a/tests/unit/benchmark/contexts/standalone/sriov_sample_password.yaml b/tests/unit/benchmark/contexts/standalone/sriov_sample_password.yaml new file mode 100644 index 000000000..4f60e46d5 --- /dev/null +++ b/tests/unit/benchmark/contexts/standalone/sriov_sample_password.yaml @@ -0,0 +1,52 @@ +# 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. + +nodes: +- + name: trafficgen_1 + role: TrafficGen + ip: 10.10.10.10 + auth_type: password + user: root + password: password + interfaces: + xe0: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:03:00.0" + driver: ixgbe + dpdk_port_num: 0 + local_ip: "152.16.100.20" + netmask: "255.255.255.0" + local_mac: "90:e2:ba:77:ce:68" + xe1: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:03:00.1" + driver: ixgbe + dpdk_port_num: 1 + local_ip: "152.16.100.21" + netmask: "255.255.255.0" + local_mac: "90:e2:ba:77:ce:69" +- + name: sriov + role: Sriov + ip: 10.10.10.11 + auth_type: password + user: root + password: password + vf_macs: + - "00:00:00:71:7d:25" + - "00:00:00:71:7d:26" + phy_ports: # Physical ports to configure sriov + - "0000:06:00.0" + - "0000:06:00.1" + phy_driver: i40e # kernel driver + images: "/var/lib/libvirt/images/ubuntu1.img" diff --git a/tests/unit/benchmark/contexts/standalone/sriov_sample_ssh_key.yaml b/tests/unit/benchmark/contexts/standalone/sriov_sample_ssh_key.yaml new file mode 100644 index 000000000..faa496771 --- /dev/null +++ b/tests/unit/benchmark/contexts/standalone/sriov_sample_ssh_key.yaml @@ -0,0 +1,54 @@ +# 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. + +nodes: +- + name: trafficgen_1 + role: TrafficGen + ip: 10.10.10.10 + auth_type: ssh_key + user: root + ssh_port: 22 + key_filename: /root/.ssh/id_rsa + interfaces: + xe0: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:03:00.0" + driver: ixgbe + dpdk_port_num: 0 + local_ip: "152.16.100.20" + netmask: "255.255.255.0" + local_mac: "90:e2:ba:77:ce:68" + xe1: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:03:00.1" + driver: ixgbe + dpdk_port_num: 1 + local_ip: "152.16.100.21" + netmask: "255.255.255.0" + local_mac: "90:e2:ba:77:ce:69" +- + name: sriov + role: Sriov + ip: 10.10.10.11 + auth_type: ssh_key + user: root + ssh_port: 22 + key_filename: /root/.ssh/id_rsa + vf_macs: + - "00:00:00:71:7d:25" + - "00:00:00:71:7d:26" + phy_ports: # Physical ports to configure sriov + - "0000:06:00.0" + - "0000:06:00.1" + phy_driver: i40e # kernel driver + images: "/var/lib/libvirt/images/ubuntu1.img" diff --git a/tests/unit/benchmark/contexts/standalone/sriov_sample_write_to_file.txt b/tests/unit/benchmark/contexts/standalone/sriov_sample_write_to_file.txt new file mode 100644 index 000000000..f0eec86f6 --- /dev/null +++ b/tests/unit/benchmark/contexts/standalone/sriov_sample_write_to_file.txt @@ -0,0 +1 @@ +some content \ No newline at end of file diff --git a/tests/unit/benchmark/contexts/standalone/test_ovsdpdk.py b/tests/unit/benchmark/contexts/standalone/test_ovsdpdk.py new file mode 100644 index 000000000..1d68384c9 --- /dev/null +++ b/tests/unit/benchmark/contexts/standalone/test_ovsdpdk.py @@ -0,0 +1,327 @@ +# 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. + +from __future__ import absolute_import + +import os +import unittest + +import mock + +from yardstick.benchmark.contexts.standalone import ovsdpdk + +NIC_INPUT = { + 'interface': {}, + 'vports_mac': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], + 'pci': ['0000:06:00.0', '0000:06:00.1'], + 'phy_driver': 'i40e'} +DRIVER = "i40e" +NIC_DETAILS = { + 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'}, + 'vports_mac': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], + 'pci': ['0000:06:00.0', '0000:06:00.1'], + 'phy_driver': 'i40e'} + +CORRECT_FILE_PATH = "/etc/yardstick/nodes/pod_ovs.yaml" +WRONG_FILE_PATH = "/etc/yardstick/wrong.yaml" +SAMPLE_FILE = "ovs_sample_write_to_file.txt" + +OVS = [{ + 'auth_type': 'ssh_key', + 'name': 'ovs', + 'ssh_port': 22, + 'ip': '10.10.10.11', + 'key_filename': '/root/.ssh/id_rsa', + 'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'], + 'vpath': '/usr/local/', + 'role': 'Ovsdpdk', + 'user': 'root', + 'images': '/var/lib/libvirt/images/ubuntu1.img', + 'flow': ['ovs-ofctl add-flow br0 in_port=1,action=output:3', + 'ovs-ofctl add-flow br0 in_port=3,action=output:1', + 'ovs-ofctl add-flow br0 in_port=4,action=output:2', + 'ovs-ofctl add-flow br0 in_port=2,action=output:4'], + 'phy_driver': 'i40e', + 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}] + +OVS_PASSWORD = [{ + 'auth_type': 'password', + 'name': 'ovs', + 'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'], + 'ip': '10.10.10.11', + 'role': 'Ovsdpdk', + 'user': 'root', + 'vpath': '/usr/local/', + 'images': '/var/lib/libvirt/images/ubuntu1.img', + 'flow': ['ovs-ofctl add-flow br0 in_port=1,action=output:3', + 'ovs-ofctl add-flow br0 in_port=3,action=output:1', + 'ovs-ofctl add-flow br0 in_port=4,action=output:2', + 'ovs-ofctl add-flow br0 in_port=2,action=output:4'], + 'phy_driver': 'i40e', + 'password': 'password', + 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}] + +#vfnic = "i40evf" +PCIS = ['0000:06:00.0', '0000:06:00.1'] + + +class OvsdpdkTestCase(unittest.TestCase): + + NODES_SAMPLE_SSH = "ovs_sample_ssh_key.yaml" + NODES_SAMPLE_PASSWORD = "ovs_sample_password.yaml" + + def setUp(self): + self.test_context = ovsdpdk.Ovsdpdk() + + def test_construct(self): + self.assertIsNone(self.test_context.name) + self.assertIsNone(self.test_context.file_path) + self.assertEqual(self.test_context.nodes, []) + self.assertEqual(self.test_context.ovs, []) + self.assertFalse(self.test_context.vm_deploy) + self.assertTrue(self.test_context.first_run) + self.assertEqual(self.test_context.user, "") + self.assertEqual(self.test_context.ssh_ip, "") + self.assertEqual(self.test_context.passwd, "") + self.assertEqual(self.test_context.ssh_port, "") + self.assertEqual(self.test_context.auth_type, "") + + def test_init(self): + self.test_context.parse_pod_and_get_data = mock.Mock() + self.test_context.file_path = CORRECT_FILE_PATH + self.test_context.init() + self.assertIsNone(self.test_context.init()) + + def test_successful_init_with_ssh(self): + CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_SSH) + self.test_context.parse_pod_and_get_data(CORRECT_FILE_PATH) + + def test_successful_init_with_password(self): + CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_PASSWORD) + self.test_context.parse_pod_and_get_data(CORRECT_FILE_PATH) + + def test_unsuccessful_init(self): + self.assertRaises( + IOError, + lambda: self.test_context.parse_pod_and_get_data(WRONG_FILE_PATH)) + + def test_ssh_connection(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + + @mock.patch('yardstick.network_services.utils.provision_tool', return_value="b") + def test_ssh_connection(self, mock_prov): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(1, "b", "")) + ssh.return_value = ssh_mock + mock_prov.provision_tool = mock.Mock() + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.connection = ssh_mock + ovs_obj.ovs = OVS_PASSWORD + self.assertIsNone(ovs_obj.ssh_remote_machine()) + + @mock.patch('yardstick.network_services.utils.provision_tool', return_value="b") + def test_ssh_connection_ssh_key(self, mock_prov): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(1, "b", "")) + ssh.return_value = ssh_mock + mock_prov.provision_tool = mock.Mock() + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.connection = ssh_mock + ovs_obj.ovs = OVS + ovs_obj.key_filename = '/root/.ssh/id_rsa' + self.assertIsNone(ovs_obj.ssh_remote_machine()) + + def test_get_nic_details(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, "eth0 eth1", "")) + ssh.return_value = ssh_mock + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.ovs = OVS + ovs_obj.connection = ssh_mock + self.assertIsNotNone(ovs_obj.get_nic_details()) + + def test_install_req_libs(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.first_run = True + ovs_obj.connection = ssh_mock + self.assertIsNone(ovs_obj.install_req_libs()) + + def test_setup_ovs(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.connection = ssh_mock + ovs_obj.ovs = OVS + self.assertIsNone(ovs_obj.setup_ovs({"eth0 eth1"})) + + def test_start_ovs_serverswitch(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.connection = ssh_mock + ovs_obj.ovs = OVS + self.assertIsNone(ovs_obj.start_ovs_serverswitch()) + + def test_setup_ovs_bridge(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.connection = ssh_mock + ovs_obj.ovs = OVS + self.assertIsNone(ovs_obj.setup_ovs_bridge()) + + def test_add_oflows(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.connection = ssh_mock + ovs_obj.ovs = OVS + self.assertIsNone(ovs_obj.add_oflows()) + + def test_setup_ovs_context_vm_already_present(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.connection = ssh_mock + ovs_obj.ovs = OVS + mock_ovs = mock.Mock() + ssh_mock.put = mock.Mock() + ovs_obj.check_output = mock.Mock(return_value=(0, "vm1")) + with mock.patch("yardstick.benchmark.contexts.standalone.ovsdpdk.time"): + self.assertIsNone(ovs_obj.setup_ovs_context(PCIS, NIC_DETAILS, DRIVER)) + + @mock.patch( + 'yardstick.benchmark.contexts.standalone.ovsdpdk', + return_value="Domain vm1 created from /tmp/vm_ovs.xml") + def test_is_vm_created(self, NIC_INPUT): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh_mock.put = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + mock_ovs = mock.Mock() + ret_create = mock.Mock() + pcis = NIC_DETAILS['pci'] + driver = NIC_DETAILS['phy_driver'] + self.assertIsNotNone( + mock_ovs.ovs_obj.setup_ovs_context( + pcis, + NIC_DETAILS, + driver)) + + def test_check_output(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + cmd = "command" + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.connection = ssh_mock + self.assertIsNotNone(ovs_obj.check_output(cmd, None)) + + def test_split_cpu_list_available(self): + with mock.patch("itertools.chain") as iter1: + iter1 = mock.Mock() + print("{0}".format(iter1)) + ovs_obj = ovsdpdk.Ovsdpdk() + self.assertIsNotNone(ovs_obj.split_cpu_list('0,5')) + + def test_split_cpu_list_null(self): + with mock.patch("itertools.chain") as iter1: + iter1 = mock.Mock() + print("{0}".format(iter1)) + ovs_obj = ovsdpdk.Ovsdpdk() + self.assertEqual(ovs_obj.split_cpu_list([]), []) + + def test_destroy_vm_successful(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.connection = ssh_mock + ovs_obj.ovs = OVS + ovs_obj.check_output = mock.Mock(return_value=(0, "vm1")) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh_mock.execute = \ + mock.Mock(return_value=(0, "0 i40e")) + ssh_mock.execute = \ + mock.Mock(return_value=(0, "0 i40e")) + self.assertIsNone(ovs_obj.destroy_vm()) + + def test_destroy_vm_unsuccessful(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + ovs_obj = ovsdpdk.Ovsdpdk() + ovs_obj.connection = ssh_mock + ovs_obj.ovs = OVS + ovs_obj.check_output = mock.Mock(return_value=(1, {})) + self.assertIsNone(ovs_obj.destroy_vm()) + + def test_read_from_file(self): + CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_PASSWORD) + ovs_obj = ovsdpdk.Ovsdpdk() + self.assertIsNotNone(ovs_obj.read_from_file(CORRECT_FILE_PATH)) + + def test_write_to_file(self): + ovs_obj = ovsdpdk.Ovsdpdk() + self.assertIsNone(ovs_obj.write_to_file(SAMPLE_FILE, "some content")) + + def _get_file_abspath(self, filename): + curr_path = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(curr_path, filename) + return file_path + +if __name__ == '__main__': + unittest.main() diff --git a/tests/unit/benchmark/contexts/standalone/test_sriov.py b/tests/unit/benchmark/contexts/standalone/test_sriov.py new file mode 100644 index 000000000..ea72e1bab --- /dev/null +++ b/tests/unit/benchmark/contexts/standalone/test_sriov.py @@ -0,0 +1,423 @@ +# 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. + +from __future__ import absolute_import + +import os +import unittest + +import mock + +from yardstick.benchmark.contexts.standalone import sriov + +NIC_INPUT = { + 'interface': {}, + 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], + 'pci': ['0000:06:00.0', '0000:06:00.1'], + 'phy_driver': 'i40e'} +DRIVER = "i40e" +NIC_DETAILS = { + 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'}, + 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], + 'pci': ['0000:06:00.0', '0000:06:00.1'], + 'phy_driver': 'i40e'} + +CORRECT_FILE_PATH = "/etc/yardstick/nodes/pod_sriov.yaml" +WRONG_FILE_PATH = "/etc/yardstick/wrong.yaml" +SAMPLE_FILE = "sriov_sample_write_to_file.txt" + +SRIOV = [{ + 'auth_type': 'ssh_key', + 'name': 'sriov', + 'ssh_port': 22, + 'ip': '10.10.10.11', + 'key_filename': '/root/.ssh/id_rsa', + 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], + 'role': 'Sriov', + 'user': 'root', + 'images': '/var/lib/libvirt/images/ubuntu1.img', + 'phy_driver': 'i40e', + 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}] + +SRIOV_PASSWORD = [{ + 'auth_type': 'password', + 'name': 'sriov', + 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], + 'ip': '10.10.10.11', + 'role': 'Sriov', + 'user': 'root', + 'images': '/var/lib/libvirt/images/ubuntu1.img', + 'phy_driver': 'i40e', + 'password': 'password', + 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}] + +vfnic = "i40evf" +PCIS = ['0000:06:00.0', '0000:06:00.1'] + + +class SriovTestCase(unittest.TestCase): + + NODES_SAMPLE_SSH = "sriov_sample_ssh_key.yaml" + NODES_SAMPLE_PASSWORD = "sriov_sample_password.yaml" + + def setUp(self): + self.test_context = sriov.Sriov() + + def test_construct(self): + self.assertIsNone(self.test_context.name) + self.assertIsNone(self.test_context.file_path) + self.assertEqual(self.test_context.nodes, []) + self.assertEqual(self.test_context.sriov, []) + self.assertFalse(self.test_context.vm_deploy) + self.assertTrue(self.test_context.first_run) + self.assertEqual(self.test_context.user, "") + self.assertEqual(self.test_context.ssh_ip, "") + self.assertEqual(self.test_context.passwd, "") + self.assertEqual(self.test_context.ssh_port, "") + self.assertEqual(self.test_context.auth_type, "") + + def test_init(self): + self.test_context.parse_pod_and_get_data = mock.Mock() + self.test_context.file_path = CORRECT_FILE_PATH + self.test_context.init() + self.assertIsNone(self.test_context.init()) + + def test_successful_init_with_ssh(self): + CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_SSH) + self.test_context.parse_pod_and_get_data(CORRECT_FILE_PATH) + + def test_successful_init_with_password(self): + CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_PASSWORD) + self.test_context.parse_pod_and_get_data(CORRECT_FILE_PATH) + + def test_unsuccessful_init(self): + self.assertRaises( + IOError, + lambda: self.test_context.parse_pod_and_get_data(WRONG_FILE_PATH)) + + @mock.patch('yardstick.network_services.utils.provision_tool', return_value="a") + def test_ssh_connection(self, mock_prov): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(1, "a", "")) + ssh.return_value = ssh_mock + mock_prov.provision_tool = mock.Mock() + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + sriov_obj.sriov = SRIOV_PASSWORD + self.assertIsNone(sriov_obj.ssh_remote_machine()) + + @mock.patch('yardstick.network_services.utils.provision_tool', return_value="a") + def test_ssh_connection_ssh_key(self, mock_prov): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(1, "a", "")) + ssh.return_value = ssh_mock + mock_prov.provision_tool = mock.Mock() + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + sriov_obj.sriov = SRIOV + sriov_obj.key_filename = '/root/.ssh/id_rsa' + self.assertIsNone(sriov_obj.ssh_remote_machine()) + + def test_get_nic_details(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, "eth0 eth1", "")) + ssh.return_value = ssh_mock + sriov_obj = sriov.Sriov() + sriov_obj.sriov = SRIOV + sriov_obj.connection = ssh_mock + self.assertIsNotNone(sriov_obj.get_nic_details()) + + def test_install_req_libs(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + sriov_obj = sriov.Sriov() + sriov_obj.first_run = True + sriov_obj.connection = ssh_mock + self.assertIsNone(sriov_obj.install_req_libs()) + + def test_configure_nics_for_sriov(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + nic_details = { + 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'}, + 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], + 'pci': ['0000:06:00.0', '0000:06:00.1'], + 'phy_driver': 'i40e', + 'vf_pci': [{}, {}]} + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock((DRIVER), return_value=(0, "0 driver", "")) + ssh.return_value = ssh_mock + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + for i in range(len(NIC_DETAILS['pci'])): + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + ssh_mock.execute = \ + mock.Mock(return_value=( + 0, + "{'0':'06:02:00','1':'06:06:00'}", + "")) + sriov_obj.get_vf_datas = mock.Mock(return_value={ + '0000:06:00.0': '0000:06:02.0'}) + nic_details['vf_pci'][i] = sriov_obj.get_vf_datas.return_value + vf_pci = [[], []] + vf_pci[i] = sriov_obj.get_vf_datas.return_value + with mock.patch("yardstick.benchmark.contexts.standalone.sriov.time"): + self.assertIsNotNone(sriov_obj.configure_nics_for_sriov(DRIVER, NIC_DETAILS)) + + def test_setup_sriov_context(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + nic_details = { + 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'}, + 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], + 'pci': ['0000:06:00.0', '0000:06:00.1'], + 'phy_driver': 'i40e', + 'vf_pci': [{'vf_pci': '06:02.00'}, {'vf_pci': '06:06.00'}]} + vf = [{'vf_pci': '06:02.00'}, {'vf_pci': '06:06.00'}] + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + sriov_obj.sriov = SRIOV + blacklist = "/etc/modprobe.d/blacklist.conf" + self.assertEqual(vfnic, "i40evf") + mock_sriov = mock.Mock() + mock_sriov.sriov_obj.read_from_file(blacklist) + sriov_obj.read_from_file = mock.Mock( + return_value="some random text") + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + sriov_obj.configure_nics_for_sriov = mock.Mock( + return_value=nic_details) + nic_details = sriov_obj.configure_nics_for_sriov.return_value + self.assertEqual(vf, nic_details['vf_pci']) + vf = [ + {'vf_pci': '06:02.00', 'mac': '00:00:00:00:00:0a'}, + {'vf_pci': '06:06.00', 'mac': '00:00:00:00:00:0b'}] + sriov_obj.add_sriov_interface = mock.Mock() + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh_mock.put = mock.Mock() + sriov_obj.check_output = mock.Mock(return_value=(1, {})) + with mock.patch("yardstick.benchmark.contexts.standalone.sriov.time"): + self.assertIsNone(sriov_obj.setup_sriov_context(PCIS, nic_details, DRIVER)) + + def test_setup_sriov_context_vm_already_present(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + nic_details = { + 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'}, + 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], + 'pci': ['0000:06:00.0', '0000:06:00.1'], + 'phy_driver': 'i40e', + 'vf_pci': [{'vf_pci': '06:02.00'}, {'vf_pci': '06:06.00'}]} + vf = [{'vf_pci': '06:02.00'}, {'vf_pci': '06:06.00'}] + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + sriov_obj.sriov = SRIOV + blacklist = "/etc/modprobe.d/blacklist.conf" + self.assertEqual(vfnic, "i40evf") + mock_sriov = mock.Mock() + mock_sriov.sriov_obj.read_from_file(blacklist) + sriov_obj.read_from_file = mock.Mock( + return_value="some random text") + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + sriov_obj.configure_nics_for_sriov = mock.Mock( + return_value=nic_details) + nic_details = sriov_obj.configure_nics_for_sriov.return_value + self.assertEqual(vf, nic_details['vf_pci']) + vf = [ + {'vf_pci': '06:02.00', 'mac': '00:00:00:00:00:0a'}, + {'vf_pci': '06:06.00', 'mac': '00:00:00:00:00:0b'}] + sriov_obj.add_sriov_interface = mock.Mock() + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh_mock.put = mock.Mock() + sriov_obj.check_output = mock.Mock(return_value=(0, "vm1")) + with mock.patch("yardstick.benchmark.contexts.standalone.sriov.time"): + self.assertIsNone(sriov_obj.setup_sriov_context(PCIS, nic_details, DRIVER)) + + @mock.patch( + 'yardstick.benchmark.contexts.standalone.sriov', + return_value="Domain vm1 created from /tmp/vm_sriov.xml") + def test_is_vm_created(self, NIC_INPUT): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + mock_sriov = mock.Mock() + pcis = NIC_DETAILS['pci'] + driver = NIC_DETAILS['phy_driver'] + self.assertIsNotNone( + mock_sriov.sriov_obj.setup_sriov_context( + pcis, + NIC_DETAILS, + driver)) + + def test_add_sriov_interface(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + with mock.patch("xml.etree.ElementTree.parse") as parse: + with mock.patch("re.search") as re: + with mock.patch("xml.etree.ElementTree.SubElement") \ + as elem: + parse = mock.Mock(return_value="root") + re = mock.Mock() + elem = mock.Mock() + print("{0} {1} {2}".format(parse, re, elem)) + self.assertIsNone(sriov_obj.add_sriov_interface( + 0, + "0000:06:02.0", + "00:00:00:00:00:0a", + "/tmp/vm_sriov.xml")) + + def test_get_virtual_devices(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + pci_out = " \ + PCI_CLASS=20000 \ + PCI_ID=8086:154C \ + PCI_SUBSYS_ID=8086:0000 \ + PCI_SLOT_NAME=0000:06:02.0 \ + MODALIAS= \ + pci:v00008086d0000154Csv00008086sd00000000bc02sc00i00" + pci = "0000:06:00.0" + sriov_obj.check_output = mock.Mock(return_value=(0, pci_out)) + with mock.patch("re.search") as re: + re = mock.Mock(return_value="a") + print("{0}".format(re)) + self.assertIsNotNone(sriov_obj.get_virtual_devices(pci)) + + def test_get_vf_datas(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + sriov_obj.get_virtual_devices = mock.Mock( + return_value={'0000:06:00.0': '0000:06:02.0'}) + with mock.patch("re.search") as re: + re = mock.Mock() + print("{0}".format(re)) + self.assertIsNotNone(sriov_obj.get_vf_datas( + 'vf_pci', + {'0000:06:00.0': '0000:06:02.0'}, + "00:00:00:00:00:0a")) + + def test_check_output(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + cmd = "command" + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + self.assertIsNotNone(sriov_obj.check_output(cmd, None)) + + def test_split_cpu_list_available(self): + with mock.patch("itertools.chain") as iter1: + iter1 = mock.Mock() + print("{0}".format(iter1)) + sriov_obj = sriov.Sriov() + self.assertIsNotNone(sriov_obj.split_cpu_list('0,5')) + + def test_split_cpu_list_null(self): + with mock.patch("itertools.chain") as iter1: + iter1 = mock.Mock() + print("{0}".format(iter1)) + sriov_obj = sriov.Sriov() + self.assertEqual(sriov_obj.split_cpu_list([]), []) + + def test_destroy_vm_successful(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + sriov_obj.sriov = SRIOV + sriov_obj.check_output = mock.Mock(return_value=(0, "vm1")) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh_mock.execute = \ + mock.Mock(return_value=(0, "0 i40e")) + ssh_mock.execute = \ + mock.Mock(return_value=(0, "0 i40e")) + self.assertIsNone(sriov_obj.destroy_vm()) + + def test_destroy_vm_unsuccessful(self): + with mock.patch("yardstick.ssh.SSH") as ssh: + ssh_mock = mock.Mock(autospec=ssh.SSH) + ssh_mock.execute = \ + mock.Mock(return_value=(0, {}, "")) + ssh.return_value = ssh_mock + sriov_obj = sriov.Sriov() + sriov_obj.connection = ssh_mock + sriov_obj.sriov = SRIOV + sriov_obj.check_output = mock.Mock(return_value=(1, {})) + self.assertIsNone(sriov_obj.destroy_vm()) + + def test_read_from_file(self): + CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_PASSWORD) + sriov_obj = sriov.Sriov() + self.assertIsNotNone(sriov_obj.read_from_file(CORRECT_FILE_PATH)) + + def test_write_to_file(self): + sriov_obj = sriov.Sriov() + self.assertIsNone(sriov_obj.write_to_file(SAMPLE_FILE, "some content")) + + def _get_file_abspath(self, filename): + curr_path = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(curr_path, filename) + return file_path + +if __name__ == '__main__': + unittest.main() diff --git a/tests/unit/benchmark/contexts/test_ovsdpdk.py b/tests/unit/benchmark/contexts/test_ovsdpdk.py deleted file mode 100644 index ac25ec877..000000000 --- a/tests/unit/benchmark/contexts/test_ovsdpdk.py +++ /dev/null @@ -1,325 +0,0 @@ -# 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. - -from __future__ import absolute_import -import os -import mock -import unittest - -from yardstick.benchmark.contexts import ovsdpdk - -NIC_INPUT = { - 'interface': {}, - 'vports_mac': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], - 'pci': ['0000:06:00.0', '0000:06:00.1'], - 'phy_driver': 'i40e'} -DRIVER = "i40e" -NIC_DETAILS = { - 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'}, - 'vports_mac': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], - 'pci': ['0000:06:00.0', '0000:06:00.1'], - 'phy_driver': 'i40e'} - -CORRECT_FILE_PATH = "/etc/yardstick/nodes/pod_ovs.yaml" -WRONG_FILE_PATH = "/etc/yardstick/wrong.yaml" -SAMPLE_FILE = "ovs_sample_write_to_file.txt" - -OVS = [{ - 'auth_type': 'ssh_key', - 'name': 'ovs', - 'ssh_port': 22, - 'ip': '10.10.10.11', - 'key_filename': '/root/.ssh/id_rsa', - 'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'], - 'vpath': '/usr/local/', - 'role': 'Ovsdpdk', - 'user': 'root', - 'images': '/var/lib/libvirt/images/ubuntu1.img', - 'flow': ['ovs-ofctl add-flow br0 in_port=1,action=output:3', - 'ovs-ofctl add-flow br0 in_port=3,action=output:1', - 'ovs-ofctl add-flow br0 in_port=4,action=output:2', - 'ovs-ofctl add-flow br0 in_port=2,action=output:4'], - 'phy_driver': 'i40e', - 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}] - -OVS_PASSWORD = [{ - 'auth_type': 'password', - 'name': 'ovs', - 'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'], - 'ip': '10.10.10.11', - 'role': 'Ovsdpdk', - 'user': 'root', - 'vpath': '/usr/local/', - 'images': '/var/lib/libvirt/images/ubuntu1.img', - 'flow': ['ovs-ofctl add-flow br0 in_port=1,action=output:3', - 'ovs-ofctl add-flow br0 in_port=3,action=output:1', - 'ovs-ofctl add-flow br0 in_port=4,action=output:2', - 'ovs-ofctl add-flow br0 in_port=2,action=output:4'], - 'phy_driver': 'i40e', - 'password': 'password', - 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}] - -#vfnic = "i40evf" -PCIS = ['0000:06:00.0', '0000:06:00.1'] - - -class OvsdpdkTestCase(unittest.TestCase): - - NODES_SAMPLE_SSH = "ovs_sample_ssh_key.yaml" - NODES_SAMPLE_PASSWORD = "ovs_sample_password.yaml" - - def setUp(self): - self.test_context = ovsdpdk.Ovsdpdk() - - def test_construct(self): - self.assertIsNone(self.test_context.name) - self.assertIsNone(self.test_context.file_path) - self.assertEqual(self.test_context.nodes, []) - self.assertEqual(self.test_context.ovs, []) - self.assertFalse(self.test_context.vm_deploy) - self.assertTrue(self.test_context.first_run) - self.assertEqual(self.test_context.user, "") - self.assertEqual(self.test_context.ssh_ip, "") - self.assertEqual(self.test_context.passwd, "") - self.assertEqual(self.test_context.ssh_port, "") - self.assertEqual(self.test_context.auth_type, "") - - def test_init(self): - self.test_context.parse_pod_and_get_data = mock.Mock() - self.test_context.file_path = CORRECT_FILE_PATH - self.test_context.init() - self.assertIsNone(self.test_context.init()) - - def test_successful_init_with_ssh(self): - CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_SSH) - self.test_context.parse_pod_and_get_data(CORRECT_FILE_PATH) - - def test_successful_init_with_password(self): - CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_PASSWORD) - self.test_context.parse_pod_and_get_data(CORRECT_FILE_PATH) - - def test_unsuccessful_init(self): - self.assertRaises( - IOError, - lambda: self.test_context.parse_pod_and_get_data(WRONG_FILE_PATH)) - - def test_ssh_connection(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - - @mock.patch('yardstick.network_services.utils.provision_tool', return_value="b") - def test_ssh_connection(self, mock_prov): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(1, "b", "")) - ssh.return_value = ssh_mock - mock_prov.provision_tool = mock.Mock() - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.connection = ssh_mock - ovs_obj.ovs = OVS_PASSWORD - self.assertIsNone(ovs_obj.ssh_remote_machine()) - - @mock.patch('yardstick.network_services.utils.provision_tool', return_value="b") - def test_ssh_connection_ssh_key(self, mock_prov): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(1, "b", "")) - ssh.return_value = ssh_mock - mock_prov.provision_tool = mock.Mock() - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.connection = ssh_mock - ovs_obj.ovs = OVS - ovs_obj.key_filename = '/root/.ssh/id_rsa' - self.assertIsNone(ovs_obj.ssh_remote_machine()) - - def test_get_nic_details(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, "eth0 eth1", "")) - ssh.return_value = ssh_mock - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.ovs = OVS - ovs_obj.connection = ssh_mock - self.assertIsNotNone(ovs_obj.get_nic_details()) - - def test_install_req_libs(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.first_run = True - ovs_obj.connection = ssh_mock - self.assertIsNone(ovs_obj.install_req_libs()) - - def test_setup_ovs(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.connection = ssh_mock - ovs_obj.ovs = OVS - self.assertIsNone(ovs_obj.setup_ovs({"eth0 eth1"})) - - def test_start_ovs_serverswitch(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.connection = ssh_mock - ovs_obj.ovs = OVS - self.assertIsNone(ovs_obj.start_ovs_serverswitch()) - - def test_setup_ovs_bridge(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.connection = ssh_mock - ovs_obj.ovs = OVS - self.assertIsNone(ovs_obj.setup_ovs_bridge()) - - def test_add_oflows(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.connection = ssh_mock - ovs_obj.ovs = OVS - self.assertIsNone(ovs_obj.add_oflows()) - - def test_setup_ovs_context_vm_already_present(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.connection = ssh_mock - ovs_obj.ovs = OVS - mock_ovs = mock.Mock() - ssh_mock.put = mock.Mock() - ovs_obj.check_output = mock.Mock(return_value=(0, "vm1")) - with mock.patch("yardstick.benchmark.contexts.ovsdpdk.time"): - self.assertIsNone(ovs_obj.setup_ovs_context(PCIS, NIC_DETAILS, DRIVER)) - - @mock.patch( - 'yardstick.benchmark.contexts.ovsdpdk', - return_value="Domain vm1 created from /tmp/vm_ovs.xml") - def test_is_vm_created(self, NIC_INPUT): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh_mock.put = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - mock_ovs = mock.Mock() - ret_create = mock.Mock() - pcis = NIC_DETAILS['pci'] - driver = NIC_DETAILS['phy_driver'] - self.assertIsNotNone( - mock_ovs.ovs_obj.setup_ovs_context( - pcis, - NIC_DETAILS, - driver)) - - def test_check_output(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - cmd = "command" - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.connection = ssh_mock - self.assertIsNotNone(ovs_obj.check_output(cmd, None)) - - def test_split_cpu_list_available(self): - with mock.patch("itertools.chain") as iter1: - iter1 = mock.Mock() - print("{0}".format(iter1)) - ovs_obj = ovsdpdk.Ovsdpdk() - self.assertIsNotNone(ovs_obj.split_cpu_list('0,5')) - - def test_split_cpu_list_null(self): - with mock.patch("itertools.chain") as iter1: - iter1 = mock.Mock() - print("{0}".format(iter1)) - ovs_obj = ovsdpdk.Ovsdpdk() - self.assertEqual(ovs_obj.split_cpu_list([]), []) - - def test_destroy_vm_successful(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.connection = ssh_mock - ovs_obj.ovs = OVS - ovs_obj.check_output = mock.Mock(return_value=(0, "vm1")) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh_mock.execute = \ - mock.Mock(return_value=(0, "0 i40e")) - ssh_mock.execute = \ - mock.Mock(return_value=(0, "0 i40e")) - self.assertIsNone(ovs_obj.destroy_vm()) - - def test_destroy_vm_unsuccessful(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - ovs_obj = ovsdpdk.Ovsdpdk() - ovs_obj.connection = ssh_mock - ovs_obj.ovs = OVS - ovs_obj.check_output = mock.Mock(return_value=(1, {})) - self.assertIsNone(ovs_obj.destroy_vm()) - - def test_read_from_file(self): - CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_PASSWORD) - ovs_obj = ovsdpdk.Ovsdpdk() - self.assertIsNotNone(ovs_obj.read_from_file(CORRECT_FILE_PATH)) - - def test_write_to_file(self): - ovs_obj = ovsdpdk.Ovsdpdk() - self.assertIsNone(ovs_obj.write_to_file(SAMPLE_FILE, "some content")) - - def _get_file_abspath(self, filename): - curr_path = os.path.dirname(os.path.abspath(__file__)) - file_path = os.path.join(curr_path, filename) - return file_path - -if __name__ == '__main__': - unittest.main() diff --git a/tests/unit/benchmark/contexts/test_sriov.py b/tests/unit/benchmark/contexts/test_sriov.py deleted file mode 100644 index a8641a2eb..000000000 --- a/tests/unit/benchmark/contexts/test_sriov.py +++ /dev/null @@ -1,421 +0,0 @@ -# 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. - -from __future__ import absolute_import -import os -import mock -import unittest - -from yardstick.benchmark.contexts import sriov - -NIC_INPUT = { - 'interface': {}, - 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], - 'pci': ['0000:06:00.0', '0000:06:00.1'], - 'phy_driver': 'i40e'} -DRIVER = "i40e" -NIC_DETAILS = { - 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'}, - 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], - 'pci': ['0000:06:00.0', '0000:06:00.1'], - 'phy_driver': 'i40e'} - -CORRECT_FILE_PATH = "/etc/yardstick/nodes/pod_sriov.yaml" -WRONG_FILE_PATH = "/etc/yardstick/wrong.yaml" -SAMPLE_FILE = "sriov_sample_write_to_file.txt" - -SRIOV = [{ - 'auth_type': 'ssh_key', - 'name': 'sriov', - 'ssh_port': 22, - 'ip': '10.10.10.11', - 'key_filename': '/root/.ssh/id_rsa', - 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], - 'role': 'Sriov', - 'user': 'root', - 'images': '/var/lib/libvirt/images/ubuntu1.img', - 'phy_driver': 'i40e', - 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}] - -SRIOV_PASSWORD = [{ - 'auth_type': 'password', - 'name': 'sriov', - 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], - 'ip': '10.10.10.11', - 'role': 'Sriov', - 'user': 'root', - 'images': '/var/lib/libvirt/images/ubuntu1.img', - 'phy_driver': 'i40e', - 'password': 'password', - 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}] - -vfnic = "i40evf" -PCIS = ['0000:06:00.0', '0000:06:00.1'] - - -class SriovTestCase(unittest.TestCase): - - NODES_SAMPLE_SSH = "sriov_sample_ssh_key.yaml" - NODES_SAMPLE_PASSWORD = "sriov_sample_password.yaml" - - def setUp(self): - self.test_context = sriov.Sriov() - - def test_construct(self): - self.assertIsNone(self.test_context.name) - self.assertIsNone(self.test_context.file_path) - self.assertEqual(self.test_context.nodes, []) - self.assertEqual(self.test_context.sriov, []) - self.assertFalse(self.test_context.vm_deploy) - self.assertTrue(self.test_context.first_run) - self.assertEqual(self.test_context.user, "") - self.assertEqual(self.test_context.ssh_ip, "") - self.assertEqual(self.test_context.passwd, "") - self.assertEqual(self.test_context.ssh_port, "") - self.assertEqual(self.test_context.auth_type, "") - - def test_init(self): - self.test_context.parse_pod_and_get_data = mock.Mock() - self.test_context.file_path = CORRECT_FILE_PATH - self.test_context.init() - self.assertIsNone(self.test_context.init()) - - def test_successful_init_with_ssh(self): - CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_SSH) - self.test_context.parse_pod_and_get_data(CORRECT_FILE_PATH) - - def test_successful_init_with_password(self): - CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_PASSWORD) - self.test_context.parse_pod_and_get_data(CORRECT_FILE_PATH) - - def test_unsuccessful_init(self): - self.assertRaises( - IOError, - lambda: self.test_context.parse_pod_and_get_data(WRONG_FILE_PATH)) - - @mock.patch('yardstick.network_services.utils.provision_tool', return_value="a") - def test_ssh_connection(self, mock_prov): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(1, "a", "")) - ssh.return_value = ssh_mock - mock_prov.provision_tool = mock.Mock() - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - sriov_obj.sriov = SRIOV_PASSWORD - self.assertIsNone(sriov_obj.ssh_remote_machine()) - - @mock.patch('yardstick.network_services.utils.provision_tool', return_value="a") - def test_ssh_connection_ssh_key(self, mock_prov): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(1, "a", "")) - ssh.return_value = ssh_mock - mock_prov.provision_tool = mock.Mock() - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - sriov_obj.sriov = SRIOV - sriov_obj.key_filename = '/root/.ssh/id_rsa' - self.assertIsNone(sriov_obj.ssh_remote_machine()) - - def test_get_nic_details(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, "eth0 eth1", "")) - ssh.return_value = ssh_mock - sriov_obj = sriov.Sriov() - sriov_obj.sriov = SRIOV - sriov_obj.connection = ssh_mock - self.assertIsNotNone(sriov_obj.get_nic_details()) - - def test_install_req_libs(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - sriov_obj = sriov.Sriov() - sriov_obj.first_run = True - sriov_obj.connection = ssh_mock - self.assertIsNone(sriov_obj.install_req_libs()) - - def test_configure_nics_for_sriov(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - nic_details = { - 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'}, - 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], - 'pci': ['0000:06:00.0', '0000:06:00.1'], - 'phy_driver': 'i40e', - 'vf_pci': [{}, {}]} - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock((DRIVER), return_value=(0, "0 driver", "")) - ssh.return_value = ssh_mock - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - for i in range(len(NIC_DETAILS['pci'])): - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - ssh_mock.execute = \ - mock.Mock(return_value=( - 0, - "{'0':'06:02:00','1':'06:06:00'}", - "")) - sriov_obj.get_vf_datas = mock.Mock(return_value={ - '0000:06:00.0': '0000:06:02.0'}) - nic_details['vf_pci'][i] = sriov_obj.get_vf_datas.return_value - vf_pci = [[], []] - vf_pci[i] = sriov_obj.get_vf_datas.return_value - with mock.patch("yardstick.benchmark.contexts.sriov.time"): - self.assertIsNotNone(sriov_obj.configure_nics_for_sriov(DRIVER, NIC_DETAILS)) - - def test_setup_sriov_context(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - nic_details = { - 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'}, - 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], - 'pci': ['0000:06:00.0', '0000:06:00.1'], - 'phy_driver': 'i40e', - 'vf_pci': [{'vf_pci': '06:02.00'}, {'vf_pci': '06:06.00'}]} - vf = [{'vf_pci': '06:02.00'}, {'vf_pci': '06:06.00'}] - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - sriov_obj.sriov = SRIOV - blacklist = "/etc/modprobe.d/blacklist.conf" - self.assertEqual(vfnic, "i40evf") - mock_sriov = mock.Mock() - mock_sriov.sriov_obj.read_from_file(blacklist) - sriov_obj.read_from_file = mock.Mock( - return_value="some random text") - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - sriov_obj.configure_nics_for_sriov = mock.Mock( - return_value=nic_details) - nic_details = sriov_obj.configure_nics_for_sriov.return_value - self.assertEqual(vf, nic_details['vf_pci']) - vf = [ - {'vf_pci': '06:02.00', 'mac': '00:00:00:00:00:0a'}, - {'vf_pci': '06:06.00', 'mac': '00:00:00:00:00:0b'}] - sriov_obj.add_sriov_interface = mock.Mock() - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh_mock.put = mock.Mock() - sriov_obj.check_output = mock.Mock(return_value=(1, {})) - with mock.patch("yardstick.benchmark.contexts.sriov.time"): - self.assertIsNone(sriov_obj.setup_sriov_context(PCIS, nic_details, DRIVER)) - - def test_setup_sriov_context_vm_already_present(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - nic_details = { - 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'}, - 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'], - 'pci': ['0000:06:00.0', '0000:06:00.1'], - 'phy_driver': 'i40e', - 'vf_pci': [{'vf_pci': '06:02.00'}, {'vf_pci': '06:06.00'}]} - vf = [{'vf_pci': '06:02.00'}, {'vf_pci': '06:06.00'}] - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - sriov_obj.sriov = SRIOV - blacklist = "/etc/modprobe.d/blacklist.conf" - self.assertEqual(vfnic, "i40evf") - mock_sriov = mock.Mock() - mock_sriov.sriov_obj.read_from_file(blacklist) - sriov_obj.read_from_file = mock.Mock( - return_value="some random text") - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - sriov_obj.configure_nics_for_sriov = mock.Mock( - return_value=nic_details) - nic_details = sriov_obj.configure_nics_for_sriov.return_value - self.assertEqual(vf, nic_details['vf_pci']) - vf = [ - {'vf_pci': '06:02.00', 'mac': '00:00:00:00:00:0a'}, - {'vf_pci': '06:06.00', 'mac': '00:00:00:00:00:0b'}] - sriov_obj.add_sriov_interface = mock.Mock() - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh_mock.put = mock.Mock() - sriov_obj.check_output = mock.Mock(return_value=(0, "vm1")) - with mock.patch("yardstick.benchmark.contexts.sriov.time"): - self.assertIsNone(sriov_obj.setup_sriov_context(PCIS, nic_details, DRIVER)) - - @mock.patch( - 'yardstick.benchmark.contexts.sriov', - return_value="Domain vm1 created from /tmp/vm_sriov.xml") - def test_is_vm_created(self, NIC_INPUT): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - mock_sriov = mock.Mock() - pcis = NIC_DETAILS['pci'] - driver = NIC_DETAILS['phy_driver'] - self.assertIsNotNone( - mock_sriov.sriov_obj.setup_sriov_context( - pcis, - NIC_DETAILS, - driver)) - - def test_add_sriov_interface(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - with mock.patch("xml.etree.ElementTree.parse") as parse: - with mock.patch("re.search") as re: - with mock.patch("xml.etree.ElementTree.SubElement") \ - as elem: - parse = mock.Mock(return_value="root") - re = mock.Mock() - elem = mock.Mock() - print("{0} {1} {2}".format(parse, re, elem)) - self.assertIsNone(sriov_obj.add_sriov_interface( - 0, - "0000:06:02.0", - "00:00:00:00:00:0a", - "/tmp/vm_sriov.xml")) - - def test_get_virtual_devices(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - pci_out = " \ - PCI_CLASS=20000 \ - PCI_ID=8086:154C \ - PCI_SUBSYS_ID=8086:0000 \ - PCI_SLOT_NAME=0000:06:02.0 \ - MODALIAS= \ - pci:v00008086d0000154Csv00008086sd00000000bc02sc00i00" - pci = "0000:06:00.0" - sriov_obj.check_output = mock.Mock(return_value=(0, pci_out)) - with mock.patch("re.search") as re: - re = mock.Mock(return_value="a") - print("{0}".format(re)) - self.assertIsNotNone(sriov_obj.get_virtual_devices(pci)) - - def test_get_vf_datas(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - sriov_obj.get_virtual_devices = mock.Mock( - return_value={'0000:06:00.0': '0000:06:02.0'}) - with mock.patch("re.search") as re: - re = mock.Mock() - print("{0}".format(re)) - self.assertIsNotNone(sriov_obj.get_vf_datas( - 'vf_pci', - {'0000:06:00.0': '0000:06:02.0'}, - "00:00:00:00:00:0a")) - - def test_check_output(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - cmd = "command" - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - self.assertIsNotNone(sriov_obj.check_output(cmd, None)) - - def test_split_cpu_list_available(self): - with mock.patch("itertools.chain") as iter1: - iter1 = mock.Mock() - print("{0}".format(iter1)) - sriov_obj = sriov.Sriov() - self.assertIsNotNone(sriov_obj.split_cpu_list('0,5')) - - def test_split_cpu_list_null(self): - with mock.patch("itertools.chain") as iter1: - iter1 = mock.Mock() - print("{0}".format(iter1)) - sriov_obj = sriov.Sriov() - self.assertEqual(sriov_obj.split_cpu_list([]), []) - - def test_destroy_vm_successful(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - sriov_obj.sriov = SRIOV - sriov_obj.check_output = mock.Mock(return_value=(0, "vm1")) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh_mock.execute = \ - mock.Mock(return_value=(0, "0 i40e")) - ssh_mock.execute = \ - mock.Mock(return_value=(0, "0 i40e")) - self.assertIsNone(sriov_obj.destroy_vm()) - - def test_destroy_vm_unsuccessful(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, {}, "")) - ssh.return_value = ssh_mock - sriov_obj = sriov.Sriov() - sriov_obj.connection = ssh_mock - sriov_obj.sriov = SRIOV - sriov_obj.check_output = mock.Mock(return_value=(1, {})) - self.assertIsNone(sriov_obj.destroy_vm()) - - def test_read_from_file(self): - CORRECT_FILE_PATH = self._get_file_abspath(self.NODES_SAMPLE_PASSWORD) - sriov_obj = sriov.Sriov() - self.assertIsNotNone(sriov_obj.read_from_file(CORRECT_FILE_PATH)) - - def test_write_to_file(self): - sriov_obj = sriov.Sriov() - self.assertIsNone(sriov_obj.write_to_file(SAMPLE_FILE, "some content")) - - def _get_file_abspath(self, filename): - curr_path = os.path.dirname(os.path.abspath(__file__)) - file_path = os.path.join(curr_path, filename) - return file_path - -if __name__ == '__main__': - unittest.main() diff --git a/tests/unit/benchmark/contexts/test_standalone.py b/tests/unit/benchmark/contexts/test_standalone.py index d13e28470..b1402a1c9 100644 --- a/tests/unit/benchmark/contexts/test_standalone.py +++ b/tests/unit/benchmark/contexts/test_standalone.py @@ -18,25 +18,26 @@ # Unittest for yardstick.benchmark.contexts.standalone from __future__ import absolute_import + import os import unittest + import mock from yardstick.benchmark.contexts import standalone -from yardstick.benchmark.contexts import sriov -from yardstick.benchmark.contexts import ovsdpdk +from yardstick.benchmark.contexts.standalone import ovsdpdk, sriov MOCKS = { 'yardstick.benchmark.contexts': mock.MagicMock(), - 'yardstick.benchmark.contexts.sriov': mock.MagicMock(), - 'yardstick.benchmark.contexts.ovsdpdk': mock.MagicMock(), + 'yardstick.benchmark.contexts.standalone.sriov': mock.MagicMock(), + 'yardstick.benchmark.contexts.standalone.ovsdpdk': mock.MagicMock(), 'yardstick.benchmark.contexts.standalone': mock.MagicMock(), } -@mock.patch('yardstick.benchmark.contexts.ovsdpdk.time') +@mock.patch('yardstick.benchmark.contexts.standalone.ovsdpdk.time') @mock.patch('yardstick.benchmark.contexts.standalone.time') -@mock.patch('yardstick.benchmark.contexts.sriov.time') +@mock.patch('yardstick.benchmark.contexts.standalone.sriov.time') class StandaloneContextTestCase(unittest.TestCase): NODES_SAMPLE = "nodes_sample_new.yaml" NODES_SAMPLE_SRIOV = "nodes_sample_new_sriov.yaml" @@ -564,7 +565,7 @@ class StandaloneContextTestCase(unittest.TestCase): self.assertIsNone(self.test_context.undeploy()) def test_get_nfvi_obj_sriov(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time): - with mock.patch('yardstick.benchmark.contexts.sriov'): + with mock.patch('yardstick.benchmark.contexts.standalone.sriov'): attrs = { 'name': 'sriov', 'file': self._get_file_abspath(self.NODES_SAMPLE) @@ -589,7 +590,7 @@ class StandaloneContextTestCase(unittest.TestCase): self.assertIsNotNone(self.test_context.get_nfvi_obj()) def test_get_nfvi_obj_ovs(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time): - with mock.patch('yardstick.benchmark.contexts.ovsdpdk'): + with mock.patch('yardstick.benchmark.contexts.standalone.ovsdpdk'): attrs = { 'name': 'ovs', 'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK) -- cgit 1.2.3-korg