Browse Source

Add custom shaker scenarios for testing of DVS plugin.

Change-Id: I9b11f1b46a0f36d6a088e5ce64cd63485270ef58
Vasily Gorin 2 years ago
parent
commit
2c5b5c72fd

+ 102
- 0
plugin_test/shaker-scenarios/cross_az/l2.hot View File

@@ -0,0 +1,102 @@
1
+heat_template_version: 2013-05-23
2
+
3
+description:
4
+  This Heat template creates a new Neutron network, a router to the external
5
+  network and plugs instances into this new network. All instances are located
6
+  in the same L2 domain.
7
+
8
+parameters:
9
+  image:
10
+    type: string
11
+    description: Name of image to use for servers
12
+  flavor:
13
+    type: string
14
+    description: Flavor to use for servers
15
+  external_net:
16
+    type: string
17
+    description: ID or name of external network
18
+  server_endpoint:
19
+    type: string
20
+    description: Server endpoint address
21
+  dns_nameservers:
22
+    type: comma_delimited_list
23
+    description: DNS nameservers for the subnet
24
+
25
+resources:
26
+  private_net:
27
+    type: OS::Neutron::Net
28
+    properties:
29
+      name: {{ unique }}_net
30
+
31
+  private_subnet:
32
+    type: OS::Neutron::Subnet
33
+    properties:
34
+      network_id: { get_resource: private_net }
35
+      cidr: 10.0.0.0/16
36
+      dns_nameservers: { get_param: dns_nameservers }
37
+
38
+  router:
39
+    type: OS::Neutron::Router
40
+    properties:
41
+      external_gateway_info:
42
+        network: { get_param: external_net }
43
+
44
+  router_interface:
45
+    type: OS::Neutron::RouterInterface
46
+    properties:
47
+      router_id: { get_resource: router }
48
+      subnet_id: { get_resource: private_subnet }
49
+
50
+  server_security_group:
51
+    type: OS::Neutron::SecurityGroup
52
+    properties:
53
+      rules: [
54
+        {remote_ip_prefix: 0.0.0.0/0,
55
+        protocol: tcp,
56
+        port_range_min: 1,
57
+        port_range_max: 65535},
58
+        {remote_ip_prefix: 0.0.0.0/0,
59
+        protocol: udp,
60
+        port_range_min: 1,
61
+        port_range_max: 65535},
62
+        {remote_ip_prefix: 0.0.0.0/0,
63
+        protocol: icmp}]
64
+
65
+{% for agent in agents.values() %}
66
+
67
+  {{ agent.id }}:
68
+    type: OS::Nova::Server
69
+    properties:
70
+      name: {{ agent.id }}
71
+      image: {% if agent.zone == 'nova' %} shaker-image-nova {% else %} shaker-image-vcenter {% endif %}
72
+      flavor: { get_param: flavor }
73
+      availability_zone: "{{ agent.availability_zone }}"
74
+      networks:
75
+        - port: { get_resource: {{ agent.id }}_port }
76
+      user_data_format: RAW
77
+      user_data:
78
+        str_replace:
79
+          template: |
80
+            #!/bin/sh
81
+            screen -dmS shaker-agent-screen shaker-agent --server-endpoint=$SERVER_ENDPOINT --agent-id=$AGENT_ID
82
+          params:
83
+            "$SERVER_ENDPOINT": { get_param: server_endpoint }
84
+            "$AGENT_ID": {{ agent.id }}
85
+
86
+  {{ agent.id }}_port:
87
+    type: OS::Neutron::Port
88
+    properties:
89
+      network_id: { get_resource: private_net }
90
+      fixed_ips:
91
+        - subnet_id: { get_resource: private_subnet }
92
+      security_groups: [{ get_resource: server_security_group }]
93
+
94
+{% endfor %}
95
+
96
+outputs:
97
+{% for agent in agents.values() %}
98
+  {{ agent.id }}_instance_name:
99
+    value: { get_attr: [ {{ agent.id }}, instance_name ] }
100
+  {{ agent.id }}_ip:
101
+    value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [private_net, name] }, 0 ] }
102
+{% endfor %}

+ 134
- 0
plugin_test/shaker-scenarios/cross_az/l3_east_west.hot View File

