aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--samples/ping-security-group.yaml74
-rw-r--r--samples/ping_bottlenecks.yaml12
-rw-r--r--samples/vnf_samples/nsut/acl/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml10
-rw-r--r--samples/vnf_samples/nsut/acl/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml14
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml10
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_sriov_rfc2544_ipv4_1rule_64B_trex.yaml14
-rw-r--r--samples/vnf_samples/nsut/udp_replay/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml10
-rw-r--r--samples/vnf_samples/nsut/udp_replay/tc_sriov_rfc2544_ipv4_1rule_64B_trex.yaml14
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml10
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml14
-rw-r--r--samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml10
-rw-r--r--yardstick/benchmark/contexts/heat.py6
-rw-r--r--yardstick/common/constants.py4
-rw-r--r--yardstick/network_services/traffic_profile/rfc2544.py30
-rw-r--r--yardstick/orchestrator/heat.py121
-rw-r--r--yardstick/tests/unit/benchmark/contexts/test_heat.py3
-rw-r--r--yardstick/tests/unit/network_services/traffic_profile/test_rfc2544.py35
-rw-r--r--yardstick/tests/unit/orchestrator/test_heat.py19
18 files changed, 290 insertions, 120 deletions
diff --git a/samples/ping-security-group.yaml b/samples/ping-security-group.yaml
new file mode 100644
index 000000000..1545ee1cf
--- /dev/null
+++ b/samples/ping-security-group.yaml
@@ -0,0 +1,74 @@
+##############################################################################
+# Copyright (c) 2018 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 ping test case using custom security group
+# measure network latency using ping
+
+schema: "yardstick:task:0.1"
+
+{% set provider = provider or none %}
+{% set physical_network = physical_network or 'physnet1' %}
+{% set segmentation_id = segmentation_id or none %}
+scenarios:
+-
+ type: Ping
+ options:
+ packetsize: 200
+ host: athena.demo
+ target: ares.demo
+
+ runner:
+ type: Duration
+ duration: 60
+ interval: 1
+
+ sla:
+ max_rtt: 10
+ action: monitor
+
+context:
+ name: demo
+ image: yardstick-image
+ flavor: yardstick-flavor
+ user: ubuntu
+ security_group:
+ rules:
+ - remote_ip_prefix: "0.0.0.0/0"
+ protocol: "tcp"
+ port_range_min: 1
+ port_range_max: 65535
+ - remote_ip_prefix: "0.0.0.0/0"
+ protocol: "udp"
+ port_range_min: 1
+ port_range_max: 65535
+ - remote_ip_prefix: "0.0.0.0/0"
+ protocol: "icmp"
+
+ placement_groups:
+ pgrp1:
+ policy: "availability"
+
+ servers:
+ athena:
+ floating_ip: true
+ placement: "pgrp1"
+ ares:
+ placement: "pgrp1"
+
+
+ networks:
+ test:
+ cidr: '10.0.1.0/24'
+ {% if provider == "vlan" %}
+ provider: {{provider}}
+ physical_network: {{physical_network}}
+ {% if segmentation_id %}
+ segmentation_id: {{segmentation_id}}
+ {% endif %}
+ {% endif %}
diff --git a/samples/ping_bottlenecks.yaml b/samples/ping_bottlenecks.yaml
index 096d70e67..6a586cb90 100644
--- a/samples/ping_bottlenecks.yaml
+++ b/samples/ping_bottlenecks.yaml
@@ -49,6 +49,18 @@ contexts:
hw:mem_page_size: "large"
{% endif %}
user: ubuntu
+ security_group:
+ rules:
+ - remote_ip_prefix: "0.0.0.0/0"
+ protocol: "tcp"
+ port_range_min: 1
+ port_range_max: 65535
+ - remote_ip_prefix: "0.0.0.0/0"
+ protocol: "udp"
+ port_range_min: 1
+ port_range_max: 65535
+ - remote_ip_prefix: "0.0.0.0/0"
+ protocol: "icmp"
placement_groups:
pgrp1:
diff --git a/samples/vnf_samples/nsut/acl/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml b/samples/vnf_samples/nsut/acl/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
index 00bd186ee..e62425ad7 100644
--- a/samples/vnf_samples/nsut/acl/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
+++ b/samples/vnf_samples/nsut/acl/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@ scenarios:
traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml
topology: acl-tg-topology.yaml
nodes:
- tg__0: tg__0.yardstick
+ tg__0: trafficgen_1.yardstick
vnf__0: vnf__0.yardstick
options:
framesize:
@@ -42,10 +42,10 @@ scenarios:
contexts:
- name: yardstick
type: Node
- file: etc/yardstick/nodes/standalone/pod_trex.yaml
+ file: /etc/yardstick/nodes/standalone/trex_bm.yaml
- type: StandaloneOvsDpdk
name: yardstick
- file: etc/yardstick/nodes/standalone/host_ovs.yaml
+ file: /etc/yardstick/nodes/standalone/host_ovs.yaml
vm_deploy: True
ovs_properties:
version:
@@ -62,7 +62,7 @@ contexts:
flavor:
images: "/var/lib/libvirt/images/yardstick-nsb-image.img"
- ram: 4096
+ ram: 16384
extra_specs:
hw:cpu_sockets: 1
hw:cpu_cores: 6
diff --git a/samples/vnf_samples/nsut/acl/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml b/samples/vnf_samples/nsut/acl/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
index 8b3241620..77df5b18c 100644
--- a/samples/vnf_samples/nsut/acl/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
+++ b/samples/vnf_samples/nsut/acl/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -19,8 +19,8 @@ scenarios:
traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml
topology: acl-tg-topology.yaml
nodes:
- tg__0: tg__0.yardstick
- vnf__0: vnf.yardstick
+ tg__0: trafficgen_1.yardstick
+ vnf__0: vnf__0.yardstick
options:
framesize:
uplink: {64B: 100}
@@ -42,14 +42,14 @@ scenarios:
contexts:
- name: yardstick
type: Node
- file: /etc/yardstick/nodes/standalone/pod_trex.yaml
+ file: /etc/yardstick/nodes/standalone/trex_bm.yaml
- type: StandaloneSriov
file: /etc/yardstick/nodes/standalone/host_sriov.yaml
name: yardstick
vm_deploy: True
flavor:
- images: "/var/lib/libvirt/images/ubuntu.qcow2"
- ram: 4096
+ images: "/var/lib/libvirt/images/yardstick-nsb-image.img"
+ ram: 16384
extra_specs:
hw:cpu_sockets: 1
hw:cpu_cores: 6
@@ -57,7 +57,7 @@ contexts:
user: ""
password: ""
servers:
- vnf:
+ vnf__0:
network_ports:
mgmt:
cidr: '1.1.1.61/24'
diff --git a/samples/vnf_samples/nsut/cgnapt/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml b/samples/vnf_samples/nsut/cgnapt/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml
index 52becd3c6..170b2c539 100644
--- a/samples/vnf_samples/nsut/cgnapt/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml
+++ b/samples/vnf_samples/nsut/cgnapt/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@ scenarios:
traffic_profile: ../../traffic_profiles/ipv4_throughput_cgnapt.yaml
topology: cgnapt-vnf-topology.yaml
nodes:
- tg__0: tg__0.yardstick
+ tg__0: trafficgen_1.yardstick
vnf__0: vnf__0.yardstick
options:
framesize:
@@ -42,7 +42,7 @@ scenarios:
contexts:
- name: yardstick
type: Node
- file: /etc/yardstick/nodes/standalone/pod_trex.yaml
+ file: /etc/yardstick/nodes/standalone/trex_bm.yaml
- type: StandaloneOvsDpdk
name: yardstick
file: /etc/yardstick/nodes/standalone/pod_ovs.yaml
@@ -59,8 +59,8 @@ contexts:
vpath: "/usr/local"
flavor:
- images: "/var/lib/libvirt/images/ubuntu.qcow2"
- ram: 4096
+ images: "/var/lib/libvirt/images/yardstick-nsb-image.img"
+ ram: 16384
extra_specs:
hw:cpu_sockets: 1
hw:cpu_cores: 7
diff --git a/samples/vnf_samples/nsut/cgnapt/tc_sriov_rfc2544_ipv4_1rule_64B_trex.yaml b/samples/vnf_samples/nsut/cgnapt/tc_sriov_rfc2544_ipv4_1rule_64B_trex.yaml
index ec517bbef..523cb2eb3 100644
--- a/samples/vnf_samples/nsut/cgnapt/tc_sriov_rfc2544_ipv4_1rule_64B_trex.yaml
+++ b/samples/vnf_samples/nsut/cgnapt/tc_sriov_rfc2544_ipv4_1rule_64B_trex.yaml
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -19,8 +19,8 @@ scenarios:
traffic_profile: ../../traffic_profiles/ipv4_throughput_cgnapt.yaml
topology: cgnapt-vnf-topology.yaml
nodes:
- tg__0: tg__0.yardstick
- vnf__0: vnf.yardstick
+ tg__0: trafficgen_1.yardstick
+ vnf__0: vnf__0.yardstick
options:
framesize:
uplink: {64B: 100}
@@ -42,14 +42,14 @@ scenarios:
contexts:
- name: yardstick
type: Node
- file: /etc/yardstick/nodes/standalone/pod_trex.yaml
+ file: /etc/yardstick/nodes/standalone/trex_bm.yaml
- type: StandaloneSriov
file: /etc/yardstick/nodes/standalone/host_sriov.yaml
name: yardstick
vm_deploy: True
flavor:
- images: "/var/lib/libvirt/images/ubuntu.qcow2"
- ram: 4096
+ images: "/var/lib/libvirt/images/yardstick-nsb-image.img"
+ ram: 16384
extra_specs:
hw:cpu_sockets: 1
hw:cpu_cores: 7
@@ -57,7 +57,7 @@ contexts:
user: ""
password: ""
servers:
- vnf:
+ vnf__0:
network_ports:
mgmt:
cidr: '1.1.1.61/24'
diff --git a/samples/vnf_samples/nsut/udp_replay/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml b/samples/vnf_samples/nsut/udp_replay/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml
index bea9c8261..86c8f6ea8 100644
--- a/samples/vnf_samples/nsut/udp_replay/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml
+++ b/samples/vnf_samples/nsut/udp_replay/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@ scenarios:
traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml
topology: udp_replay-vnf-topology.yaml
nodes:
- tg__0: tg__0.yardstick
+ tg__0: trafficgen_1.yardstick
vnf__0: vnf__0.yardstick
options:
framesize:
@@ -41,7 +41,7 @@ scenarios:
contexts:
- name: yardstick
type: Node
- file: /etc/yardstick/nodes/standalone/pod_trex.yaml
+ file: /etc/yardstick/nodes/standalone/trex_bm.yaml
- type: StandaloneOvsDpdk
name: yardstick
file: /etc/yardstick/nodes/standalone/pod_ovs.yaml
@@ -58,8 +58,8 @@ contexts:
vpath: "/usr/local"
flavor:
- images: "/var/lib/libvirt/images/ubuntu.qcow2"
- ram: 4096
+ images: "/var/lib/libvirt/images/yardstick-nsb-image.img"
+ ram: 16384
extra_specs:
hw:cpu_sockets: 1
hw:cpu_cores: 7
diff --git a/samples/vnf_samples/nsut/udp_replay/tc_sriov_rfc2544_ipv4_1rule_64B_trex.yaml b/samples/vnf_samples/nsut/udp_replay/tc_sriov_rfc2544_ipv4_1rule_64B_trex.yaml
index 0867d6b51..f9bc8119e 100644
--- a/samples/vnf_samples/nsut/udp_replay/tc_sriov_rfc2544_ipv4_1rule_64B_trex.yaml
+++ b/samples/vnf_samples/nsut/udp_replay/tc_sriov_rfc2544_ipv4_1rule_64B_trex.yaml
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -19,8 +19,8 @@ scenarios:
traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml
topology: udp_replay-vnf-topology.yaml
nodes:
- tg__0: tg__0.yardstick
- vnf__0: vnf.yardstick
+ tg__0: trafficgen_1.yardstick
+ vnf__0: vnf__0.yardstick
options:
framesize:
uplink: {64B: 100}
@@ -41,14 +41,14 @@ scenarios:
contexts:
- name: yardstick
type: Node
- file: /etc/yardstick/nodes/standalone/pod_trex.yaml
+ file: /etc/yardstick/nodes/standalone/trex_bm.yaml
- type: StandaloneSriov
file: /etc/yardstick/nodes/standalone/host_sriov.yaml
name: yardstick
vm_deploy: True
flavor:
- images: "/var/lib/libvirt/images/ubuntu.qcow2"
- ram: 4096
+ images: "/var/lib/libvirt/images/yardstick-nsb-image.img"
+ ram: 16384
extra_specs:
hw:cpu_sockets: 1
hw:cpu_cores: 7
@@ -56,7 +56,7 @@ contexts:
user: ""
password: ""
servers:
- vnf:
+ vnf__0:
network_ports:
mgmt:
cidr: '1.1.1.61/24'
diff --git a/samples/vnf_samples/nsut/vfw/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml b/samples/vnf_samples/nsut/vfw/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
index 6b9ccb111..4aeadc6db 100644
--- a/samples/vnf_samples/nsut/vfw/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
+++ b/samples/vnf_samples/nsut/vfw/tc_ovs_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@ scenarios:
traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml
topology: vfw-tg-topology.yaml
nodes:
- tg__0: tg__0.yardstick
+ tg__0: trafficgen_1.yardstick
vnf__0: vnf__0.yardstick
options:
framesize:
@@ -42,7 +42,7 @@ scenarios:
contexts:
- name: yardstick
type: Node
- file: /etc/yardstick/nodes/standalone/pod_trex.yaml
+ file: /etc/yardstick/nodes/standalone/trex_bm.yaml
- type: StandaloneOvsDpdk
name: yardstick
file: /etc/yardstick/nodes/standalone/pod_ovs.yaml
@@ -59,8 +59,8 @@ contexts:
vpath: "/usr/local"
flavor:
- images: "/var/lib/libvirt/images/ubuntu.qcow2"
- ram: 4096
+ images: "/var/lib/libvirt/images/yardstick-nsb-image.img"
+ ram: 16384
extra_specs:
hw:cpu_sockets: 1
hw:cpu_cores: 6
diff --git a/samples/vnf_samples/nsut/vfw/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml b/samples/vnf_samples/nsut/vfw/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
index 0f1560183..221ead4f9 100644
--- a/samples/vnf_samples/nsut/vfw/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
+++ b/samples/vnf_samples/nsut/vfw/tc_sriov_rfc2544_ipv4_1rule_1flow_64B_trex.yaml
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -19,8 +19,8 @@ scenarios:
traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml
topology: vfw-tg-topology.yaml
nodes:
- tg__0: tg__0.yardstick
- vnf__0: vnf.yardstick
+ tg__0: trafficgen_1.yardstick
+ vnf__0: vnf__0.yardstick
options:
framesize:
uplink: {64B: 100}
@@ -42,14 +42,14 @@ scenarios:
contexts:
- name: yardstick
type: Node
- file: /etc/yardstick/nodes/standalone/pod_trex.yaml
+ file: /etc/yardstick/nodes/standalone/trex_bm.yaml
- type: StandaloneSriov
file: /etc/yardstick/nodes/standalone/host_sriov.yaml
name: yardstick
vm_deploy: True
flavor:
- images: "/var/lib/libvirt/images/ubuntu.qcow2"
- ram: 4096
+ images: "/var/lib/libvirt/images/yardstick-nsb-image.img"
+ ram: 16384
extra_specs:
hw:cpu_sockets: 1
hw:cpu_cores: 6
@@ -57,7 +57,7 @@ contexts:
user: ""
password: ""
servers:
- vnf:
+ vnf__0:
network_ports:
mgmt:
cidr: '1.1.1.61/24'
diff --git a/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml b/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml
index 2382e0292..ce239808e 100644
--- a/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml
+++ b/samples/vnf_samples/nsut/vpe/tc_ovs_rfc2544_ipv4_1rule_64B_trex.yaml
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@ scenarios:
traffic_profile: ../../traffic_profiles/ipv4_throughput_vpe.yaml
topology: vpe_vnf_topology.yaml
nodes:
- tg__0: tg__0.yardstick
+ tg__0: trafficgen_1.yardstick
vnf__0: vnf__0.yardstick
options:
framesize:
@@ -42,7 +42,7 @@ scenarios:
contexts:
- name: yardstick
type: Node
- file: /etc/yardstick/nodes/standalone/pod_trex.yaml
+ file: /etc/yardstick/nodes/standalone/trex_bm.yaml
- type: StandaloneOvsDpdk
name: yardstick
file: /etc/yardstick/nodes/standalone/pod_ovs.yaml
@@ -59,8 +59,8 @@ contexts:
vpath: "/usr/local"
flavor:
- images: "/var/lib/libvirt/images/ubuntu.qcow2"
- ram: 16364
+ images: "/var/lib/libvirt/images/yardstick-nsb-image.img"
+ ram: 20480
extra_specs:
hw:cpu_sockets: 1
hw:cpu_cores: 7
diff --git a/yardstick/benchmark/contexts/heat.py b/yardstick/benchmark/contexts/heat.py
index f118ffc32..c3c5451bd 100644
--- a/yardstick/benchmark/contexts/heat.py
+++ b/yardstick/benchmark/contexts/heat.py
@@ -59,6 +59,7 @@ class HeatContext(Context):
self.server_groups = []
self.keypair_name = None
self.secgroup_name = None
+ self.security_group = None
self._server_map = {}
self.attrs = {}
self._image = None
@@ -118,8 +119,11 @@ class HeatContext(Context):
return
self.keypair_name = h_join(self.name, "key")
+
self.secgroup_name = h_join(self.name, "secgroup")
+ self.security_group = attrs.get("security_group")
+
self._image = attrs.get("image")
self._flavor = attrs.get("flavor")
@@ -185,7 +189,7 @@ class HeatContext(Context):
self.flavors.add(flavor)
template.add_keypair(self.keypair_name, self.name)
- template.add_security_group(self.secgroup_name)
+ template.add_security_group(self.secgroup_name, self.security_group)
for network in self.networks.values():
# Using existing network
diff --git a/yardstick/common/constants.py b/yardstick/common/constants.py
index 3d775d48e..03733b6da 100644
--- a/yardstick/common/constants.py
+++ b/yardstick/common/constants.py
@@ -176,3 +176,7 @@ SCOPE_CLUSTER = 'Cluster'
# VNF definition
SSH_PORT = 22
LUA_PORT = 22022
+
+# IMIX mode
+DISTRIBUTION_IN_PACKETS = 'mode_DIP'
+DISTRIBUTION_IN_BYTES = 'mode_DIB'
diff --git a/yardstick/network_services/traffic_profile/rfc2544.py b/yardstick/network_services/traffic_profile/rfc2544.py
index 987029373..4b339c2ed 100644
--- a/yardstick/network_services/traffic_profile/rfc2544.py
+++ b/yardstick/network_services/traffic_profile/rfc2544.py
@@ -19,6 +19,7 @@ from trex_stl_lib import trex_stl_client
from trex_stl_lib import trex_stl_packet_builder_scapy
from trex_stl_lib import trex_stl_streams
+from yardstick.common import constants
from yardstick.network_services.traffic_profile import trex_traffic_profile
@@ -140,7 +141,8 @@ class RFC2544Profile(trex_traffic_profile.TrexProfile):
streams.extend(_streams)
return trex_stl_streams.STLProfile(streams)
- def _create_imix_data(self, imix):
+ def _create_imix_data(self, imix,
+ weight_mode=constants.DISTRIBUTION_IN_PACKETS):
"""Generate the IMIX distribution for a STL profile
The input information is the framesize dictionary in a test case
@@ -159,6 +161,20 @@ class RFC2544Profile(trex_traffic_profile.TrexProfile):
E.g.:
imix_count = {64: 25, 128: 75}
+ The weight mode is described in [1]. There are two ways to describe the
+ weight of the packets:
+ - Distribution in packets: the weight defines the percentage of
+ packets sent per packet size. IXIA uses this definition.
+ - Distribution in bytes: the weight defines the percentage of bytes
+ sent per packet size.
+
+ Packet size # packets D. in packets Bytes D. in bytes
+ 40 7 58.33% 280 7%
+ 576 4 33.33% 2304 56%
+ 1500 1 8.33% 1500 37%
+
+ [1] https://en.wikipedia.org/wiki/Internet_Mix
+
:param imix: (dict) IMIX size and weight
"""
imix_count = {}
@@ -173,8 +189,16 @@ class RFC2544Profile(trex_traffic_profile.TrexProfile):
imix_sum = 100
weight_normalize = float(imix_sum) / 100
- return {size: float(weight) / weight_normalize
- for size, weight in imix_count.items()}
+ imix_dip = {size: float(weight) / weight_normalize
+ for size, weight in imix_count.items()}
+
+ if weight_mode == constants.DISTRIBUTION_IN_BYTES:
+ return imix_dip
+
+ byte_total = sum([int(size) * weight
+ for size, weight in imix_dip.items()])
+ return {size: (int(size) * weight) / byte_total
+ for size, weight in imix_dip.items()}
def _create_vm(self, packet_definition):
"""Create the STL Raw instructions"""
diff --git a/yardstick/orchestrator/heat.py b/yardstick/orchestrator/heat.py
index 99a5760a3..9da4948dd 100644
--- a/yardstick/orchestrator/heat.py
+++ b/yardstick/orchestrator/heat.py
@@ -471,68 +471,77 @@ name (i.e. %s).
'value': {'get_resource': name}
}
- def add_security_group(self, name):
+ def add_security_group(self, name, security_group=None):
"""add to the template a Neutron SecurityGroup"""
log.debug("adding Neutron::SecurityGroup '%s'", name)
+ description = ("Group allowing IPv4 and IPv6 for icmp and upd/tcp on"
+ "all ports")
+ rules = [
+ {'remote_ip_prefix': '0.0.0.0/0',
+ 'protocol': 'tcp',
+ 'port_range_min': '1',
+ 'port_range_max': '65535'},
+ {'remote_ip_prefix': '0.0.0.0/0',
+ 'protocol': 'udp',
+ 'port_range_min': '1',
+ 'port_range_max': '65535'},
+ {'remote_ip_prefix': '0.0.0.0/0',
+ 'protocol': 'icmp'},
+ {'remote_ip_prefix': '::/0',
+ 'ethertype': 'IPv6',
+ 'protocol': 'tcp',
+ 'port_range_min': '1',
+ 'port_range_max': '65535'},
+ {'remote_ip_prefix': '::/0',
+ 'ethertype': 'IPv6',
+ 'protocol': 'udp',
+ 'port_range_min': '1',
+ 'port_range_max': '65535'},
+ {'remote_ip_prefix': '::/0',
+ 'ethertype': 'IPv6',
+ 'protocol': 'ipv6-icmp'},
+ {'remote_ip_prefix': '0.0.0.0/0',
+ 'direction': 'egress',
+ 'protocol': 'tcp',
+ 'port_range_min': '1',
+ 'port_range_max': '65535'},
+ {'remote_ip_prefix': '0.0.0.0/0',
+ 'direction': 'egress',
+ 'protocol': 'udp',
+ 'port_range_min': '1',
+ 'port_range_max': '65535'},
+ {'remote_ip_prefix': '0.0.0.0/0',
+ 'direction': 'egress',
+ 'protocol': 'icmp'},
+ {'remote_ip_prefix': '::/0',
+ 'direction': 'egress',
+ 'ethertype': 'IPv6',
+ 'protocol': 'tcp',
+ 'port_range_min': '1',
+ 'port_range_max': '65535'},
+ {'remote_ip_prefix': '::/0',
+ 'direction': 'egress',
+ 'ethertype': 'IPv6',
+ 'protocol': 'udp',
+ 'port_range_min': '1',
+ 'port_range_max': '65535'},
+ {'remote_ip_prefix': '::/0',
+ 'direction': 'egress',
+ 'ethertype': 'IPv6',
+ 'protocol': 'ipv6-icmp'},
+ ]
+ if security_group:
+ description = "Custom security group rules defined by the user"
+ rules = security_group.get('rules')
+
+ log.debug("The security group rules is %s", rules)
+
self.resources[name] = {
'type': 'OS::Neutron::SecurityGroup',
'properties': {
'name': name,
- 'description': "Group allowing IPv4 and IPv6 for icmp and upd/tcp on all ports",
- 'rules': [
- {'remote_ip_prefix': '0.0.0.0/0',
- 'protocol': 'tcp',
- 'port_range_min': '1',
- 'port_range_max': '65535'},
- {'remote_ip_prefix': '0.0.0.0/0',
- 'protocol': 'udp',
- 'port_range_min': '1',
- 'port_range_max': '65535'},
- {'remote_ip_prefix': '0.0.0.0/0',
- 'protocol': 'icmp'},
- {'remote_ip_prefix': '::/0',
- 'ethertype': 'IPv6',
- 'protocol': 'tcp',
- 'port_range_min': '1',
- 'port_range_max': '65535'},
- {'remote_ip_prefix': '::/0',
- 'ethertype': 'IPv6',
- 'protocol': 'udp',
- 'port_range_min': '1',
- 'port_range_max': '65535'},
- {'remote_ip_prefix': '::/0',
- 'ethertype': 'IPv6',
- 'protocol': 'ipv6-icmp'},
- {'remote_ip_prefix': '0.0.0.0/0',
- 'direction': 'egress',
- 'protocol': 'tcp',
- 'port_range_min': '1',
- 'port_range_max': '65535'},
- {'remote_ip_prefix': '0.0.0.0/0',
- 'direction': 'egress',
- 'protocol': 'udp',
- 'port_range_min': '1',
- 'port_range_max': '65535'},
- {'remote_ip_prefix': '0.0.0.0/0',
- 'direction': 'egress',
- 'protocol': 'icmp'},
- {'remote_ip_prefix': '::/0',
- 'direction': 'egress',
- 'ethertype': 'IPv6',
- 'protocol': 'tcp',
- 'port_range_min': '1',
- 'port_range_max': '65535'},
- {'remote_ip_prefix': '::/0',
- 'direction': 'egress',
- 'ethertype': 'IPv6',
- 'protocol': 'udp',
- 'port_range_min': '1',
- 'port_range_max': '65535'},
- {'remote_ip_prefix': '::/0',
- 'direction': 'egress',
- 'ethertype': 'IPv6',
- 'protocol': 'ipv6-icmp'},
- ]
+ 'description': description,
+ 'rules': rules
}
}
diff --git a/yardstick/tests/unit/benchmark/contexts/test_heat.py b/yardstick/tests/unit/benchmark/contexts/test_heat.py
index 7782d96bd..3ccae44c7 100644
--- a/yardstick/tests/unit/benchmark/contexts/test_heat.py
+++ b/yardstick/tests/unit/benchmark/contexts/test_heat.py
@@ -73,6 +73,7 @@ class HeatContextTestCase(unittest.TestCase):
self.assertEqual(self.test_context.server_groups, [])
self.assertIsNone(self.test_context.keypair_name)
self.assertIsNone(self.test_context.secgroup_name)
+ self.assertIsNone(self.test_context.security_group)
self.assertEqual(self.test_context._server_map, {})
self.assertIsNone(self.test_context._image)
self.assertIsNone(self.test_context._flavor)
@@ -192,7 +193,7 @@ class HeatContextTestCase(unittest.TestCase):
mock_template.add_keypair.assert_called_with(
"ctx-key",
"ctx-12345678")
- mock_template.add_security_group.assert_called_with("ctx-secgroup")
+ mock_template.add_security_group.assert_called_with("ctx-secgroup", None)
mock_template.add_network.assert_called_with(
"ctx-12345678-mynet", 'physnet1', None, None, None, None)
mock_template.add_router.assert_called_with(
diff --git a/yardstick/tests/unit/network_services/traffic_profile/test_rfc2544.py b/yardstick/tests/unit/network_services/traffic_profile/test_rfc2544.py
index cfeebaa3a..4c546d7ef 100644
--- a/yardstick/tests/unit/network_services/traffic_profile/test_rfc2544.py
+++ b/yardstick/tests/unit/network_services/traffic_profile/test_rfc2544.py
@@ -20,6 +20,7 @@ from trex_stl_lib import trex_stl_client
from trex_stl_lib import trex_stl_packet_builder_scapy
from trex_stl_lib import trex_stl_streams
+from yardstick.common import constants
from yardstick.network_services.traffic_profile import rfc2544
from yardstick.tests.unit import base
@@ -140,16 +141,38 @@ class TestRFC2544Profile(base.BaseUnitTestCase):
port_pg_id, True)
mock_stl_profile.assert_called_once_with(['stream1'])
- def test__create_imix_data(self):
+ def test__create_imix_data_mode_DIB(self):
rfc2544_profile = rfc2544.RFC2544Profile(self.TRAFFIC_PROFILE)
data = {'64B': 50, '128B': 50}
- self.assertEqual({'64': 50.0, '128': 50.0},
- rfc2544_profile._create_imix_data(data))
+ self.assertEqual(
+ {'64': 50.0, '128': 50.0},
+ rfc2544_profile._create_imix_data(
+ data, weight_mode=constants.DISTRIBUTION_IN_BYTES))
data = {'64B': 1, '128b': 3}
- self.assertEqual({'64': 25.0, '128': 75.0},
- rfc2544_profile._create_imix_data(data))
+ self.assertEqual(
+ {'64': 25.0, '128': 75.0},
+ rfc2544_profile._create_imix_data(
+ data, weight_mode=constants.DISTRIBUTION_IN_BYTES))
data = {}
- self.assertEqual({}, rfc2544_profile._create_imix_data(data))
+ self.assertEqual(
+ {},
+ rfc2544_profile._create_imix_data(
+ data, weight_mode=constants.DISTRIBUTION_IN_BYTES))
+
+ def test__create_imix_data_mode_DIP(self):
+ rfc2544_profile = rfc2544.RFC2544Profile(self.TRAFFIC_PROFILE)
+ data = {'64B': 25, '128B': 25, '512B': 25, '1518B': 25}
+ byte_total = 64 * 25 + 128 * 25 + 512 * 25 + 1518 * 25
+ self.assertEqual(
+ {'64': 64 * 25.0 / byte_total, '128': 128 * 25.0 / byte_total,
+ '512': 512 * 25.0 / byte_total, '1518': 1518 * 25.0 / byte_total},
+ rfc2544_profile._create_imix_data(
+ data, weight_mode=constants.DISTRIBUTION_IN_PACKETS))
+ data = {}
+ self.assertEqual(
+ {},
+ rfc2544_profile._create_imix_data(
+ data, weight_mode=constants.DISTRIBUTION_IN_PACKETS))
def test__create_vm(self):
packet = {'outer_l2': 'l2_definition'}
diff --git a/yardstick/tests/unit/orchestrator/test_heat.py b/yardstick/tests/unit/orchestrator/test_heat.py
index 3ec59a3c2..2e60a72cb 100644
--- a/yardstick/tests/unit/orchestrator/test_heat.py
+++ b/yardstick/tests/unit/orchestrator/test_heat.py
@@ -256,6 +256,25 @@ class HeatTemplateTestCase(unittest.TestCase):
self.assertEqual(self.template.resources['some-server-group'][
'properties']['policies'], ['anti-affinity'])
+ def test_add_security_group(self):
+ security_group = {
+ 'rules': [
+ {'remote_ip_prefix': '0.0.0.0/0',
+ 'port_range_max': 65535,
+ 'port_range_min': 1,
+ 'protocol': 'custom'},
+ ]
+ }
+ self.template.add_security_group('some-security-group', security_group)
+
+ secgroup_rsc = self.template.resources['some-security-group']
+
+ self.assertEqual(secgroup_rsc['type'], "OS::Neutron::SecurityGroup")
+ self.assertEqual(secgroup_rsc['properties']['description'],
+ "Custom security group rules defined by the user")
+ self.assertEqual(secgroup_rsc['properties']['rules'][0]['protocol'],
+ 'custom')
+
def test__add_resources_to_template_raw(self):
test_context = node.NodeContext()
self.addCleanup(test_context._delete_context)