@@ -0,0 +1,134 @@
1
+heat_template_version: 2013-05-23
2
+
3
+description:
4
+  This Heat template creates a pair of networks plugged into the same router.
5
+  Master instances and slave instances are connected into different networks.
6
+
7
+parameters:
8
+  image:
9
+    type: string
10
+    description: Name of image to use for servers
11
+  flavor:
12
+    type: string
13
+    description: Flavor to use for servers
14
+  external_net:
15
+    type: string
16
+    description: ID or name of external network for which floating IP addresses will be allocated
17
+  server_endpoint:
18
+    type: string
19
+    description: Server endpoint address
20
+  dns_nameservers:
21
+    type: comma_delimited_list
22
+    description: DNS nameservers for the subnets
23
+
24
+resources:
25
+  east_private_net:
26
+    type: OS::Neutron::Net
27
+    properties:
28
+      name: {{ unique }}_net_east
29
+
30
+  east_private_subnet:
31
+    type: OS::Neutron::Subnet
32
+    properties:
33
+      network_id: { get_resource: east_private_net }
34
+      cidr: 10.1.0.0/16
35
+      dns_nameservers: { get_param: dns_nameservers }
36
+
37
+  router:
38
+    type: OS::Neutron::Router
39
+    properties:
40
+      external_gateway_info:
41
+        network: { get_param: external_net }
42
+
43
+  router_interface:
44
+    type: OS::Neutron::RouterInterface
45
+    properties:
46
+      router_id: { get_resource: router }
47
+      subnet_id: { get_resource: east_private_subnet }
48
+
49
+  west_private_net:
50
+    type: OS::Neutron::Net
51
+    properties:
52
+      name: {{ unique }}_net_west
53
+
54
+  west_private_subnet:
55
+    type: OS::Neutron::Subnet
56
+    properties:
57
+      network_id: { get_resource: west_private_net }
58
+      cidr: 10.2.0.0/16
59
+      dns_nameservers: { get_param: dns_nameservers }
60
+
61
+  router_interface_2:
62
+    type: OS::Neutron::RouterInterface
63
+    properties:
64
+      router_id: { get_resource: router }
65
+      subnet_id: { get_resource: west_private_subnet }
66
+
67
+  server_security_group:
68
+    type: OS::Neutron::SecurityGroup
69
+    properties:
70
+      rules: [
71
+        {remote_ip_prefix: 0.0.0.0/0,
72
+        protocol: tcp,
73
+        port_range_min: 1,
74
+        port_range_max: 65535},
75
+        {remote_ip_prefix: 0.0.0.0/0,
76
+        protocol: udp,
77
+        port_range_min: 1,
78
+        port_range_max: 65535},
79
+        {remote_ip_prefix: 0.0.0.0/0,
80
+        protocol: icmp}]
81
+
82
+{% for agent in agents.values() %}
83
+
84
+  {{ agent.id }}:
85
+    type: OS::Nova::Server
86
+    properties:
87
+      name: {{ agent.id }}
88
+      image: {% if agent.zone == 'nova' %} shaker-image-nova {% else %} shaker-image-vcenter {% endif %}
89
+      flavor: { get_param: flavor }
90
+      availability_zone: "{{ agent.availability_zone }}"
91
+      networks:
92
+        - port: { get_resource: {{ agent.id }}_port }
93
+      user_data_format: RAW
94
+      user_data:
95
+        str_replace:
96
+          template: |
97
+            #!/bin/sh
98
+            screen -dmS shaker-agent-screen shaker-agent --server-endpoint=$SERVER_ENDPOINT --agent-id=$AGENT_ID
99
+          params:
100
+            "$SERVER_ENDPOINT": { get_param: server_endpoint }
101
+            "$AGENT_ID": {{ agent.id }}
102
+
103
+{% if agent.mode == 'master' %}
104
+  {{ agent.id }}_port:
105
+    type: OS::Neutron::Port
106
+    properties:
107
+      network_id: { get_resource: east_private_net }
108
+      fixed_ips:
109
+        - subnet_id: { get_resource: east_private_subnet }
110
+      security_groups: [{ get_resource: server_security_group }]
111
+{% else %}
112
+  {{ agent.id }}_port:
113
+    type: OS::Neutron::Port
114
+    properties:
115
+      network_id: { get_resource: west_private_net }
116
+      fixed_ips:
117
+        - subnet_id: { get_resource: west_private_subnet }
118
+      security_groups: [{ get_resource: server_security_group }]
119
+{% endif %}
120
+
121
+{% endfor %}
122
+
123
+outputs:
124
+{% for agent in agents.values() %}
125
+  {{ agent.id }}_instance_name:
126
+    value: { get_attr: [ {{ agent.id }}, instance_name ] }
127
+{% if agent.mode == 'master' %}
128
+  {{ agent.id }}_ip:
129
+    value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [east_private_net, name] }, 0 ] }
130
+{% else %}
131
+  {{ agent.id }}_ip:
132
+    value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [west_private_net, name] }, 0 ] }
133
+{% endif %}
134
+{% endfor %}

+ 147
- 0
plugin_test/shaker-scenarios/cross_az/l3_north_south.hot View File

@@ -0,0 +1,147 @@
1
+heat_template_version: 2013-05-23
2
+
3
+description: >
4
+  This Heat template creates a new Neutron network plus a north_router to the
5
+  external network. The template also assigns floating IP addresses to each
6
+  instance so they are routable from the external network.
7
+
8
+parameters:
9
+  image:
10
+    type: string
11
+    description: Name of image to use for servers
12
+  flavor:
13
+    type: string
14
+    description: Flavor to use for servers
15
+  external_net:
16
+    type: string
17
+    description: ID or name of external network for which floating IP addresses will be allocated
18
+  server_endpoint:
19
+    type: string
20
+    description: Server endpoint address
21
+  dns_nameservers:
22
+    type: comma_delimited_list
23
+    description: DNS nameservers for the subnets
24
+
25
+resources:
26
+  north_private_net:
27
+    type: OS::Neutron::Net
28
+    properties:
29
+      name: {{ unique }}_net_north
30
+
31
+  north_private_subnet:
32
+    type: OS::Neutron::Subnet
33
+    properties:
34
+      network_id: { get_resource: north_private_net }
35
+      cidr: 10.1.0.0/16
36
+      dns_nameservers: { get_param: dns_nameservers }
37
+
38
+  north_router:
39
+    type: OS::Neutron::Router
40
+    properties:
41
+      external_gateway_info:
42
+        network: { get_param: external_net }
43
+
44
+  router_interface:
45
+    type: OS::Neutron::RouterInterface
46
+    properties:
47
+      router_id: { get_resource: north_router }
48
+      subnet_id: { get_resource: north_private_subnet }
49
+
50
+  south_private_net:
51
+    type: OS::Neutron::Net
52
+    properties:
53
+      name: {{ unique }}_net_south
54
+
55
+  south_private_subnet:
56
+    type: OS::Neutron::Subnet
57
+    properties:
58
+      network_id: { get_resource: south_private_net }
59
+      cidr: 10.2.0.0/16
60
+      dns_nameservers: { get_param: dns_nameservers }
61
+
62
+  south_router:
63
+    type: OS::Neutron::Router
64
+    properties:
65
+      external_gateway_info:
66
+        network: { get_param: external_net }
67
+
68
+  router_interface_2:
69
+    type: OS::Neutron::RouterInterface
70
+    properties:
71
+      router_id: { get_resource: south_router }
72
+      subnet_id: { get_resource: south_private_subnet }
73
+
74
+  server_security_group:
75
+    type: OS::Neutron::SecurityGroup
76
+    properties:
77
+      rules: [
78
+        {remote_ip_prefix: 0.0.0.0/0,
79
+        protocol: tcp,
80
+        port_range_min: 1,
81
+        port_range_max: 65535},
82
+        {remote_ip_prefix: 0.0.0.0/0,
83
+        protocol: udp,
84
+        port_range_min: 1,
85
+        port_range_max: 65535},
86
+        {remote_ip_prefix: 0.0.0.0/0,
87
+        protocol: icmp}]
88
+
89
+{% for agent in agents.values() %}
90
+
91
+  {{ agent.id }}:
92
+    type: OS::Nova::Server
93
+    properties:
94
+      name: {{ agent.id }}
95
+      image: {% if agent.zone == 'nova' %} shaker-image-nova {% else %} shaker-image-vcenter {% endif %}
96
+      flavor: { get_param: flavor }
97
+      availability_zone: "{{ agent.availability_zone }}"
98
+      networks:
99
+        - port: { get_resource: {{ agent.id }}_port }
100
+      user_data_format: RAW
101
+      user_data:
102
+        str_replace:
103
+          template: |
104
+            #!/bin/sh
105
+            screen -dmS shaker-agent-screen shaker-agent --server-endpoint=$SERVER_ENDPOINT --agent-id=$AGENT_ID
106
+          params:
107
+            "$SERVER_ENDPOINT": { get_param: server_endpoint }
108
+            "$AGENT_ID": {{ agent.id }}
109
+
110
+{% if agent.mode == 'master' %}
111
+  {{ agent.id }}_port:
112
+    type: OS::Neutron::Port
113
+    properties:
114
+      network_id: { get_resource: north_private_net }
115
+      fixed_ips:
116
+        - subnet_id: { get_resource: north_private_subnet }
117
+      security_groups: [{ get_resource: server_security_group }]
118
+{% else %}
119
+  {{ agent.id }}_port:
120
+    type: OS::Neutron::Port
121
+    properties:
122
+      network_id: { get_resource: south_private_net }
123
+      fixed_ips:
124
+        - subnet_id: { get_resource: south_private_subnet }
125
+      security_groups: [{ get_resource: server_security_group }]
126
+
127
+  {{ agent.id }}_floating_ip:
128
+    type: OS::Neutron::FloatingIP
129
+    properties:
130
+      floating_network: { get_param: external_net }
131
+      port_id: { get_resource: {{ agent.id }}_port }
132
+{% endif %}
133
+
134
+{% endfor %}
135
+
136
+outputs:
137
+{% for agent in agents.values() %}
138
+  {{ agent.id }}_instance_name:
139
+    value: { get_attr: [ {{ agent.id }}, instance_name ] }
140
+{% if agent.mode == 'master' %}
141
+  {{ agent.id }}_ip:
142
+    value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [north_private_net, name] }, 0 ] }
143
+{% else %}
144
+  {{ agent.id }}_ip:
145
+    value: { get_attr: [ {{ agent.id }}_floating_ip, floating_ip_address ] }
146
+{% endif %}
147
+{% endfor %}

+ 57
- 0
plugin_test/shaker-scenarios/cross_az/perf_l2.yaml View File

@@ -0,0 +1,57 @@
1
+title: OpenStack L2 Cross-AZ Performance
2
+
3
+description:
4
+  In this scenario Shaker launches 1 pair of instances in the same tenant
5
+  network. Each instance is hosted on a separate compute node.
6
+  The master and slave instances are in different availability zones.
7
+  The scenario is used to test throughput between `nova` and `vcenter` zones.
8
+
9
+deployment:
10
+  template: l2.hot
11
+  accommodation: [pair, single_room, zones: [nova, vcenter], cross_az, compute_nodes: 2]
12
+
13
+execution:
14
+  tests:
15
+  -
16
+    title: Ping
17
+    class: flent
18
+    method: ping
19
+    time: 10
20
+    sla:
21
+    - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
22
+  -
23
+    title: TCP
24
+    class: iperf3
25
+    time: 600
26
+    sla:
27
+    - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
28
+    - "[type == 'agent'] >> (stats.retransmits.max < 10)"
29
+  -
30
+    title: UDP64
31
+    class: iperf3
32
+    udp: on
33
+    bandwidth: 0
34
+    time: 600
35
+    datagram_size: 64
36
+    sla:
37
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
38
+  -
39
+    title: UDP1500
40
+    class: iperf3
41
+    udp: on
42
+    time: 600
43
+    bandwidth: 0
44
+    datagram_size: 1500
45
+    sla:
46
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
47
+  -
48
+    title: UDP9000
49
+    class: iperf3
50
+    udp: on
51
+    time: 600
52
+    bandwidth: 1000M
53
+    buffer_size: 8950
54
+    datagram_size: 9000
55
+    sla:
56
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
57
+

+ 60
- 0
plugin_test/shaker-scenarios/cross_az/perf_l3_east_west.yaml View File

@@ -0,0 +1,60 @@
1
+title: OpenStack L3 East-West Cross-AZ Performance
2
+
3
+description:
4
+  In this scenario Shaker launches 1 pair of instances, each instance on its own
5
+  compute node. Instances are connected to one of 2 tenant networks, which
6
+  plugged into single router. The traffic goes from one network to the other
7
+  (L3 east-west).
8
+  The master and slave instances are in different availability zones.
9
+  The scenario is used to test throughput between `nova` and `vcenter` zones.
10
+
11
+deployment:
12
+  template: l3_east_west.hot
13
+  accommodation: [pair, single_room, zones: [nova, vcenter], cross_az, compute_nodes: 2]
14
+
15
+execution:
16
+  tests:
17
+  -
18
+    title: Ping
19
+    class: flent
20
+    method: ping
21
+    time: 10
22
+    sla:
23
+    - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
24
+  -
25
+    title: TCP
26
+    class: iperf3
27
+    time: 600
28
+    sla:
29
+    - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
30
+    - "[type == 'agent'] >> (stats.retransmits.max < 10)"
31
+  -
32
+    title: UDP_64
33
+    class: iperf3
34
+    udp: on
35
+    bandwidth: 0
36
+    time: 600
37
+    datagram_size: 64
38
+    sla:
39
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
40
+
41
+  -
42
+    title: UDP_1500
43
+    class: iperf3
44
+    udp: on
45
+    bandwidth: 0
46
+    time: 600
47
+    datagram_size: 1500
48
+    sla:
49
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
50
+
51
+  -
52
+    title: UDP_JUMBO
53
+    class: iperf3
54
+    udp: on
55
+    bandwidth: 1000M
56
+    time: 600
57
+    buffer_size: 8950
58
+    datagram_size: 9000
59
+    sla:
60
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"

+ 58
- 0
plugin_test/shaker-scenarios/cross_az/perf_l3_north_south.yaml View File

@@ -0,0 +1,58 @@
1
+title: OpenStack L3 North-South Cross-AZ Performance
2
+
3
+description:
4
+  In this scenario Shaker launches 1 pair of instances on different compute
5
+  nodes. Instances are in different networks connected to different routers,
6
+  master accesses slave by floating ip. The traffic goes from one network
7
+  via external network to the other network.
8
+  The master and slave instances are in different availability zones.
9
+  The scenario is used to test throughput between `nova` and `vcenter` zones.
10
+
11
+deployment:
12
+  template: l3_north_south.hot
13
+  accommodation: [pair, single_room, zones: [nova, vcenter], cross_az, compute_nodes: 2]
14
+
15
+execution:
16
+  tests:
17
+  -
18
+    title: Ping
19
+    class: flent
20
+    method: ping
21
+    time: 10
22
+    sla:
23
+    - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
24
+  -
25
+    title: TCP
26
+    class: iperf3
27
+    time: 600
28
+    sla:
29
+    - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
30
+    - "[type == 'agent'] >> (stats.retransmits.max < 10)"
31
+  -
32
+    title: UDP64
33
+    class: iperf3
34
+    udp: on
35
+    time: 600
36
+    bandwidth: 0
37
+    datagram_size: 32
38
+    sla:
39
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
40
+  -
41
+    title: UDP1500
42
+    class: iperf3
43
+    udp: on
44
+    time: 600
45
+    bandwidth: 0
46
+    datagram_size: 1500
47
+    sla:
48
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
49
+  -
50
+    title: UDP_JUMBO
51
+    class: iperf3
52
+    udp: on
53
+    time: 600
54
+    bandwidth: 1000M
55
+    buffer_size: 8950
56
+    datagram_size: 9000
57
+    sla:
58
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"

+ 129
- 0
plugin_test/shaker-scenarios/run_shaker_scenarios.sh View File

@@ -0,0 +1,129 @@
1
+#!/bin/bash
2
+
3
+INVALIDOPTS_ERR=100
4
+NOTYPENAME=101
5
+NOSCENARIOS=102
6
+
7
+ShowHelp() {
8
+cat << EOF
9
+Run shaker scenarios
10
+
11
+-t (name)    - Types name of suite to run scenarios. It can be cross_az or single_zone
12
+              Uses TYPE if not set.
13
+-s (list)    - Names of shaker scenarios separated by space
14
+              Uses SHAKER_SCENARIOS if not set. See file name in folders cross_az and single_zone.
15
+              Names can be specified as <name>.yaml ar <name>
16
+-i (name)    - Shaker image name which is using in Openstack to run Shaker
17
+-n           - No debug
18
+-h           - Show this message
19
+
20
+EOF
21
+}
22
+
23
+function log_info {
24
+    message=$1
25
+    date "+%d/%m/%y  %H:%M:%S  INFO: $message"
26
+}
27
+
28
+function log_error {
29
+    message=$1
30
+    date "+%d-%m-%y  %H:%M:%S  ERROR: $message"
31
+}
32
+
33
+GetoptsVariables() {
34
+  while getopts ":t:s:i:nh" opt; do
35
+    case ${opt} in
36
+      t)
37
+        TYPE="${OPTARG}"
38
+        ;;
39
+      s)
40
+        SHAKER_SCENARIOS="${OPTARG}"
41
+        ;;
42
+      i)
43
+        SHAKER_IMAGE="${OPTARG}"
44
+        ;;
45
+      n)
46
+        NODEBUG="--nodebug"
47
+        ;;
48
+      h)
49
+        ShowHelp
50
+        exit 0
51
+        ;;
52
+      \?)
53
+        echo "Invalid option: -$OPTARG"
54
+        ShowHelp
55
+        exit ${INVALIDOPTS_ERR}
56
+        ;;
57
+      :)
58
+        echo "Option -$OPTARG requires an argument."
59
+        ShowHelp
60
+        exit ${INVALIDOPTS_ERR}
61
+        ;;
62
+    esac
63
+  done
64
+}
65
+
66
+CheckVariables() {
67
+
68
+  if [ -z "${SHAKER_SCENARIOS}" ]; then
69
+    echo "Error! SHAKER_SCENARIOS is not set!"
70
+    exit ${NOSCENARIOS}
71
+  fi
72
+
73
+  if [ -z "${TYPE}" ]; then
74
+    echo "Error! TYPE is not set!"
75
+    exit ${NOTYPENAME}
76
+  fi
77
+
78
+  if [ -n "${SHAKER_IMAGE}" ]; then
79
+    SHAKER_IMAGE="--image-name $SHAKER_IMAGE"
80
+  fi
81
+
82
+}
83
+
84
+MakeDir() {
85
+
86
+start_time=$(date "+%H:%M:%S_%d-%m-%y")
87
+reports_folder=reports/${TYPE}/${start_time}
88
+output_folder=output/${TYPE}/${start_time}
89
+
90
+mkdir -p ${reports_folder}
91
+mkdir -p ${output_folder}
92
+
93
+}
94
+
95
+
96
+RunTests() {
97
+
98
+log_info "Following groups should be run: $SHAKER_SCENARIOS"
99
+
100
+for group in ${SHAKER_SCENARIOS}
101
+do
102
+
103
+name=$(echo ${group} | sed 's/.yaml//')
104
+log_info "Start group: $group"
105
+scenario=${TYPE}/${group}
106
+
107
+SHAKER="shaker ${NODEBUG} --scenario ${scenario} --report ${reports_folder}/${name}.html --output ${output_folder}/${name}.json ${SHAKER_IMAGE}"
108
+log_info "Command to run: ${SHAKER}"
109
+
110
+${SHAKER}
111
+if [ $? != 0 ]; then
112
+log_error "Something went wrong in group $group"
113
+fi
114
+
115
+sleep 5
116
+done
117
+
118
+}
119
+
120
+# first we want to get variable from command line options
121
+GetoptsVariables "${@}"
122
+
123
+# check do we have all critical variables set
124
+CheckVariables
125
+
126
+# make reports and outputs directories
127
+MakeDir
128
+
129
+RunTests

+ 102
- 0
plugin_test/shaker-scenarios/single-zone/l2.hot View File

@@ -0,0 +1,102 @@
1
+heat_template_version: 2013-05-23
2
+
3
+description:
4
+  This Heat template creates a new Neutron network, a router to the external
5
+  network and plugs instances into this new network. All instances are located
6
+  in the same L2 domain.
7
+
8
+parameters:
9
+  image:
10
+    type: string
11
+    description: Name of image to use for servers
12
+  flavor:
13
+    type: string
14
+    description: Flavor to use for servers
15
+  external_net:
16
+    type: string
17
+    description: ID or name of external network
18
+  server_endpoint:
19
+    type: string
20
+    description: Server endpoint address
21
+  dns_nameservers:
22
+    type: comma_delimited_list
23
+    description: DNS nameservers for the subnet
24
+
25
+resources:
26
+  private_net:
27
+    type: OS::Neutron::Net
28
+    properties:
29
+      name: {{ unique }}_net
30
+
31
+  private_subnet:
32
+    type: OS::Neutron::Subnet
33
+    properties:
34
+      network_id: { get_resource: private_net }
35
+      cidr: 10.0.0.0/16
36
+      dns_nameservers: { get_param: dns_nameservers }
37
+
38
+  router:
39
+    type: OS::Neutron::Router
40
+    properties:
41
+      external_gateway_info:
42
+        network: { get_param: external_net }
43
+
44
+  router_interface:
45
+    type: OS::Neutron::RouterInterface
46
+    properties:
47
+      router_id: { get_resource: router }
48
+      subnet_id: { get_resource: private_subnet }
49
+
50
+  server_security_group:
51
+    type: OS::Neutron::SecurityGroup
52
+    properties:
53
+      rules: [
54
+        {remote_ip_prefix: 0.0.0.0/0,
55
+        protocol: tcp,
56
+        port_range_min: 1,
57
+        port_range_max: 65535},
58
+        {remote_ip_prefix: 0.0.0.0/0,
59
+        protocol: udp,
60
+        port_range_min: 1,
61
+        port_range_max: 65535},
62
+        {remote_ip_prefix: 0.0.0.0/0,
63
+        protocol: icmp}]
64
+
65
+{% for agent in agents.values() %}
66
+
67
+  {{ agent.id }}:
68
+    type: OS::Nova::Server
69
+    properties:
70
+      name: {{ agent.id }}
71
+      image: { get_param: image }
72
+      flavor: { get_param: flavor }
73
+      availability_zone: "{{ agent.availability_zone }}"
74
+      networks:
75
+        - port: { get_resource: {{ agent.id }}_port }
76
+      user_data_format: RAW
77
+      user_data:
78
+        str_replace:
79
+          template: |
80
+            #!/bin/sh
81
+            screen -dmS shaker-agent-screen shaker-agent --server-endpoint=$SERVER_ENDPOINT --agent-id=$AGENT_ID
82
+          params:
83
+            "$SERVER_ENDPOINT": { get_param: server_endpoint }
84
+            "$AGENT_ID": {{ agent.id }}
85
+
86
+  {{ agent.id }}_port:
87
+    type: OS::Neutron::Port
88
+    properties:
89
+      network_id: { get_resource: private_net }
90
+      fixed_ips:
91
+        - subnet_id: { get_resource: private_subnet }
92
+      security_groups: [{ get_resource: server_security_group }]
93
+
94
+{% endfor %}
95
+
96
+outputs:
97
+{% for agent in agents.values() %}
98
+  {{ agent.id }}_instance_name:
99
+    value: { get_attr: [ {{ agent.id }}, instance_name ] }
100
+  {{ agent.id }}_ip:
101
+    value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [private_net, name] }, 0 ] }
102
+{% endfor %}

+ 134
- 0
plugin_test/shaker-scenarios/single-zone/l3_east_west.hot View File

@@ -0,0 +1,134 @@
1
+heat_template_version: 2013-05-23
2
+
3
+description:
4
+  This Heat template creates a pair of networks plugged into the same router.
5
+  Master instances and slave instances are connected into different networks.
6
+
7
+parameters:
8
+  image:
9
+    type: string
10
+    description: Name of image to use for servers
11
+  flavor:
12
+    type: string
13
+    description: Flavor to use for servers
14
+  external_net:
15
+    type: string
16
+    description: ID or name of external network for which floating IP addresses will be allocated
17
+  server_endpoint:
18
+    type: string
19
+    description: Server endpoint address
20
+  dns_nameservers:
21
+    type: comma_delimited_list
22
+    description: DNS nameservers for the subnets
23
+
24
+resources:
25
+  east_private_net:
26
+    type: OS::Neutron::Net
27
+    properties:
28
+      name: {{ unique }}_net_east
29
+
30
+  east_private_subnet:
31
+    type: OS::Neutron::Subnet
32
+    properties:
33
+      network_id: { get_resource: east_private_net }
34
+      cidr: 10.1.0.0/16
35
+      dns_nameservers: { get_param: dns_nameservers }
36
+
37
+  router:
38
+    type: OS::Neutron::Router
39
+    properties:
40
+      external_gateway_info:
41
+        network: { get_param: external_net }
42
+
43
+  router_interface:
44
+    type: OS::Neutron::RouterInterface
45
+    properties:
46
+      router_id: { get_resource: router }
47
+      subnet_id: { get_resource: east_private_subnet }
48
+
49
+  west_private_net:
50
+    type: OS::Neutron::Net
51
+    properties:
52
+      name: {{ unique }}_net_west
53
+
54
+  west_private_subnet:
55
+    type: OS::Neutron::Subnet
56
+    properties:
57
+      network_id: { get_resource: west_private_net }
58
+      cidr: 10.2.0.0/16
59
+      dns_nameservers: { get_param: dns_nameservers }
60
+
61
+  router_interface_2:
62
+    type: OS::Neutron::RouterInterface
63
+    properties:
64
+      router_id: { get_resource: router }
65
+      subnet_id: { get_resource: west_private_subnet }
66
+
67
+  server_security_group:
68
+    type: OS::Neutron::SecurityGroup
69
+    properties:
70
+      rules: [
71
+        {remote_ip_prefix: 0.0.0.0/0,
72
+        protocol: tcp,
73
+        port_range_min: 1,
74
+        port_range_max: 65535},
75
+        {remote_ip_prefix: 0.0.0.0/0,
76
+        protocol: udp,
77
+        port_range_min: 1,
78
+        port_range_max: 65535},
79
+        {remote_ip_prefix: 0.0.0.0/0,
80
+        protocol: icmp}]
81
+
82
+{% for agent in agents.values() %}
83
+
84
+  {{ agent.id }}:
85
+    type: OS::Nova::Server
86
+    properties:
87
+      name: {{ agent.id }}
88
+      image: { get_param: image }
89
+      flavor: { get_param: flavor }
90
+      availability_zone: "{{ agent.availability_zone }}"
91
+      networks:
92
+        - port: { get_resource: {{ agent.id }}_port }
93
+      user_data_format: RAW
94
+      user_data:
95
+        str_replace:
96
+          template: |
97
+            #!/bin/sh
98
+            screen -dmS shaker-agent-screen shaker-agent --server-endpoint=$SERVER_ENDPOINT --agent-id=$AGENT_ID
99
+          params:
100
+            "$SERVER_ENDPOINT": { get_param: server_endpoint }
101
+            "$AGENT_ID": {{ agent.id }}
102
+
103
+{% if agent.mode == 'master' %}
104
+  {{ agent.id }}_port:
105
+    type: OS::Neutron::Port
106
+    properties:
107
+      network_id: { get_resource: east_private_net }
108
+      fixed_ips:
109
+        - subnet_id: { get_resource: east_private_subnet }
110
+      security_groups: [{ get_resource: server_security_group }]
111
+{% else %}
112
+  {{ agent.id }}_port:
113
+    type: OS::Neutron::Port
114
+    properties:
115
+      network_id: { get_resource: west_private_net }
116
+      fixed_ips:
117
+        - subnet_id: { get_resource: west_private_subnet }
118
+      security_groups: [{ get_resource: server_security_group }]
119
+{% endif %}
120
+
121
+{% endfor %}
122
+
123
+outputs:
124
+{% for agent in agents.values() %}
125
+  {{ agent.id }}_instance_name:
126
+    value: { get_attr: [ {{ agent.id }}, instance_name ] }
127
+{% if agent.mode == 'master' %}
128
+  {{ agent.id }}_ip:
129
+    value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [east_private_net, name] }, 0 ] }
130
+{% else %}
131
+  {{ agent.id }}_ip:
132
+    value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [west_private_net, name] }, 0 ] }
133
+{% endif %}
134
+{% endfor %}

+ 147
- 0
plugin_test/shaker-scenarios/single-zone/l3_north_south.hot View File

@@ -0,0 +1,147 @@
1
+heat_template_version: 2013-05-23
2
+
3
+description: >
4
+  This Heat template creates a new Neutron network plus a north_router to the
5
+  external network. The template also assigns floating IP addresses to each
6
+  instance so they are routable from the external network.
7
+
8
+parameters:
9
+  image:
10
+    type: string
11
+    description: Name of image to use for servers
12
+  flavor:
13
+    type: string
14
+    description: Flavor to use for servers
15
+  external_net:
16
+    type: string
17
+    description: ID or name of external network for which floating IP addresses will be allocated
18
+  server_endpoint:
19
+    type: string
20
+    description: Server endpoint address
21
+  dns_nameservers:
22
+    type: comma_delimited_list
23
+    description: DNS nameservers for the subnets
24
+
25
+resources:
26
+  north_private_net:
27
+    type: OS::Neutron::Net
28
+    properties:
29
+      name: {{ unique }}_net_north
30
+
31
+  north_private_subnet:
32
+    type: OS::Neutron::Subnet
33
+    properties:
34
+      network_id: { get_resource: north_private_net }
35
+      cidr: 10.1.0.0/16
36
+      dns_nameservers: { get_param: dns_nameservers }
37
+
38
+  north_router:
39
+    type: OS::Neutron::Router
40
+    properties:
41
+      external_gateway_info:
42
+        network: { get_param: external_net }
43
+
44
+  router_interface:
45
+    type: OS::Neutron::RouterInterface
46
+    properties:
47
+      router_id: { get_resource: north_router }
48
+      subnet_id: { get_resource: north_private_subnet }
49
+
50
+  south_private_net:
51
+    type: OS::Neutron::Net
52
+    properties:
53
+      name: {{ unique }}_net_south
54
+
55
+  south_private_subnet:
56
+    type: OS::Neutron::Subnet
57
+    properties:
58
+      network_id: { get_resource: south_private_net }
59
+      cidr: 10.2.0.0/16
60
+      dns_nameservers: { get_param: dns_nameservers }
61
+
62
+  south_router:
63
+    type: OS::Neutron::Router
64
+    properties:
65
+      external_gateway_info:
66
+        network: { get_param: external_net }
67
+
68
+  router_interface_2:
69
+    type: OS::Neutron::RouterInterface
70
+    properties:
71
+      router_id: { get_resource: south_router }
72
+      subnet_id: { get_resource: south_private_subnet }
73
+
74
+  server_security_group:
75
+    type: OS::Neutron::SecurityGroup
76
+    properties:
77
+      rules: [
78
+        {remote_ip_prefix: 0.0.0.0/0,
79
+        protocol: tcp,
80
+        port_range_min: 1,
81
+        port_range_max: 65535},
82
+        {remote_ip_prefix: 0.0.0.0/0,
83
+        protocol: udp,
84
+        port_range_min: 1,
85
+        port_range_max: 65535},
86
+        {remote_ip_prefix: 0.0.0.0/0,
87
+        protocol: icmp}]
88
+
89
+{% for agent in agents.values() %}
90
+
91
+  {{ agent.id }}:
92
+    type: OS::Nova::Server
93
+    properties:
94
+      name: {{ agent.id }}
95
+      image: { get_param: image }
96
+      flavor: { get_param: flavor }
97
+      availability_zone: "{{ agent.availability_zone }}"
98
+      networks:
99
+        - port: { get_resource: {{ agent.id }}_port }
100
+      user_data_format: RAW
101
+      user_data:
102
+        str_replace:
103
+          template: |
104
+            #!/bin/sh
105
+            screen -dmS shaker-agent-screen shaker-agent --server-endpoint=$SERVER_ENDPOINT --agent-id=$AGENT_ID
106
+          params:
107
+            "$SERVER_ENDPOINT": { get_param: server_endpoint }
108
+            "$AGENT_ID": {{ agent.id }}
109
+
110
+{% if agent.mode == 'master' %}
111
+  {{ agent.id }}_port:
112
+    type: OS::Neutron::Port
113
+    properties:
114
+      network_id: { get_resource: north_private_net }
115
+      fixed_ips:
116
+        - subnet_id: { get_resource: north_private_subnet }
117
+      security_groups: [{ get_resource: server_security_group }]
118
+{% else %}
119
+  {{ agent.id }}_port:
120
+    type: OS::Neutron::Port
121
+    properties:
122
+      network_id: { get_resource: south_private_net }
123
+      fixed_ips:
124
+        - subnet_id: { get_resource: south_private_subnet }
125
+      security_groups: [{ get_resource: server_security_group }]
126
+
127
+  {{ agent.id }}_floating_ip:
128
+    type: OS::Neutron::FloatingIP
129
+    properties:
130
+      floating_network: { get_param: external_net }
131
+      port_id: { get_resource: {{ agent.id }}_port }
132
+{% endif %}
133
+
134
+{% endfor %}
135
+
136
+outputs:
137
+{% for agent in agents.values() %}
138
+  {{ agent.id }}_instance_name:
139
+    value: { get_attr: [ {{ agent.id }}, instance_name ] }
140
+{% if agent.mode == 'master' %}
141
+  {{ agent.id }}_ip:
142
+    value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [north_private_net, name] }, 0 ] }
143
+{% else %}
144
+  {{ agent.id }}_ip:
145
+    value: { get_attr: [ {{ agent.id }}_floating_ip, floating_ip_address ] }
146
+{% endif %}
147
+{% endfor %}

+ 55
- 0
plugin_test/shaker-scenarios/single-zone/perf_l2_nova.yaml View File

@@ -0,0 +1,55 @@
1
+title: OpenStack L2 Nova-AZ Performance
2
+
3
+description:
4
+  In this scenario Shaker launches 1 pair of instances in the same tenant
5
+  network. Each instance is hosted on a separate compute node.
6
+  The master and slave instances are in nova availability zones.
7
+
8
+deployment:
9
+  template: l2.hot
10
+  accommodation: [pair, single_room, zones: [nova], compute_nodes: 2]
11
+
12
+execution:
13
+  tests:
14
+  -
15
+    title: Ping
16
+    class: flent
17
+    method: ping
18
+    time: 10
19
+    sla:
20
+    - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
21
+  -
22
+    title: TCP
23
+    class: iperf3
24
+    time: 600
25
+    sla:
26
+    - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
27
+    - "[type == 'agent'] >> (stats.retransmits.max < 10)"
28
+  -
29
+    title: UDP64
30
+    class: iperf3
31
+    udp: on
32
+    time: 600
33
+    bandwidth: 0
34
+    datagram_size: 64
35
+    sla:
36
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
37
+  -
38
+    title: UDP1500
39
+    class: iperf3
40
+    udp: on
41
+    time: 600
42
+    bandwidth: 0
43
+    datagram_size: 1500
44
+    sla:
45
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
46
+  -
47
+    title: UDP_JUMBO
48
+    class: iperf3
49
+    udp: on
50
+    time: 600
51
+    bandwidth: 1000M
52
+    buffer_size: 8950
53
+    datagram_size: 9000
54
+    sla:
55
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"

+ 56
- 0
plugin_test/shaker-scenarios/single-zone/perf_l2_vcenter.yaml View File

@@ -0,0 +1,56 @@
1
+title: OpenStack L2 vcenter-AZ Performance
2
+
3
+description:
4
+  In this scenario Shaker launches 1 pair of instances in the same tenant
5
+  network. Each instance is hosted on a separate compute node.
6
+  The master and slave instances are in vcenter availability zones.
7
+
8
+deployment:
9
+  template: l2.hot
10
+  accommodation: [pair, single_room, zones: [vcenter], compute_nodes: 2]
11
+
12
+execution:
13
+  tests:
14
+  -
15
+    title: Ping
16
+    class: flent
17
+    method: ping
18
+    time: 10
19
+    sla:
20
+    - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
21
+  -
22
+    title: TCP
23
+    class: iperf3
24
+    time: 600
25
+    sla:
26
+    - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
27
+    - "[type == 'agent'] >> (stats.retransmits.max < 10)"
28
+  -
29
+    title: UDP64
30
+    class: iperf3
31
+    udp: on
32
+    time: 600
33
+    bandwidth: 0
34
+    datagram_size: 64
35
+    sla:
36
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
37
+  -
38
+    title: UDP1500
39
+    class: iperf3
40
+    udp: on
41
+    time: 600
42
+    bandwidth: 0
43
+    datagram_size: 1500
44
+    sla:
45
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
46
+  -
47
+    title: UDP_JUMBO
48
+    class: iperf3
49
+    udp: on
50
+    time: 600
51
+    bandwidth: 1000M
52
+    buffer_size: 8950
53
+    datagram_size: 9000
54
+    sla:
55
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
56
+

+ 56
- 0
plugin_test/shaker-scenarios/single-zone/perf_l3_east_west_nova.yaml View File

@@ -0,0 +1,56 @@
1
+title: OpenStack L3 East-West nova-AZ Performance
2
+
3
+description:
4
+  In this scenario Shaker launches 1 pair of instances, each instance on its own
5
+  compute node. Instances are connected to one of 2 tenant networks, which
6
+  plugged into single router. The traffic goes from one network to the other
7
+  (L3 east-west).
8
+
9
+deployment:
10
+  template: l3_east_west.hot
11
+  accommodation: [pair, single_room, zones: [nova], compute_nodes: 2]
12
+
13
+execution:
14
+  tests:
15
+  -
16
+    title: Ping
17
+    class: flent
18
+    method: ping
19
+    time: 10
20
+    sla:
21
+    - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
22
+  -
23
+    title: TCP
24
+    class: iperf3
25
+    time: 600
26
+    sla:
27
+    - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
28
+    - "[type == 'agent'] >> (stats.retransmits.max < 10)"
29
+  -
30
+    title: UDP64
31
+    class: iperf3
32
+    udp: on
33
+    time: 600
34
+    bandwidth: 0
35
+    datagram_size: 64
36
+    sla:
37
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
38
+  -
39
+    title: UDP1500
40
+    class: iperf3
41
+    udp: on
42
+    time: 600
43
+    bandwidth: 0
44
+    datagram_size: 1500
45
+    sla:
46
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
47
+  -
48
+    title: UDP_JUMBO
49
+    class: iperf3
50
+    udp: on
51
+    time: 600
52
+    bandwidth: 1000M
53
+    buffer_size: 8950
54
+    datagram_size: 9000
55
+    sla:
56
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"

+ 56
- 0
plugin_test/shaker-scenarios/single-zone/perf_l3_east_west_vcenter.yaml View File

@@ -0,0 +1,56 @@
1
+title: OpenStack L3 East-West vcenter-AZ Performance
2
+
3
+description:
4
+  In this scenario Shaker launches 1 pair of instances, each instance on its own
5
+  compute node. Instances are connected to one of 2 tenant networks, which
6
+  plugged into single router. The traffic goes from one network to the other
7
+  (L3 east-west).
8
+
9
+deployment:
10
+  template: l3_east_west.hot
11
+  accommodation: [pair, single_room, zones: [vcenter], compute_nodes: 2]
12
+
13
+execution:
14
+  tests:
15
+  -
16
+    title: Ping
17
+    class: flent
18
+    method: ping
19
+    time: 10
20
+    sla:
21
+    - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
22
+  -
23
+    title: TCP
24
+    class: iperf3
25
+    time: 600
26
+    sla:
27
+    - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
28
+    - "[type == 'agent'] >> (stats.retransmits.max < 10)"
29
+  -
30
+    title: UDP64
31
+    class: iperf3
32
+    udp: on
33
+    time: 600
34
+    bandwidth: 0
35
+    datagram_size: 64
36
+    sla:
37
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
38
+  -
39
+    title: UDP1500
40
+    class: iperf3
41
+    udp: on
42
+    time: 600
43
+    bandwidth: 0
44
+    datagram_size: 1500
45
+    sla:
46
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
47
+  -
48
+    title: UDP_JUMBO
49
+    class: iperf3
50
+    udp: on
51
+    time: 600
52
+    bandwidth: 1000M
53
+    buffer_size: 8950
54
+    datagram_size: 9000
55
+    sla:
56
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"

+ 57
- 0
plugin_test/shaker-scenarios/single-zone/perf_l3_north_south_nova.yaml View File

@@ -0,0 +1,57 @@
1
+title: OpenStack L3 North-South nova-AZ Performance
2
+
3
+description:
4
+  In this scenario Shaker launches 1 pair of instances on different compute
5
+  nodes. Instances are in different networks connected to different routers,
6
+  master accesses slave by floating ip. The traffic goes from one network
7
+  via external network to the other network.
8
+  The master and slave instances are in nova availability zones.
9
+
10
+deployment:
11
+  template: l3_north_south.hot
12
+  accommodation: [pair, single_room, zones: [nova], compute_nodes: 2]
13
+
14
+execution:
15
+  tests:
16
+  -
17
+    title: Ping
18
+    class: flent
19
+    method: ping
20
+    time: 10
21
+    sla:
22
+    - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
23
+  -
24
+    title: TCP
25
+    class: iperf3
26
+    time: 600
27
+    sla:
28
+    - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
29
+    - "[type == 'agent'] >> (stats.retransmits.max < 10)"
30
+  -
31
+    title: UDP64
32
+    class: iperf3
33
+    udp: on
34
+    time: 600
35
+    bandwidth: 0
36
+    datagram_size: 32
37
+    sla:
38
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
39
+  -
40
+    title: UDP1500
41
+    class: iperf3
42
+    udp: on
43
+    time: 600
44
+    bandwidth: 0
45
+    datagram_size: 1500
46
+    sla:
47
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
48
+  -
49
+    title: UDP_JUMBO
50
+    class: iperf3
51
+    udp: on
52
+    time: 600
53
+    bandwidth: 1000M
54
+    buffer_size: 8950
55
+    datagram_size: 9000
56
+    sla:
57
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"

+ 57
- 0
plugin_test/shaker-scenarios/single-zone/perf_l3_north_south_vcenter.yaml View File

@@ -0,0 +1,57 @@
1
+title: OpenStack L3 North-South vcenter-AZ Performance
2
+
3
+description:
4
+  In this scenario Shaker launches 1 pair of instances on different compute
5
+  nodes. Instances are in different networks connected to different routers,
6
+  master accesses slave by floating ip. The traffic goes from one network
7
+  via external network to the other network.
8
+  The master and slave instances are in vcenter availability zones.
9
+
10
+deployment:
11
+  template: l3_north_south.hot
12
+  accommodation: [pair, single_room, zones: [vcenter], compute_nodes: 2]
13
+
14
+execution:
15
+  tests:
16
+  -
17
+    title: Ping
18
+    class: flent
19
+    method: ping
20
+    time: 10
21
+    sla:
22
+    - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
23
+  -
24
+    title: TCP
25
+    class: iperf3
26
+    time: 600
27
+    sla:
28
+    - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
29
+    - "[type == 'agent'] >> (stats.retransmits.max < 10)"
30
+  -
31
+    title: UDP64
32
+    class: iperf3
33
+    udp: on
34
+    time: 600
35
+    bandwidth: 0
36
+    datagram_size: 32
37
+    sla:
38
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
39
+  -
40
+    title: UDP1500
41
+    class: iperf3
42
+    udp: on
43
+    time: 600
44
+    bandwidth: 0
45
+    datagram_size: 1500
46
+    sla:
47
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"
48
+  -
49
+    title: UDP_JUMBO
50
+    class: iperf3
51
+    udp: on
52
+    time: 600
53
+    bandwidth: 1000M
54
+    buffer_size: 8950
55
+    datagram_size: 9000
56
+    sla:
57
+    - "[type == 'agent'] >> (stats.packets.avg > 100000)"

Loading…
Cancel
Save