Mix and Match Workloads

* Mix and Match Workloads
* rerun_type - ['iteration', 'complete'] - allows you to rerun complete
  browbeat workload or iteratively
* browbeat/config.py for loading and validating config schema
* tests/test_config.py to test config.py

Change-Id: I99ea87c01c17d5d06cf7f8d1eec3299aa8d483a5
This commit is contained in:
akrzos 2017-11-28 14:10:48 -05:00
parent db8096ca48
commit 1c3b60a8c8
49 changed files with 4180 additions and 4838 deletions

6
.gitignore vendored
View File

@ -1,4 +1,10 @@
*.py[cod]
# Distribution / packaging
.eggs
# Testing
.cache
.tox
# Virtual Environments:

View File

@ -1,7 +1,11 @@
browbeat:
results: results/
rerun: 3
cloud_name: {{ browbeat_cloud_name }}
rerun: 3
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: {{ elastic_enabled }}
host: {{ elastic_host }}
@ -16,116 +20,136 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: {{ grafana_enabled }}
grafana_ip: {{ grafana_host }}
grafana_port: 3000
host: {{ grafana_host }}
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
venv: /home/stack/rally-venv
plugins:
- netcreate-boot: rally/rally-plugins/netcreate-boot
benchmarks:
- name: authenticate
enabled: true
concurrency:
- 16
- 24
times: 2500
scenarios:
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
- name: keystonebasic
enabled: true
concurrency:
- 16
times: 1000
scenarios:
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
- name: neutron
enabled: true
concurrency:
- 8
- 12
times: 128
scenarios:
- name: create-list-router
enabled: true
file: rally/neutron/neutron-create-list-router-cc.yml
- name: create-list-network
enabled: true
file: rally/neutron/neutron-create-list-network-cc.yml
- name: create-list-subnet
enabled: true
file: rally/neutron/neutron-create-list-subnet-cc.yml
- name: create-list-port
enabled: true
file: rally/neutron/neutron-create-list-port-cc.yml
- name: create-list-security-group
enabled: true
file: rally/neutron/neutron-create-list-security-group-cc.yml
- name: nova
enabled: true
concurrency:
- 8
- 12
times: 64
scenarios:
- name: boot-snapshot-delete
enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml
image_name: cirros
flavor_name: m1.tiny
- name: boot-list
enabled: true
file: rally/nova/nova-boot-list-cc.yml
image_name: cirros
flavor_name: m1.tiny
- name: glance
enabled: true
concurrency:
- 8
- 12
times: 64
scenarios:
- name: create-and-delete-image
enabled: true
image_location: http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz
flavor_name: m1.tiny
file: rally/glance/create-and-delete-image-cc.yml
- name: plugins
enabled: true
concurrency:
- 8
times: 64
scenarios:
- name: netcreate-1-boot
enabled: true
enable_dhcp: true
image_name: cirros
flavor_name: m1.tiny
num_networks: 1
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml
- name: netcreate-5-boot
enabled: true
enable_dhcp: true
image_name: cirros
flavor_name: m1.tiny
num_networks: 5
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
- name: authenticate
enabled: true
type: rally
concurrency:
- 16
- 24
times: 2500
scenarios:
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
- name: keystonebasic
enabled: true
type: rally
concurrency:
- 16
times: 1000
scenarios:
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
- name: neutron
enabled: true
type: rally
concurrency:
- 8
- 12
times: 128
scenarios:
- name: create-list-router
enabled: true
file: rally/neutron/neutron-create-list-router-cc.yml
- name: create-list-network
enabled: true
file: rally/neutron/neutron-create-list-network-cc.yml
- name: create-list-subnet
enabled: true
file: rally/neutron/neutron-create-list-subnet-cc.yml
- name: create-list-port
enabled: true
file: rally/neutron/neutron-create-list-port-cc.yml
- name: create-list-security-group
enabled: true
file: rally/neutron/neutron-create-list-security-group-cc.yml
- name: nova
enabled: true
type: rally
concurrency:
- 8
- 12
times: 64
scenarios:
- name: boot-snapshot-delete
enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml
image_name: cirros
flavor_name: m1.tiny
- name: boot-list
enabled: true
file: rally/nova/nova-boot-list-cc.yml
image_name: cirros
flavor_name: m1.tiny
- name: glance
enabled: true
type: rally
concurrency:
- 8
- 12
times: 64
scenarios:
- name: create-and-delete-image
enabled: true
image_location: http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz
flavor_name: m1.tiny
file: rally/glance/create-and-delete-image-cc.yml
- name: plugins
enabled: true
type: rally
concurrency:
- 8
times: 64
scenarios:
- name: netcreate-1-boot
enabled: true
enable_dhcp: true
image_name: cirros
flavor_name: m1.tiny
num_networks: 1
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml
- name: netcreate-5-boot
enabled: true
enable_dhcp: true
image_name: cirros
flavor_name: m1.tiny
num_networks: 5
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml

View File

@ -1,9 +1,13 @@
# Tests to be completed for the install-and-check.sh script minimal and short workloads are performed
# to confirm functionality.
browbeat:
results: results/
rerun: 1
cloud_name: {{ browbeat_cloud_name }}
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: {{ elastic_enabled }}
host: {{ elastic_host }}
@ -18,86 +22,111 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: {{ grafana_enabled }}
grafana_ip: {{ grafana_host }}
grafana_port: 3000
host: {{ grafana_host }}
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
venv: /home/stack/rally-venv
plugins:
- netcreate-boot: rally/rally-plugins/netcreate-boot
benchmarks:
- name: authenticate
enabled: true
concurrency:
- 1
times: 1
scenarios:
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
- name: cinder
enabled: true
concurrency:
- 1
times: 1
scenarios:
- name: create-attach-volume-centos
enabled: true
file: rally/cinder/cinder-create-and-attach-volume-cc.yml
- name: keystonebasic
enabled: false
concurrency:
- 1
times: 1
scenarios:
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
- name: neutron
enabled: true
concurrency:
- 1
times: 1
scenarios:
- name: create-list-network
enabled: true
file: rally/neutron/neutron-create-list-network-cc.yml
- name: nova
enabled: true
concurrency:
- 1
times: 1
scenarios:
- name: boot-snapshot-delete
enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml
image_name: cirros
flavor_name: m1.tiny
- name: plugins
enabled: true
concurrency:
- 1
times: 1
scenarios:
- name: netcreate-1-boot
enabled: true
enable_dhcp: true
image_name: cirros
flavor_name: m1.tiny
num_networks: 1
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
- name: authenticate
enabled: true
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
- name: cinder
enabled: true
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: create-attach-volume-centos
enabled: true
file: rally/cinder/cinder-create-and-attach-volume-cc.yml
- name: keystonebasic
enabled: true
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
- name: neutron
enabled: true
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: create-list-network
enabled: true
file: rally/neutron/neutron-create-list-network-cc.yml
- name: nova
enabled: true
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: boot-snapshot-delete
enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml
image_name: cirros
flavor_name: m1.xtiny
- name: plugins
enabled: true
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: netcreate-1-boot
enabled: true
enable_dhcp: true
image_name: cirros
flavor_name: m1.tiny
num_networks: 1
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml

View File

@ -1,9 +1,13 @@
# Tests to be compleated for the install-and-check.sh script minimal and short workloads are performed
# Tests to be completed for the install-and-check.sh script minimal and short workloads are performed
# to confirm functionality.
browbeat:
results: results/
rerun: 1
cloud_name: {{ browbeat_cloud_name }}
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: {{ elastic_enabled }}
host: {{ elastic_host }}
@ -18,53 +22,73 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: {{ grafana_enabled }}
grafana_ip: {{ grafana_host }}
grafana_port: 3000
host: {{ grafana_host }}
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
sleep_before: 0
sleep_after: 0
plugins:
- netcreate-boot: rally/rally-plugins/netcreate-boot
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
enabled: true
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
benchmarks:
- name: introspect-{{ overcloud_size }}-batch-5
type: introspection
enabled: true
method: individual
times: 3
timeout: 1800
batch_size: 5
- name: introspect-{{ overcloud_size }}-bulk
type: introspection
enabled: true
method: bulk
times: 3
timeout: 1800
- name: HA-Max-Compute-{{ overcloud_size }}-stack-update
type: overcloud
ntp_server: pool.ntp.org
timeout: 600
templates:
- ""
enabled: true
step: 1
keep_stack: true
times: 1
cloud:
- node: "compute"
start_scale: {{ overcloud_size | int - 3 }}
end_scale: {{ overcloud_size | int - 3 }}
- node: "control"
start_scale: 3
end_scale: 3
workloads:
- name: introspect-{{ overcloud_size }}-batch-5
enabled: true
type: yoda
yoda_type: introspection
method: individual
times: 3
timeout: 1800
batch_size: 5
- name: introspect-{{ overcloud_size }}-bulk
enabled: true
type: yoda
yoda_type: introspection
method: bulk
times: 3
timeout: 1800
- name: HA-Max-Compute-{{ overcloud_size }}-stack-update
enabled: true
type: yoda
yoda_type: overcloud
ntp_server: pool.ntp.org
timeout: 600
templates:
- ""
step: 1
keep_stack: true
times: 1
cloud:
- node: "compute"
start_scale: {{ overcloud_size | int - 3 }}
end_scale: {{ overcloud_size | int - 3 }}
- node: "control"
start_scale: 3
end_scale: 3

View File

@ -1,9 +1,11 @@
# Tests to be compleated for the install-and-check.sh script minimal and short workloads are performed
# to confirm functionality.
browbeat:
results: results/
rerun: 1
cloud_name: {{ browbeat_cloud_name }}
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: {{ elastic_enabled }}
host: {{ elastic_host }}
@ -18,157 +20,187 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: {{ grafana_enabled }}
grafana_ip: {{ grafana_host }}
grafana_port: 3000
host: {{ grafana_host }}
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
sleep_before: 0
sleep_after: 0
plugins:
- netcreate-boot: rally/rally-plugins/netcreate-boot
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
enabled: true
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
benchmarks:
- name: introspect-{{ overcloud_size }}-10-individual-batch-2
type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: 2
- name: introspect-{{ overcloud_size }}-10-individual-batch-4
type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: 4
- name: introspect-{{ overcloud_size }}-10-individual-batch-8
type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: 8
- name: introspect-{{ overcloud_size }}-10-individual-batch-16
type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: 16
- name: introspect-{{ overcloud_size }}-10-individual-batch-32
type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: 32
- name: introspect-{{ overcloud_size }}-10-individual-batch-{{ overcloud_size }}
type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: {{ overcloud_size }}
- name: introspect-{{ overcloud_size }}-50-bulk
type: introspection
enabled: true
method: bulk
times: 50
timeout: 900
- name: No-HA-Max-Compute-{{ overcloud_size }}-full-deploy
type: overcloud
ntp_server: clock01.util.phx2.redhat.com
timeout: 600
templates:
- ""
enabled: true
step: 5
keep_stack: false
times: 2
cloud:
- node: "compute"
start_scale: 1
end_scale: {{ overcloud_size | int - 1 }}
- node: "control"
start_scale: 1
end_scale: 1
- name: No-HA-Max-Compute-{{ overcloud_size }}-stack-update
type: overcloud
ntp_server: clock01.util.phx2.redhat.com
timeout: 600
templates:
- ""
instackenv: "/home/stack/instackenv.json"
enabled: true
step: 5
keep_stack: true
times: 2
cloud:
- node: "compute"
start_scale: 1
end_scale: {{ overcloud_size | int - 1 }}
- node: "control"
start_scale: 1
end_scale: 1
- name: HA-Max-Compute-{{ overcloud_size }}-full-deploy
type: overcloud
ntp_server: clock01.util.phx2.redhat.com
timeout: 600
templates:
- ""
enabled: true
step: 5
keep_stack: false
times: 2
cloud:
- node: "compute"
start_scale: 1
end_scale: {{ overcloud_size | int - 3 }}
- node: "control"
start_scale: 3
end_scale: 3
- name: HA-Max-Compute-{{ overcloud_size }}-stack-update
type: overcloud
ntp_server: clock01.util.phx2.redhat.com
timeout: 600
templates:
- ""
enabled: true
step: 5
keep_stack: true
times: 2
cloud:
- node: "compute"
start_scale: 1
end_scale: {{ overcloud_size | int - 3 }}
- node: "control"
start_scale: 3
end_scale: 3
- name: HA-Max-Compute-{{ overcloud_size }}-stack-update
type: overcloud
ntp_server: clock01.util.phx2.redhat.com
timeout: 600
templates:
- ""
enabled: true
step: 5
keep_stack: true
times: 2
cloud:
- node: "compute"
start_scale: 1
end_scale: {{ overcloud_size | int - 3 }}
- node: "control"
start_scale: 3
end_scale: 3
workloads:
- name: introspect-{{ overcloud_size }}-10-individual-batch-2
type: yoda
yoda_type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: 2
- name: introspect-{{ overcloud_size }}-10-individual-batch-4
type: yoda
yoda_type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: 4
- name: introspect-{{ overcloud_size }}-10-individual-batch-8
type: yoda
yoda_type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: 8
- name: introspect-{{ overcloud_size }}-10-individual-batch-16
type: yoda
yoda_type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: 16
- name: introspect-{{ overcloud_size }}-10-individual-batch-32
type: yoda
yoda_type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: 32
- name: introspect-{{ overcloud_size }}-10-individual-batch-{{ overcloud_size }}
type: yoda
yoda_type: introspection
enabled: true
method: individual
times: 10
timeout: 900
batch_size: {{ overcloud_size }}
- name: introspect-{{ overcloud_size }}-50-bulk
type: yoda
yoda_type: introspection
enabled: true
method: bulk
times: 50
timeout: 900
- name: No-HA-Max-Compute-{{ overcloud_size }}-full-deploy
type: yoda
yoda_type: overcloud
ntp_server: clock01.util.phx2.redhat.com
timeout: 600
templates:
- ""
enabled: true
step: 5
keep_stack: false
times: 2
cloud:
- node: "compute"
start_scale: 1
end_scale: {{ overcloud_size | int - 1 }}
- node: "control"
start_scale: 1
end_scale: 1
- name: No-HA-Max-Compute-{{ overcloud_size }}-stack-update
type: yoda
yoda_type: overcloud
ntp_server: clock01.util.phx2.redhat.com
timeout: 600
templates:
- ""
instackenv: "/home/stack/instackenv.json"
enabled: true
step: 5
keep_stack: true
times: 2
cloud:
- node: "compute"
start_scale: 1
end_scale: {{ overcloud_size | int - 1 }}
- node: "control"
start_scale: 1
end_scale: 1
- name: HA-Max-Compute-{{ overcloud_size }}-full-deploy
type: yoda
yoda_type: overcloud
ntp_server: clock01.util.phx2.redhat.com
timeout: 600
templates:
- ""
enabled: true
step: 5
keep_stack: false
times: 2
cloud:
- node: "compute"
start_scale: 1
end_scale: {{ overcloud_size | int - 3 }}
- node: "control"
start_scale: 3
end_scale: 3
- name: HA-Max-Compute-{{ overcloud_size }}-stack-update
type: yoda
yoda_type: overcloud
ntp_server: clock01.util.phx2.redhat.com
timeout: 600
templates:
- ""
enabled: true
step: 5
keep_stack: true
times: 2
cloud:
- node: "compute"
start_scale: 1
end_scale: {{ overcloud_size | int - 3 }}
- node: "control"
start_scale: 3
end_scale: 3
- name: HA-Max-Compute-{{ overcloud_size }}-stack-update
type: yoda
yoda_type: overcloud
ntp_server: clock01.util.phx2.redhat.com
timeout: 600
templates:
- ""
enabled: true
step: 5
keep_stack: true
times: 2
cloud:
- node: "compute"
start_scale: 1
end_scale: {{ overcloud_size | int - 3 }}
- node: "control"
start_scale: 3
end_scale: 3

View File

@ -1,13 +1,17 @@
# Complete set of Stress Tests, this can take a long time (day(s))
browbeat:
results: results/
rerun: 3
cloud_name: openstack
rerun: 3
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
enabled: true
host: 1.1.1.1
port: 9200
regather: true
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -17,23 +21,13 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: true
grafana_ip: 1.1.1.1
grafana_port: 3000
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
enabled: true
sleep_before: 0
sleep_after: 0
default:
@ -45,13 +39,7 @@ perfkit:
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
benchmarks:
- name: fio-centos-m1-small
enabled: false
benchmarks: fio
openstack_volume_size: 1
rally:
enabled: true
sleep_before: 5
sleep_after: 5
plugins:
@ -59,207 +47,7 @@ rally:
- neutron: rally/rally-plugins/neutron
- netcreate-boot: rally/rally-plugins/netcreate-boot
- workloads: rally/rally-plugins/workloads
benchmarks:
- name: authenticate
enabled: true
concurrency:
- 64
- 128
- 192
- 256
- 320
- 384
- 448
- 512
times: 10000
scenarios:
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
sla_max_avg_duration: 6
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-neutron
enabled: true
file: rally/authenticate/validate_neutron-cc.yml
sla_max_avg_duration: 18
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-nova
enabled: true
file: rally/authenticate/validate_nova-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: cinder
enabled: true
concurrency:
- 16
- 32
- 48
- 64
times: 128
scenarios:
- name: create-attach-volume-centos
enabled: true
file: rally/cinder/cinder-create-and-attach-volume-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-attach-volume-cirros
enabled: true
image_name: cirros
file: rally/cinder/cinder-create-and-attach-volume-cc.yml
flavor_name: m1.tiny
sla_max_seconds: 30
sla_max_failure: 0
- name: keystonebasic
enabled: true
concurrency:
- 256
times: 5000
scenarios:
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-users
enabled: true
file: rally/keystonebasic/create_and_list_users-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: neutron
enabled: true
concurrency:
- 16
- 32
- 48
- 64
times: 500
scenarios:
- name: create-list-network
enabled: true
file: rally/neutron/neutron-create-list-network-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-list-port
enabled: true
file: rally/neutron/neutron-create-list-port-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-list-router
enabled: true
file: rally/neutron/neutron-create-list-router-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-list-security-group
enabled: true
file: rally/neutron/neutron-create-list-security-group-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-list-subnet
enabled: true
file: rally/neutron/neutron-create-list-subnet-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: nova
enabled: true
concurrency:
- 16
- 32
- 48
- 64
- 80
- 96
times: 128
scenarios:
- name: boot-snapshot-delete-cirros
enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml
image_name: cirros
flavor_name: m1.xtiny
- name: boot-list-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-list-cc.yml
flavor_name: m1.xtiny
- name: boot-show-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-show-cc.yml
flavor_name: m1.xtiny
- name: boot-bounce-delete-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-bounce-delete-cc.yml
flavor_name: m1.xtiny
- name: boot-lock-unlock-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-lock-unlock-cc.yml
flavor_name: m1.xtiny
- name: glance
enabled: true
concurrency:
- 8
times: 10
scenarios:
- name: create-image-boot-instances
enabled: true
image_location: /home/stack/cirros.qcow2
instances: 2
flavor_name: m1.small
file: rally/glance/create-image-and-boot-instances-cc.yml
- name: create-and-delete-image
enabled: true
image_location: /home/stack/cirros.qcow2
flavor_name: m1.small
file: rally/glance/create-and-delete-image-cc.yml
- name: create-and-list-image
enabled: true
image_location: /home/stack/cirros.qcow2
file: rally/glance/create-and-list-image-cc.yml
- name: list-images
enabled: true
file: rally/glance/list-images-cc.yml
- name: plugins
enabled: true
concurrency:
- 16
- 32
- 48
- 64
times: 128
scenarios:
- name: netcreate-boot
enabled: true
enable_dhcp: true
image_name: cirros
flavor_name: m1.tiny
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: router-subnet-create-delete
enabled: true
num_networks: 50
file: rally/rally-plugins/neutron/router_subnet_create_delete.yml
- name: glance-create-boot-delete
enabled: true
image_location: /home/stack/cirros.qcow2
flavor_name: m1.xtiny
file: rally/rally-plugins/glance/glance_create_boot_delete.yml
- name: rally-port-create-associate
file: rally/rally-plugins/neutron/port_create_assoicate.yml
enabled: true
num_networks: 1
num_ports: 100
hypervisor: overcloud-compute-0.localdomain
browbeat_ssh_config: ansible/ssh-config
username: heat-admin
#shaker scenarios require atleast 2 compute nodes
shaker:
enabled: true
server: 1.1.1.1
port: 5555
flavor: m1.small
@ -268,121 +56,349 @@ shaker:
sleep_after: 5
shaker_region: regionOne
external_host: 2.2.2.2
scenarios:
- name: l2-4-1
enabled: true
density: 4
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l2-8-1
enabled: true
density: 8
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l2-4-2
enabled: true
density: 4
compute: 2
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l2-8-2
enabled: true
density: 8
compute: 2
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l3-north-south-4-1
enabled: true
placement: single_room
density: 4
compute: 1
progression: null
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-north-south-8-1
enabled: false
placement: single_room
density: 8
compute: 1
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-north-south-4-2
enabled: true
placement: single_room
density: 4
compute: 2
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-north-south-8-2
enabled: true
placement: single_room
density: 8
compute: 2
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-east-west-4-1
enabled: true
density: 4
compute: 1
placement: single_room
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
- name: l3-east-west-8-1
enabled: true
density: 8
compute: 1
placement: single_room
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
- name: l3-east-west-4-2
enabled: true
density: 4
compute: 2
placement: single_room
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
- name: l3-east-west-8-2
enabled: true
density: 8
compute: 2
time: 60
placement: single_room
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
#yoda scenarios WILL redeploy your overcloud
yoda:
enabled: false
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
benchmarks:
- name: scale-deploy
type: overcloud
ntp_server: pool.ntp.org
enabled: true
templates:
- ""
timeout: 600 #deploy timeout in minutes
step: 1
keep_stack: false
times: 3
cloud:
- node: "compute"
start_scale: 1
end_scale: 1
- node: "control"
start_scale: 1
end_scale: 3
- name: introspect-batch
type: introspection
enabled: true
method: individual #other option is bulk
times: 3
timeout: 900 #introspection timeout in seconds
batch_size: 2
workloads:
# PerfKitBenchmarker
- name: fio-centos-m1-small
enabled: false
type: perfkit
benchmarks: fio
openstack_volume_size: 1
# Rally
- name: authenticate
enabled: true
type: rally
concurrency:
- 64
- 128
- 192
- 256
- 320
- 384
- 448
- 512
times: 10000
scenarios:
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
sla_max_avg_duration: 6
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-neutron
enabled: true
file: rally/authenticate/validate_neutron-cc.yml
sla_max_avg_duration: 18
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-nova
enabled: true
file: rally/authenticate/validate_nova-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: cinder
enabled: true
type: rally
concurrency:
- 16
- 32
- 48
- 64
times: 128
scenarios:
- name: create-attach-volume-centos
enabled: true
file: rally/cinder/cinder-create-and-attach-volume-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-attach-volume-cirros
enabled: true
image_name: cirros
file: rally/cinder/cinder-create-and-attach-volume-cc.yml
flavor_name: m1.tiny
sla_max_seconds: 30
sla_max_failure: 0
- name: keystonebasic
enabled: true
type: rally
concurrency:
- 256
times: 5000
scenarios:
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-users
enabled: true
file: rally/keystonebasic/create_and_list_users-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: neutron
enabled: true
type: rally
concurrency:
- 16
- 32
- 48
- 64
times: 500
scenarios:
- name: create-list-network
enabled: true
file: rally/neutron/neutron-create-list-network-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-list-port
enabled: true
file: rally/neutron/neutron-create-list-port-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-list-router
enabled: true
file: rally/neutron/neutron-create-list-router-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-list-security-group
enabled: true
file: rally/neutron/neutron-create-list-security-group-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-list-subnet
enabled: true
file: rally/neutron/neutron-create-list-subnet-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: nova
enabled: true
type: rally
concurrency:
- 16
- 32
- 48
- 64
- 80
- 96
times: 128
scenarios:
- name: boot-snapshot-delete-cirros
enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml
image_name: cirros
flavor_name: m1.xtiny
- name: boot-list-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-list-cc.yml
flavor_name: m1.xtiny
- name: boot-show-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-show-cc.yml
flavor_name: m1.xtiny
- name: boot-bounce-delete-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-bounce-delete-cc.yml
flavor_name: m1.xtiny
- name: boot-lock-unlock-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-lock-unlock-cc.yml
flavor_name: m1.xtiny
- name: glance
enabled: true
type: rally
concurrency:
- 8
times: 10
scenarios:
- name: create-image-boot-instances
enabled: true
image_location: /home/stack/cirros.qcow2
instances: 2
flavor_name: m1.small
file: rally/glance/create-image-and-boot-instances-cc.yml
- name: create-and-delete-image
enabled: true
image_location: /home/stack/cirros.qcow2
flavor_name: m1.small
file: rally/glance/create-and-delete-image-cc.yml
- name: create-and-list-image
enabled: true
image_location: /home/stack/cirros.qcow2
file: rally/glance/create-and-list-image-cc.yml
- name: list-images
enabled: true
file: rally/glance/list-images-cc.yml
- name: plugins
enabled: true
type: rally
concurrency:
- 16
- 32
- 48
- 64
times: 128
scenarios:
- name: netcreate-boot
enabled: true
enable_dhcp: true
image_name: cirros
flavor_name: m1.tiny
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: router-subnet-create-delete
enabled: true
num_networks: 50
file: rally/rally-plugins/neutron/router_subnet_create_delete.yml
- name: glance-create-boot-delete
enabled: true
image_location: /home/stack/cirros.qcow2
flavor_name: m1.xtiny
file: rally/rally-plugins/glance/glance_create_boot_delete.yml
- name: rally-port-create-associate
file: rally/rally-plugins/neutron/port_create_assoicate.yml
enabled: true
num_networks: 1
num_ports: 100
hypervisor: overcloud-compute-0.localdomain
browbeat_ssh_config: ansible/ssh-config
username: heat-admin
# Shaker scenarios require atleast 2 compute nodes
- name: l2-4-1
enabled: true
type: shaker
density: 4
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l2-8-1
enabled: true
type: shaker
density: 8
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l2-4-2
enabled: true
type: shaker
density: 4
compute: 2
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l2-8-2
enabled: true
type: shaker
density: 8
compute: 2
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l3-north-south-4-1
enabled: true
type: shaker
placement: single_room
density: 4
compute: 1
progression: null
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-north-south-8-1
enabled: false
type: shaker
placement: single_room
density: 8
compute: 1
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-north-south-4-2
enabled: true
type: shaker
placement: single_room
density: 4
compute: 2
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-north-south-8-2
enabled: true
type: shaker
placement: single_room
density: 8
compute: 2
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-east-west-4-1
enabled: true
type: shaker
density: 4
compute: 1
placement: single_room
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
- name: l3-east-west-8-1
enabled: true
type: shaker
density: 8
compute: 1
placement: single_room
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
- name: l3-east-west-4-2
enabled: true
type: shaker
density: 4
compute: 2
placement: single_room
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
- name: l3-east-west-8-2
enabled: true
type: shaker
density: 8
compute: 2
time: 60
placement: single_room
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
# Yoda scenarios WILL redeploy your overcloud
- name: scale-deploy
enabled: true
type: yoda
yoda_type: overcloud
ntp_server: pool.ntp.org
templates:
- ""
timeout: 600 #deploy timeout in minutes
step: 1
keep_stack: false
times: 3
cloud:
- node: "compute"
start_scale: 1
end_scale: 1
- node: "control"
start_scale: 1
end_scale: 3
- name: introspect-batch
enabled: true
type: yoda
yoda_type: introspection
method: individual #other option is bulk
times: 3
timeout: 900 #introspection timeout in seconds
batch_size: 2

View File

@ -1,13 +1,21 @@
# Basic set of initial stress tests to test overcloud before running complete set of benchmarks.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
# Two types of rerun:
# iteration reruns on the iteration
# complete reruns after all workloads complete
# rerun_type: complete
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: true
regather: true
enabled: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -17,23 +25,13 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: true
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: false
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
enabled: false
sleep_before: 0
sleep_after: 0
default:
@ -45,45 +43,7 @@ perfkit:
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
benchmarks:
- name: fio-centos-m1-small
enabled: false
benchmarks: fio
openstack_volume_size: 1
shaker:
enabled: true
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 5
sleep_after: 5
shaker_region: regionOne
external_host: 2.2.2.2
scenarios:
- name: l2
enabled: true
density: 1
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l3-north-south
enabled: true
placement: double_room
density: 1
compute: 1
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-east-west
enabled: true
density: 1
compute: 1
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
rally:
enabled: true
sleep_before: 5
sleep_after: 5
plugins:
@ -91,178 +51,231 @@ rally:
- neutron: rally/rally-plugins/neutron
- netcreate-boot: rally/rally-plugins/netcreate-boot
- workloads: rally/rally-plugins/workloads
benchmarks:
- name: authenticate
enabled: true
concurrency:
- 8
times: 100
scenarios:
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
- name: authentic-neutron
enabled: true
file: rally/authenticate/validate_neutron-cc.yml
- name: authentic-nova
enabled: true
file: rally/authenticate/validate_nova-cc.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
- name: cinder
enabled: true
concurrency:
- 2
times: 10
scenarios:
- name: create-attach-volume-cirros
enabled: true
image_name: cirros
flavor_name: m1.tiny
file: rally/cinder/cinder-create-and-attach-volume-cc.yml
workloads:
# PerfKitBenchmarker
- name: fio-centos-m1-small
enabled: false
type: perfkit
benchmarks: fio
openstack_volume_size: 1
# Shaker
- name: shaker-l2
enabled: true
type: shaker
density: 1
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: shaker-l3-north-south
enabled: true
type: shaker
placement: double_room
density: 1
compute: 1
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: shaker-l3-east-west
enabled: true
type: shaker
density: 1
compute: 1
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
# Rally
- name: authenticate
enabled: true
type: rally
concurrency:
- 8
times: 100
scenarios:
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
- name: authentic-neutron
enabled: true
file: rally/authenticate/validate_neutron-cc.yml
- name: authentic-nova
enabled: true
file: rally/authenticate/validate_nova-cc.yml
- name: keystonebasic
enabled: true
concurrency:
- 8
times: 100
scenarios:
- name: create-and-list-tenants
enabled: false
file: rally/keystonebasic/create_and_list_tenants-cc.yml
- name: create-and-list-users
enabled: true
file: rally/keystonebasic/create_and_list_users-cc.yml
- name: cinder
enabled: true
type: rally
concurrency:
- 2
times: 10
scenarios:
- name: create-attach-volume-cirros
enabled: true
image_name: cirros
flavor_name: m1.tiny
file: rally/cinder/cinder-create-and-attach-volume-cc.yml
- name: neutron
enabled: true
concurrency:
- 2
times: 10
scenarios:
- name: create-list-network
enabled: true
file: rally/neutron/neutron-create-list-network-cc.yml
- name: create-list-port
enabled: true
file: rally/neutron/neutron-create-list-port-cc.yml
- name: create-list-router
enabled: true
file: rally/neutron/neutron-create-list-router-cc.yml
- name: create-list-security-group
enabled: true
file: rally/neutron/neutron-create-list-security-group-cc.yml
- name: create-list-subnet
enabled: true
file: rally/neutron/neutron-create-list-subnet-cc.yml
- name: keystonebasic
enabled: true
type: rally
concurrency:
- 8
times: 100
scenarios:
- name: create-and-list-tenants
enabled: false
file: rally/keystonebasic/create_and_list_tenants-cc.yml
- name: create-and-list-users
enabled: true
file: rally/keystonebasic/create_and_list_users-cc.yml
- name: nova
enabled: true
concurrency:
- 2
times: 10
scenarios:
- name: boot-snapshot-delete-cirros
enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml
image_name: cirros
flavor_name: m1.xtiny
- name: boot-list-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-list-cc.yml
flavor_name: m1.xtiny
- name: boot-show-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-show-cc.yml
flavor_name: m1.xtiny
- name: boot-bounce-delete-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-bounce-delete-cc.yml
flavor_name: m1.xtiny
- name: boot-lock-unlock-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-lock-unlock-cc.yml
flavor_name: m1.xtiny
- name: neutron
enabled: true
type: rally
concurrency:
- 2
times: 10
scenarios:
- name: create-list-network
enabled: true
file: rally/neutron/neutron-create-list-network-cc.yml
- name: create-list-port
enabled: true
file: rally/neutron/neutron-create-list-port-cc.yml
- name: create-list-router
enabled: true
file: rally/neutron/neutron-create-list-router-cc.yml
- name: create-list-security-group
enabled: true
file: rally/neutron/neutron-create-list-security-group-cc.yml
- name: create-list-subnet
enabled: true
file: rally/neutron/neutron-create-list-subnet-cc.yml
- name: glance
enabled: true
concurrency:
- 2
times: 10
scenarios:
- name: create-and-delete-image
enabled: true
image_location: /home/stack/cirros.qcow2
container_format: bare
disk_format: qcow2
file: rally/glance/create-and-delete-image-cc.yml
- name: nova
enabled: true
type: rally
concurrency:
- 2
times: 10
scenarios:
- name: boot-snapshot-delete-cirros
enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml
image_name: cirros
flavor_name: m1.xtiny
- name: boot-list-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-list-cc.yml
flavor_name: m1.xtiny
- name: boot-show-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-show-cc.yml
flavor_name: m1.xtiny
- name: boot-bounce-delete-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-boot-bounce-delete-cc.yml
flavor_name: m1.xtiny
- name: boot-lock-unlock-cirros
enabled: true
image_name: cirros
file: rally/nova/nova-lock-unlock-cc.yml
flavor_name: m1.xtiny
- name: simple-plugins
enabled: true
concurrency:
- 8
times: 10
scenarios:
- name: netcreate-boot
enabled: true
enable_dhcp: true
image_name: cirros
flavor_name: m1.tiny
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml
- name: netcreate-boot-ping
enabled: true
image_name: cirros
flavor_name: m1.xtiny
ext_net_id:
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot_fip_ping.yml
- name: router-subnet-create-delete
enabled: true
num_networks: 5
file: rally/rally-plugins/neutron/router_subnet_create_delete.yml
- name: glance-create-boot-delete
enabled: true
image_location: /home/stack/cirros.qcow2
flavor_name: m1.xtiny
file: rally/rally-plugins/glance/glance_create_boot_delete.yml
- name: neutron-securitygroup-port
enabled: true
file: rally/rally-plugins/neutron/securitygroup_port.yml
- name: glance
enabled: true
type: rally
concurrency:
- 2
times: 10
scenarios:
- name: create-and-delete-image
enabled: true
image_location: /home/stack/cirros.qcow2
container_format: bare
disk_format: qcow2
file: rally/glance/create-and-delete-image-cc.yml
- name: plugin-workloads
enabled: true
concurrency:
- 1
times: 1
scenarios:
- name: linpack
enabled: true
image_name: browbeat-linpack
flavor_name: m1.small
external_network:
net_id:
file: rally/rally-plugins/workloads/linpack.yml
- name: simple-plugins
enabled: true
type: rally
concurrency:
- 8
times: 10
scenarios:
- name: netcreate-boot
enabled: true
enable_dhcp: true
image_name: cirros
flavor_name: m1.tiny
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml
- name: netcreate-boot-ping
enabled: true
image_name: cirros
flavor_name: m1.xtiny
ext_net_id:
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot_fip_ping.yml
- name: router-subnet-create-delete
enabled: true
num_networks: 5
file: rally/rally-plugins/neutron/router_subnet_create_delete.yml
- name: glance-create-boot-delete
enabled: true
image_location: /home/stack/cirros.qcow2
flavor_name: m1.xtiny
file: rally/rally-plugins/glance/glance_create_boot_delete.yml
- name: neutron-securitygroup-port
enabled: true
file: rally/rally-plugins/neutron/securitygroup_port.yml
- name: browbeat-pbench-uperf
enabled: true
user: root
image_name: browbeat-uperf
flavor_name: m1.small
# hypervisor_server: "nova:overcloud-compute-1.localdomain"
# hypervisor_client: "nova:overcloud-compute-0.localdomain"
external_network:
net_id:
protocols: tcp,udp
instances: 1
num_pairs: 1
samples: 1
test_types: stream,rr
message_sizes: 64,1024,16384
test_name: "browbeat-pbench-uperf"
send_results: true
cloudname:
elastic_host:
elastic_port: 9200
file: rally/rally-plugins/workloads/pbench-uperf.yml
- name: plugin-workloads
enabled: false
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: linpack
enabled: true
image_name: browbeat-linpack
flavor_name: m1.small
external_network:
net_id:
file: rally/rally-plugins/workloads/linpack.yml
- name: browbeat-pbench-uperf
enabled: true
user: root
image_name: browbeat-uperf
flavor_name: m1.small
# hypervisor_server: "nova:overcloud-compute-1.localdomain"
# hypervisor_client: "nova:overcloud-compute-0.localdomain"
external_network:
net_id:
protocols: tcp,udp
instances: 1
num_pairs: 1
samples: 1
test_types: stream,rr
message_sizes: 64,1024,16384
test_name: "browbeat-pbench-uperf"
send_results: true
cloudname:
elastic_host:
elastic_port: 9200
file: rally/rally-plugins/workloads/pbench-uperf.yml

View File

@ -21,6 +21,8 @@ import time
import browbeat.elastic
import browbeat.tools
import browbeat.workloadbase
from browbeat.config import load_browbeat_config
from browbeat.path import results_path
_workload_opts = ['perfkit', 'rally', 'shaker', 'yoda']
_config_file = 'browbeat-config.yaml'
@ -28,26 +30,20 @@ debug_log_file = 'log/debug.log'
def main():
tools = browbeat.tools.Tools()
parser = argparse.ArgumentParser(
description="Browbeat Performance and Scale testing for Openstack")
parser.add_argument(
'-s',
'--setup',
nargs='?',
default=_config_file,
'-s', '--setup', nargs='?', default=_config_file,
help='Provide Browbeat YAML configuration file. Default is ./{}'.format(_config_file))
parser.add_argument('workloads', nargs='*', help='Browbeat workload(s). Takes a space separated'
' list of workloads ({}) or \"all\"'.format(', '.join(_workload_opts)))
parser.add_argument('--debug', action='store_true',
help='Enable Debug messages')
parser.add_argument('-p', '--postprocess',
dest="path", help="Path to process, ie results/20170101/")
parser.add_argument('-c', '--compare',
help="Compare metadata", dest="compare",
choices=['software-metadata'])
parser.add_argument('-u', '--uuid',
help="UUIDs to pass", dest="uuids", nargs=2)
parser.add_argument(
'workloads', nargs='*', help='Browbeat workload(s). Takes a space separated'
' list of workloads ({}) or \"all\"'.format(', '.join(_workload_opts)))
parser.add_argument('--debug', action='store_true', help='Enable Debug messages')
parser.add_argument(
'-p', '--postprocess', dest="path", help="Path to process, ie results/20171130-191420/")
parser.add_argument(
'-c', '--compare', help="Compare metadata", dest="compare", choices=['software-metadata'])
parser.add_argument('-u', '--uuid', help="UUIDs to pass", dest="uuids", nargs=2)
_cli_args = parser.parse_args()
_logger = logging.getLogger('browbeat')
@ -70,8 +66,10 @@ def main():
_logger.debug("CLI Args: {}".format(_cli_args))
# Load Browbeat yaml config file:
_config = tools._load_config(_cli_args.setup)
_config = load_browbeat_config(_cli_args.setup)
tools = browbeat.tools.Tools(_config)
# Browbeat compare
if _cli_args.compare == "software-metadata":
es = browbeat.elastic.Elastic(_config, "BrowbeatCLI")
es.compare_metadata("_all", 'controller', _cli_args.uuids)
@ -81,74 +79,93 @@ def main():
parser.print_help()
exit(1)
# Default to all workloads
# Browbeat postprocess
if _cli_args.path:
_logger.info("Browbeat Postprocessing {}".format(_cli_args.path))
return tools.post_process(_cli_args)
# Browbeat workload - "browbeat run"
if _cli_args.workloads == []:
_cli_args.workloads.append('all')
if _cli_args.path:
return tools.post_process(_cli_args)
if len(_cli_args.workloads) == 1 and 'all' in _cli_args.workloads:
_cli_args.workloads = _workload_opts
invalid_wkld = [
wkld for wkld in _cli_args.workloads if wkld not in _workload_opts]
invalid_wkld = [wkld for wkld in _cli_args.workloads if wkld not in _workload_opts]
if invalid_wkld:
_logger.error("Invalid workload(s) specified: {}".format(invalid_wkld))
if 'all' in _cli_args.workloads:
_logger.error(
"If you meant 'all' use: './browbeat.py all' or './browbeat.py'")
exit(1)
else:
time_stamp = datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%S")
_logger.info("Browbeat test suite kicked off")
_logger.info("Browbeat UUID: {}".format(browbeat.elastic.browbeat_uuid))
if _config['elasticsearch']['enabled']:
_logger.info("Checking for Metadata")
metadata_exists = tools.check_metadata()
if not metadata_exists:
_logger.error("Elasticsearch has been enabled but"
" metadata files do not exist")
_logger.info("Gathering Metadata")
tools.gather_metadata()
elif _config['elasticsearch']['regather']:
_logger.info("Regathering Metadata")
tools.gather_metadata()
_logger.info("Running workload(s): {}".format(
','.join(_cli_args.workloads)))
for wkld_provider in _cli_args.workloads:
if wkld_provider in _config:
if _config[wkld_provider]['enabled']:
tools._run_workload_provider(wkld_provider)
else:
_logger.warning("{} is not enabled in {}".format(wkld_provider,
_cli_args.setup))
else:
_logger.error("{} is missing in {}".format(
wkld_provider, _cli_args.setup))
result_dir = _config['browbeat']['results']
browbeat.workloadbase.WorkloadBase.print_report(result_dir, time_stamp)
_logger.info("Saved browbeat result summary to {}".format(
os.path.join(result_dir, time_stamp + '.' + 'report')))
browbeat.workloadbase.WorkloadBase.print_summary()
result_dir_ts = datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%S")
_logger.info("Browbeat test suite kicked off")
_logger.info("Browbeat UUID: {}".format(browbeat.elastic.browbeat_uuid))
if _config['elasticsearch']['enabled']:
_logger.info("Checking for Metadata")
metadata_exists = tools.check_metadata()
if not metadata_exists:
_logger.error("Elasticsearch has been enabled but"
" metadata files do not exist")
_logger.info("Gathering Metadata")
tools.gather_metadata()
elif _config['elasticsearch']['regather']:
_logger.info("Regathering Metadata")
tools.gather_metadata()
browbeat_rc = 0
if browbeat.workloadbase.WorkloadBase.failure > 0:
browbeat_rc = 1
if browbeat.workloadbase.WorkloadBase.index_failures > 0:
browbeat_rc = 2
_logger.info("Running workload(s): {}".format(','.join(_cli_args.workloads)))
# Iteration rerun_type pushes rerun logic down to the workload itself. This allows the workload
# to run multiple times before moving to the next workload
if _config["browbeat"]["rerun_type"] == "iteration":
for workload in _config["workloads"]:
if not workload["enabled"]:
_logger.info("{} workload {} disabled in browbeat config".format(workload["type"],
workload["name"]))
continue
if browbeat_rc == 1:
_logger.info("Browbeat finished with test failures, UUID: {}".format(
browbeat.elastic.browbeat_uuid))
sys.exit(browbeat_rc)
elif browbeat_rc == 2:
_logger.info("Browbeat finished with Elasticsearch indexing failures, UUID: {}"
.format(browbeat.elastic.browbeat_uuid))
sys.exit(browbeat_rc)
else:
_logger.info("Browbeat finished successfully, UUID: {}".format(
browbeat.elastic.browbeat_uuid))
sys.exit(0)
if not workload["type"] in _cli_args.workloads:
_logger.info(
"{} workload {} disabled via cli".format(workload["type"], workload["name"]))
continue
_logger.info("{} workload {} is enabled".format(workload["type"], workload["name"]))
tools.run_workload(workload, result_dir_ts, 0)
browbeat.workloadbase.WorkloadBase.print_summary()
elif _config["browbeat"]["rerun_type"] == "complete":
# Complete rerun_type, reruns after all workloads have been run.
for run_iteration in range(0, _config["browbeat"]["rerun"]):
for workload in _config["workloads"]:
if not workload["enabled"]:
_logger.info("{} workload {} disabled in browbeat config"
.format(workload["type"], workload["name"]))
continue
if not workload["type"] in _cli_args.workloads:
_logger.info("{} workload {} disabled via cli".format(workload["type"],
workload["name"]))
continue
_logger.info("{} workload {} is enabled".format(workload["type"], workload["name"]))
tools.run_workload(workload, result_dir_ts, run_iteration)
browbeat.workloadbase.WorkloadBase.print_summary()
browbeat.workloadbase.WorkloadBase.print_report(results_path, result_dir_ts)
_logger.info("Saved browbeat result summary to {}"
.format(os.path.join(results_path, "{}.report".format(result_dir_ts))))
if browbeat.workloadbase.WorkloadBase.failure > 0:
_logger.info(
"Browbeat finished with test failures, UUID: {}".format(browbeat.elastic.browbeat_uuid))
sys.exit(1)
if browbeat.workloadbase.WorkloadBase.index_failures > 0:
_logger.info("Browbeat finished with Elasticsearch indexing failures, UUID: {}"
.format(browbeat.elastic.browbeat_uuid))
sys.exit(2)
_logger.info("Browbeat finished successfully, UUID: {}".format(browbeat.elastic.browbeat_uuid))
sys.exit(0)
if __name__ == '__main__':
sys.exit(main())

57
browbeat/config.py Normal file
View File

@ -0,0 +1,57 @@
# 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.
import logging
import yaml
from pykwalify import core as pykwalify_core
from pykwalify import errors as pykwalify_errors
from browbeat.path import conf_schema_path
_logger = logging.getLogger("browbeat.config")
def load_browbeat_config(path):
"""Loads and validates an entire Browbeat config per the expected schema.
:param path: The path to the Browbeat Config file
"""
with open(path, "r") as config_file:
browbeat_config = yaml.safe_load(config_file)
_logger.debug("Browbeat config {} yaml loaded".format(path))
# Validate base config for Browbeat format
_validate_yaml("browbeat", browbeat_config)
_logger.info("Config {} validated".format(path))
# Validate per-workloads
for workload in browbeat_config["workloads"]:
_validate_yaml(workload["type"], workload)
_logger.info("Workload {} validated as {}".format(workload["name"], workload["type"]))
return browbeat_config
def _validate_yaml(schema, config):
"""Raises exception if config is invalid.
:param schema: The schema to validate with (browbeat, perfkit, rally...)
:param config: Loaded yaml to validate
"""
with open("{}/{}.yml".format(conf_schema_path, schema), "r") as schema_file:
schema = yaml.safe_load(schema_file)
check = pykwalify_core.Core(source_data=config, schema_data=schema)
try:
check.validate(raise_exception=True)
except pykwalify_errors.SchemaError as e:
_logger.error("Schema validation failed")
raise Exception("File does not conform to {} schema: {}".format(schema, e))

View File

@ -19,8 +19,8 @@ class Grafana(object):
self.logger = logging.getLogger('browbeat.grafana')
self.config = config
self.cloud_name = self.config['browbeat']['cloud_name']
self.grafana_ip = self.config['grafana']['grafana_ip']
self.grafana_port = self.config['grafana']['grafana_port']
self.host = self.config['grafana']['host']
self.port = self.config['grafana']['port']
self.grafana_url = {}
def grafana_urls(self):
@ -31,7 +31,7 @@ class Grafana(object):
from_ts = time['from_ts']
to_ts = time['to_ts']
url = 'http://{}:{}/dashboard/db/'.format(
self.grafana_ip, self.grafana_port)
self.host, self.port)
for dashboard in self.config['grafana']['dashboards']:
self.grafana_url[dashboard] = '{}{}?from={}&to={}&var-Cloud={}'.format(
url,

View File

@ -27,6 +27,8 @@ base_path = os.path.abspath(os.path.join(browbeat_path, os.pardir))
conf_path = os.path.join(browbeat_path, 'conf')
conf_schema_path = os.path.join(browbeat_project_path, 'schema')
log_path = os.path.join(browbeat_path, 'log')
results_path = os.path.join(browbeat_path, 'results')

View File

@ -23,15 +23,17 @@ import elastic
import grafana
from path import get_overcloudrc
from path import get_workload_venv
from path import results_path
import tools
import workloadbase
class PerfKit(workloadbase.WorkloadBase):
def __init__(self, config):
def __init__(self, config, result_dir_ts):
self.logger = logging.getLogger('browbeat.perfkit')
self.overcloudrc = get_overcloudrc()
self.config = config
self.result_dir_ts = result_dir_ts
self.error_count = 0
self.tools = tools.Tools(self.config)
self.grafana = grafana.Grafana(self.config)
@ -40,16 +42,6 @@ class PerfKit(workloadbase.WorkloadBase):
self.scenario_count = 0
self.pass_count = 0
def _log_details(self):
self.logger.info(
"Current number of Perkit scenarios executed: {}".format(self.scenario_count))
self.logger.info(
"Current number of Perfkit test(s) executed: {}".format(self.test_count))
self.logger.info(
"Current number of Perfkit test(s) succeeded: {}".format(self.pass_count))
self.logger.info(
"Current number of Perfkit test failures: {}".format(self.error_count))
def string_to_dict(self, string):
"""Function for converting "|" quoted hash data into python dictionary."""
dict_data = {}
@ -126,6 +118,8 @@ class PerfKit(workloadbase.WorkloadBase):
# Build command to run
if 'enabled' in benchmark_config:
del benchmark_config['enabled']
if 'type' in benchmark_config:
del benchmark_config['type']
cmd = ("source {0}; source {1}; "
"{2}/PerfKitBenchmarker/pkb.py "
"--cloud={3} --run_uri=browbeat".format(
@ -182,54 +176,47 @@ class PerfKit(workloadbase.WorkloadBase):
return success, to_ts, from_ts
def run_workloads(self):
def run_workload(self, workload, run_iteration):
self.logger.info("Starting PerfKitBenchmarker Workloads.")
time_stamp = datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%S")
self.logger.debug("Time Stamp (Prefix): {}".format(time_stamp))
benchmarks = self.config.get('perfkit')['benchmarks']
if (benchmarks is not None and len(benchmarks) > 0):
for benchmark in benchmarks:
if benchmark['enabled']:
self.logger.info("Benchmark: {}".format(benchmark['name']))
self.update_scenarios()
self.update_total_scenarios()
# Add default parameters as necessary
for default_item, value in self.config['perfkit']['default'].iteritems():
if default_item not in benchmark:
benchmark[default_item] = value
for run in range(self.config['browbeat']['rerun']):
self.update_tests()
self.update_total_tests()
result_dir = self.tools.create_results_dir(
self.config['browbeat']['results'], time_stamp, benchmark['name'],
str(run))
test_name = "{}-{}-{}".format(time_stamp, benchmark['name'], run)
workload = self.__class__.__name__
self.workload_logger(result_dir, workload)
success, to_ts, from_ts = self.run_benchmark(benchmark, result_dir,
test_name)
index_success = 'disabled'
if self.config['elasticsearch']['enabled']:
index_success = self.index_results(success, result_dir, test_name, run,
benchmark)
new_test_name = test_name.split('-')
new_test_name = new_test_name[2:]
new_test_name = '-'.join(new_test_name)
if success:
self.update_pass_tests()
self.update_total_pass_tests()
self.get_time_dict(to_ts, from_ts, benchmark['benchmarks'],
new_test_name, self.__class__.__name__, "pass",
index_success)
else:
self.update_fail_tests()
self.update_total_fail_tests()
self.get_time_dict(to_ts, from_ts, benchmark['benchmarks'],
new_test_name, self.__class__.__name__, "fail",
index_success)
self._log_details()
else:
self.logger.info(
"Skipping {} benchmark, enabled: false".format(benchmark['name']))
else:
self.logger.error("Config file contains no perfkit benchmarks.")
self.logger.info("Benchmark: {}".format(workload['name']))
self.update_scenarios()
self.update_total_scenarios()
# Add default parameters as necessary
for default_item, value in self.config['perfkit']['default'].iteritems():
if default_item not in workload:
workload[default_item] = value
# Correct iteration/rerun
rerun_range = range(self.config["browbeat"]["rerun"])
if self.config["browbeat"]["rerun_type"] == "complete":
rerun_range = range(run_iteration, run_iteration + 1)
for run in rerun_range:
self.update_tests()
self.update_total_tests()
result_dir = self.tools.create_results_dir(
results_path, self.result_dir_ts, workload['name'], str(run))
test_name = "{}-{}-{}".format(time_stamp, workload['name'], run)
self.workload_logger(self.__class__.__name__)
success, to_ts, from_ts = self.run_benchmark(workload, result_dir, test_name)
index_success = 'disabled'
if self.config['elasticsearch']['enabled']:
index_success = self.index_results(success, result_dir, test_name, run, workload)
new_test_name = test_name.split('-')
new_test_name = new_test_name[2:]
new_test_name = '-'.join(new_test_name)
if success:
self.update_pass_tests()
self.update_total_pass_tests()
self.get_time_dict(to_ts, from_ts, workload['benchmarks'],
new_test_name, self.__class__.__name__, "pass",
index_success)
else:
self.update_fail_tests()
self.update_total_fail_tests()
self.get_time_dict(to_ts, from_ts, workload['benchmarks'],
new_test_name, self.__class__.__name__, "fail",
index_success)

View File

@ -23,15 +23,17 @@ import time
import elastic
import grafana
from path import get_workload_venv
from path import results_path
import workloadbase
import tools
class Rally(workloadbase.WorkloadBase):
def __init__(self, config, hosts=None):
def __init__(self, config, result_dir_ts):
self.logger = logging.getLogger('browbeat.rally')
self.config = config
self.result_dir_ts = result_dir_ts
self.tools = tools.Tools(self.config)
self.grafana = grafana.Grafana(self.config)
self.elastic = elastic.Elastic(self.config, self.__class__.__name__.lower())
@ -43,7 +45,7 @@ class Rally(workloadbase.WorkloadBase):
def run_scenario(self, task_file, scenario_args, result_dir, test_name, benchmark):
self.logger.debug("--------------------------------")
self.logger.debug("task_file: {}".format(task_file))
self.logger.debug("scenario_args: {}".format(scenario_args))
self.logger.info("Running with scenario_args: {}".format(scenario_args))
self.logger.debug("result_dir: {}".format(result_dir))
self.logger.debug("test_name: {}".format(test_name))
self.logger.debug("--------------------------------")
@ -91,17 +93,6 @@ class Rally(workloadbase.WorkloadBase):
test_name)
return self.tools.run_cmd(cmd)['stdout']
def _get_details(self):
self.logger.info(
"Current number of Rally scenarios executed:{}".format(
self.scenario_count))
self.logger.info(
"Current number of Rally tests executed:{}".format(self.test_count))
self.logger.info(
"Current number of Rally tests passed:{}".format(self.pass_count))
self.logger.info(
"Current number of Rally test failures:{}".format(self.error_count))
def gen_scenario_html(self, task_ids, test_name):
all_task_ids = ' '.join(task_ids)
cmd = "source {}; ".format(get_workload_venv('rally', True))
@ -223,152 +214,113 @@ class Rally(workloadbase.WorkloadBase):
success = False
return success
def run_workloads(self):
"""Iterates through all rally scenarios in browbeat yaml config file"""
results = collections.OrderedDict()
self.logger.info("Starting Rally workloads")
def run_workload(self, workload, run_iteration):
"""Runs a Browbeat Rally workload"""
results = []
self.logger.info("Running Rally workload: {}".format(workload["name"]))
es_ts = datetime.datetime.utcnow()
dir_ts = es_ts.strftime("%Y%m%d-%H%M%S")
self.logger.debug("Time Stamp (Prefix): {}".format(dir_ts))
benchmarks = self.config.get('rally')['benchmarks']
if (benchmarks is not None and len(benchmarks) > 0):
for benchmark in benchmarks:
if benchmark['enabled']:
self.logger.info("Benchmark: {}".format(benchmark['name']))
scenarios = benchmark['scenarios']
def_concurrencies = benchmark['concurrency']
def_times = benchmark['times']
self.logger.debug(
"Default Concurrencies: {}".format(def_concurrencies))
self.logger.debug("Default Times: {}".format(def_times))
for scenario in scenarios:
if scenario['enabled']:
self.update_scenarios()
self.update_total_scenarios()
scenario_name = scenario['name']
scenario_file = scenario['file']
self.logger.info(
"Running Scenario: {}".format(scenario_name))
self.logger.debug(
"Scenario File: {}".format(scenario_file))
def_concurrencies = workload["concurrency"]
def_times = workload["times"]
self.logger.debug("Default Concurrencies: {}".format(def_concurrencies))
self.logger.debug("Default Times: {}".format(def_times))
for scenario in workload["scenarios"]:
if not scenario["enabled"]:
self.logger.info("{} scenario is disabled".format(scenario['name']))
continue
del scenario['enabled']
del scenario['file']
del scenario['name']
if len(scenario) > 0:
self.logger.debug(
"Overriding Scenario Args: {}".format(scenario))
self.logger.info("Running Scenario: {}".format(scenario["name"]))
self.logger.debug("Scenario File: {}".format(scenario["file"]))
self.update_scenarios()
self.update_total_scenarios()
scenario_name = scenario["name"]
scenario_file = scenario["file"]
del scenario["enabled"]
del scenario["file"]
del scenario["name"]
if len(scenario) > 0:
self.logger.debug("Overriding Scenario Args: {}".format(scenario))
result_dir = self.tools.create_results_dir(
self.config['browbeat']['results'], dir_ts,
self.__class__.__name__.lower(),
benchmark['name'], scenario_name
)
self.logger.debug(
"Created result directory: {}".format(result_dir))
workload = self.__class__.__name__
self.workload_logger(result_dir, workload)
result_dir = self.tools.create_results_dir(
results_path, self.result_dir_ts,
self.__class__.__name__.lower(),
workload["name"], scenario_name
)
# Override concurrency/times
if 'concurrency' in scenario:
concurrencies = scenario['concurrency']
del scenario['concurrency']
else:
concurrencies = def_concurrencies
concurrency_count_dict = collections.Counter(
concurrencies)
if 'times' not in scenario:
scenario['times'] = def_times
self.logger.debug("Created result directory: {}".format(result_dir))
self.workload_logger(self.__class__.__name__)
for concurrency in concurrencies:
scenario['concurrency'] = concurrency
for run in range(self.config['browbeat']['rerun']):
if run not in results:
results[run] = []
self.update_tests()
self.update_total_tests()
if concurrency_count_dict[concurrency] == 1:
test_name = "{}-browbeat-{}-{}-iteration-{}".format(
dir_ts, scenario_name, concurrency, run)
else:
test_name = "{}-browbeat-{}-{}-{}-iteration-{}".format(
dir_ts, scenario_name, concurrency,
concurrency_count_dict[concurrency], run)
self.logger.debug("Duplicate concurrency {} found,"
" setting test name"
" to {}".format(concurrency, test_name))
concurrency_count_dict[
concurrency] -= 1
# Override concurrency/times
if "concurrency" in scenario:
concurrencies = scenario["concurrency"]
del scenario["concurrency"]
else:
concurrencies = def_concurrencies
if "times" not in scenario:
scenario["times"] = def_times
if not result_dir:
self.logger.error(
"Failed to create result directory")
exit(1)
concurrency_count_dict = collections.Counter()
for concurrency in concurrencies:
scenario["concurrency"] = concurrency
from_time, to_time = self.run_scenario(
scenario_file, scenario, result_dir, test_name,
benchmark['name'])
# Correct iteration/rerun
rerun_range = range(self.config["browbeat"]["rerun"])
if self.config["browbeat"]["rerun_type"] == "complete":
rerun_range = range(run_iteration, run_iteration + 1)
new_test_name = test_name.split('-')
new_test_name = new_test_name[3:]
new_test_name = "-".join(new_test_name)
for run in rerun_range:
self.update_tests()
self.update_total_tests()
concurrency_count_dict[concurrency] += 1
test_name = "{}-browbeat-{}-{}-{}-iteration-{}".format(
es_ts.strftime("%Y%m%d-%H%M%S"), scenario_name, concurrency,
concurrency_count_dict[concurrency], run)
# Find task id (if task succeeded in
# running)
task_id = self.get_task_id(test_name)
if task_id:
self.logger.info(
"Generating Rally HTML for task_id : {}".
format(task_id))
self.gen_scenario_html(
[task_id], test_name)
self.gen_scenario_json_file(
task_id, test_name)
results[run].append(task_id)
self.update_pass_tests()
self.update_total_pass_tests()
if self.config['elasticsearch']['enabled']:
# Start indexing
index_status = self.json_result(
task_id, scenario_name, run, test_name, result_dir)
if not index_status:
self.update_index_failures()
self.get_time_dict(to_time, from_time,
benchmark[
'name'], new_test_name,
workload, "pass", index_status)
else:
self.get_time_dict(to_time, from_time, benchmark[
'name'], new_test_name,
workload, "pass", )
if not result_dir:
self.logger.error(
"Failed to create result directory")
exit(1)
else:
self.logger.error(
"Cannot find task_id")
self.update_fail_tests()
self.update_total_fail_tests()
self.get_time_dict(
to_time, from_time, benchmark[
'name'], new_test_name,
workload, "fail")
from_time, to_time = self.run_scenario(
scenario_file, scenario, result_dir, test_name, workload["name"])
for data in glob.glob("./{}*".format(test_name)):
shutil.move(data, result_dir)
self._get_details()
new_test_name = test_name.split("-")
new_test_name = new_test_name[3:]
new_test_name = "-".join(new_test_name)
# Find task id (if task succeeded in running)
task_id = self.get_task_id(test_name)
if task_id:
self.logger.info("Generating Rally HTML for task_id : {}".format(task_id))
self.gen_scenario_html([task_id], test_name)
self.gen_scenario_json_file(task_id, test_name)
results.append(task_id)
self.update_pass_tests()
self.update_total_pass_tests()
if self.config["elasticsearch"]["enabled"]:
# Start indexing
index_status = self.json_result(
task_id, scenario_name, run, test_name, result_dir)
if not index_status:
self.update_index_failures()
self.get_time_dict(to_time, from_time, workload["name"], new_test_name,
self.__class__.__name__, "pass", index_status)
else:
self.logger.info(
"Skipping {} scenario enabled: false".format(scenario['name']))
else:
self.logger.info(
"Skipping {} benchmarks enabled: false".format(benchmark['name']))
self.logger.debug("Creating Combined Rally Reports")
for run in results:
combined_html_name = 'all-rally-run-{}'.format(run)
self.gen_scenario_html(results[run], combined_html_name)
if os.path.isfile('{}.html'.format(combined_html_name)):
shutil.move('{}.html'.format(combined_html_name),
'{}/{}'.format(self.config['browbeat']['results'], dir_ts))
else:
self.logger.error("Config file contains no rally benchmarks.")
self.get_time_dict(to_time, from_time, workload["name"], new_test_name,
self.__class__.__name__, "pass", )
else:
self.logger.error("Cannot find task_id")
self.update_fail_tests()
self.update_total_fail_tests()
self.get_time_dict(to_time, from_time, workload["name"], new_test_name,
self.__class__.__name__, "fail")
for data in glob.glob("./{}*".format(test_name)):
shutil.move(data, result_dir)
self.logger.debug("Creating Combined Rally Reports")
combined_html_name = "all-rally-run-{}".format(run_iteration)
self.gen_scenario_html(results, combined_html_name)
if os.path.isfile("{}.html".format(combined_html_name)):
shutil.move("{}.html".format(combined_html_name), "{}/{}/{}/{}".format(results_path,
self.result_dir_ts, self.__class__.__name__.lower(), workload["name"]))

View File

@ -0,0 +1,194 @@
# This schema defines how Browbeat config files are formated. Generally items
# in a dictionary format will be alphabetically ordered however the Browbeat
# options will appear first in base level yaml dictionary.
name: Browbeat configuration schema
type: map
mapping:
# General Browbeat Configuration Items
browbeat:
required: True
type: map
mapping:
cloud_name:
type: str
required: True
rerun:
type: int
required: True
rerun_type:
type: str
enum: ['iteration', 'complete']
required: True
ansible:
required: True
type: map
mapping:
hosts:
type: str
required: True
metadata_playbook:
type: str
required: True
ssh_config:
type: str
required: True
elasticsearch:
required: True
type: map
mapping:
enabled:
type: bool
required: True
host:
type: str
required: True
metadata_files:
type: seq
required: True
sequence:
- type: map
mapping:
name:
type: str
required: True
file:
type: str
required: True
port:
type: int
required: True
regather:
type: bool
required: True
grafana:
required: True
type: map
mapping:
dashboards:
type: seq
required: True
sequence:
- type: str
enabled:
type: bool
required: True
host:
type: str
required: True
port:
type: int
required: True
perfkit:
required: True
type: map
mapping:
default:
type: map
required: True
mapping:
image:
type: str
required: True
machine_type:
type: str
required: True
os_type:
type: str
required: True
enum: ['rhel', 'debian', 'ubuntu_container', 'windows']
openstack_image_username:
type: str
required: True
openstack_floating_ip_pool:
type: str
required: True
openstack_network:
type: str
required: True
ignore_package_requirements:
type: bool
required: False
timing_measurements:
type: str
required: False
sleep_after:
type: number
required: True
sleep_before:
type: number
required: True
rally:
required: True
type: map
mapping:
plugins:
type: seq
required: False
sequence:
- type: map
required: False
allowempty: True
sleep_after:
type: number
required: True
sleep_before:
type: number
required: True
shaker:
required: True
type: map
mapping:
server:
type: str
required: True
pattern: ^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$
port:
type: int
required: True
flavor:
type: str
required: True
join_timeout:
type: int
required: True
sleep_before:
type: number
required: True
sleep_after:
type: number
required: True
shaker_region:
type: str
required: true
external_host:
type: str
required: False
pattern: ^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$
yoda:
type: map
required: True
mapping:
instackenv:
type: str
required: True
stackrc:
type: str
required: True
workloads:
required: True
type: seq
sequence:
- type: map
required: True
allowempty: True
mapping:
enabled:
type: bool
required: True
name:
type: str
required: True
type:
type: str
required: True
enum: ['perfkit', 'rally', 'shaker', 'yoda']

View File

@ -0,0 +1,48 @@
# This schema defines how a PerfKitBenchmarker workload is formated
name: PerfKitBenchmarker workload schema
type: map
allowempty: True
mapping:
# Required items to be a PerfKit workload
benchmarks:
type: str
required: True
enabled:
type: bool
required: True
name:
type: str
required: True
type:
type: str
required: True
enum: ["perfkit"]
# Over-ridable defaults:
ignore_package_requirements:
type: bool
required: False
image:
type: str
required: False
machine_type:
type: str
required: False
openstack_floating_ip_pool:
type: str
required: False
openstack_image_username:
type: str
required: False
openstack_network:
type: str
required: False
openstack_volume_size:
type: int
required: False
os_type:
type: str
required: False
enum: ['rhel', 'debian', 'ubuntu_container', 'windows']
timing_measurements:
type: str
required: False

38
browbeat/schema/rally.yml Normal file
View File

@ -0,0 +1,38 @@
# This schema defines how a Rally workload is formated
name: Rally workload schema
type: map
mapping:
# Required items to be a Rally workload
concurrency:
type: seq
required: True
sequence:
- type: int
enabled:
type: bool
required: True
name:
type: str
required: True
times:
type: int
required: True
type:
type: str
required: True
enum: ["rally"]
scenarios:
type: seq
sequence:
- type: map
allowempty: True
mapping:
enabled:
type: bool
required: True
file:
type: str
required: True
name:
type: str
required: True

View File

@ -0,0 +1,19 @@
# This schema defines how a Rally workload is formated
name: Shaker workload schema
type: map
allowempty: True
mapping:
# Required items to be a Shaker workload
enabled:
type: bool
required: True
file:
type: str
required: True
name:
type: str
required: True
type:
type: str
required: True
enum: ["shaker"]

71
browbeat/schema/yoda.yml Normal file
View File

@ -0,0 +1,71 @@
# This schema defines how a Yoda workload is formated
name: Yoda workload schema
type: map
mapping:
# Required items to be a Yoda workload
enabled:
required: True
type: bool
name:
type: str
required: True
timeout:
type: int
required: True
times:
type: int
required: True
type:
type: str
required: True
enum: ["yoda"]
yoda_type:
type: str
required: True
enum: ['introspection', 'overcloud']
# Optional/type-specific items for Yoda workload:
batch_size:
type: int
required: False
cloud:
type: seq
required: False
sequence:
- type: map
allowempty: True
mapping:
node:
type: str
required: True
start_scale:
type: int
required: True
end_scale:
type: int
required: True
instackenv:
type: str
required: False
keep_stack:
type: bool
required: False
max_fail_amnt:
type: float
required: False
method:
type: str
required: False
node_pinning:
type: bool
required: False
ntp_server:
type: str
required: False
step:
type: int
required: False
templates:
type: seq
required: False
sequence:
- type: str

View File

@ -23,16 +23,18 @@ import elastic
import grafana
from path import get_overcloudrc
from path import get_workload_venv
from path import results_path
import workloadbase
import tools
class Shaker(workloadbase.WorkloadBase):
def __init__(self, config):
def __init__(self, config, result_dir_ts):
self.logger = logging.getLogger('browbeat.shaker')
self.overcloudrc = get_overcloudrc()
self.config = config
self.result_dir_ts = result_dir_ts
self.tools = tools.Tools(self.config)
self.grafana = grafana.Grafana(self.config)
self.elastic = elastic.Elastic(self.config, self.__class__.__name__.lower())
@ -42,24 +44,14 @@ class Shaker(workloadbase.WorkloadBase):
self.scenario_count = 0
def shaker_checks(self):
cmd = "source {}; glance image-list | grep -w shaker-image".format(self.overcloudrc)
cmd = "source {}; source {}; glance image-list | grep -w shaker-image".format(
get_workload_venv('shaker', True), self.overcloudrc)
if self.tools.run_cmd(cmd)['stdout'] == "":
self.logger.error("Shaker Image is not built, try again")
exit(1)
else:
self.logger.info("Shaker image is built, continuing")
def get_stats(self):
self.logger.info(
"Current number of Shaker tests executed: {}".format(
self.test_count))
self.logger.info(
"Current number of Shaker tests passed: {}".format(
self.pass_count))
self.logger.info(
"Current number of Shaker tests failed: {}".format(
self.error_count))
def accommodation_to_dict(self, accommodation):
accommodation_dict = {}
for item in accommodation:
@ -406,57 +398,46 @@ class Shaker(workloadbase.WorkloadBase):
else:
self.result_check(result_dir, test_name, scenario, to_time, from_time)
def run_workloads(self):
def run_workload(self, workload, run_iteration):
self.logger.info("Starting Shaker workloads")
time_stamp = datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%S")
self.logger.debug("Time Stamp (Prefix): {}".format(time_stamp))
scenarios = self.config.get('shaker')['scenarios']
venv = get_workload_venv('shaker', False)
default_time = 60
self.shaker_checks()
if (scenarios is not None and len(scenarios) > 0):
for scenario in scenarios:
if scenario['enabled']:
self.update_scenarios()
self.update_total_scenarios()
shaker_uuid = uuid.uuid4()
es_ts = datetime.datetime.utcnow()
es_list = []
if "time" in scenario:
test_time = scenario['time']
else:
test_time = default_time
for interval in range(0, test_time + 9):
es_list.append(
datetime.datetime.utcnow() +
datetime.timedelta(0, interval))
for run in range(self.config['browbeat']['rerun']):
self.logger.info("Scenario: {}".format(scenario['name']))
self.logger.info("Run: {}".format(run))
fname = os.path.join(venv, scenario['file'])
self.set_scenario(scenario, fname, default_time)
self.logger.debug("Set Scenario File: {}".format(
fname))
result_dir = self.tools.create_results_dir(
self.config['browbeat'][
'results'], time_stamp, "shaker",
scenario['name'] + "-" + str(run))
workload = self.__class__.__name__
self.workload_logger(result_dir, workload)
time_stamp1 = datetime.datetime.now().strftime(
"%Y%m%d-%H%M%S")
test_name = "{}-browbeat-{}-{}-{}".format(
time_stamp1, "shaker", scenario['name'], run)
self.run_scenario(
scenario, result_dir, test_name, fname, shaker_uuid,
es_ts, es_list, run)
self.get_stats()
else:
self.logger.info(
"Skipping {} as scenario enabled: false".format(
scenario['name']))
self.final_stats(self.scenario_count)
else:
self.logger.error(
"Configuration file contains no shaker scenarios")
venv = get_workload_venv('shaker', False)
self.shaker_checks()
self.update_scenarios()
self.update_total_scenarios()
shaker_uuid = uuid.uuid4()
es_ts = datetime.datetime.utcnow()
es_list = []
# Default test time to 60
test_time = workload.get("time", 60)
for interval in range(0, test_time + 9):
es_list.append(
datetime.datetime.utcnow() +
datetime.timedelta(0, interval))
rerun_range = range(self.config["browbeat"]["rerun"])
if self.config["browbeat"]["rerun_type"] == "complete":
# Compelete rerun type means force
rerun_range = range(run_iteration, run_iteration + 1)
for run in rerun_range:
self.logger.info("Scenario: {}".format(workload['name']))
self.logger.info("Run: {}".format(run))
fname = os.path.join(venv, workload['file'])
self.set_scenario(workload, fname, 60)
self.logger.debug("Set Scenario File: {}".format(fname))
result_dir = self.tools.create_results_dir(
results_path, self.result_dir_ts, "shaker",
workload['name'] + "-" + str(run))
self.workload_logger(self.__class__.__name__)
time_stamp1 = datetime.datetime.now().strftime(
"%Y%m%d-%H%M%S")
test_name = "{}-browbeat-{}-{}-{}".format(
time_stamp1, "shaker", workload['name'], run)
self.run_scenario(
workload, result_dir, test_name, fname, shaker_uuid,
es_ts, es_list, run)
self.final_stats(self.scenario_count)

View File

@ -10,14 +10,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import copy
import logging
import os
import re
import subprocess
import yaml
from pykwalify import core as pykwalify_core
from pykwalify import errors as pykwalify_errors
import perfkit
import rally
@ -27,10 +24,9 @@ import yoda
class Tools(object):
def __init__(self, config=None):
def __init__(self, config):
self.logger = logging.getLogger('browbeat.tools')
self.config = config
return None
# Returns true if ping successful, false otherwise
def is_pingable(self, ip):
@ -88,47 +84,24 @@ class Tools(object):
return False
return the_directory
def _load_config(self, path, validate=True):
try:
stream = open(path, 'r')
except IOError:
self.logger.error(
"Configuration file {} passed is missing".format(path))
exit(1)
config = yaml.safe_load(stream)
stream.close()
self.config = config
if validate:
self.validate_yaml()
return config
def run_workload(self, workload, result_dir_ts, run_iteration):
"""Creates workload object and runs a specific workload.
def validate_yaml(self):
self.logger.info(
"Validating the configuration file passed by the user")
stream = open("browbeat/validate.yaml", 'r')
schema = yaml.safe_load(stream)
check = pykwalify_core.Core(
source_data=self.config, schema_data=schema)
try:
check.validate(raise_exception=True)
self.logger.info("Validation successful")
except pykwalify_errors.SchemaError as e:
self.logger.error("Schema Validation failed")
raise Exception('File does not conform to schema: {}'.format(e))
def _run_workload_provider(self, provider):
self.logger = logging.getLogger('browbeat')
if provider == "perfkit":
workloads = perfkit.PerfKit(self.config)
elif provider == "rally":
workloads = rally.Rally(self.config)
elif provider == "shaker":
workloads = shaker.Shaker(self.config)
elif provider == "yoda":
workloads = yoda.Yoda(self.config)
:param workload: Dictionary of workload attributes defined by browbeat config
:param result_dir_ts: Result directory timestamp
:param run_iteration: Iteration for a specific run
"""
if workload["type"] == "perfkit":
workloads = perfkit.PerfKit(self.config, result_dir_ts)
elif workload["type"] == "rally":
workloads = rally.Rally(self.config, result_dir_ts)
elif workload["type"] == "shaker":
workloads = shaker.Shaker(self.config, result_dir_ts)
elif workload["type"] == "yoda":
workloads = yoda.Yoda(self.config, result_dir_ts)
else:
self.logger.error("Unknown workload provider: {}".format(provider))
workloads.run_workloads()
self.logger.error("Unknown workload provider: {}".format(workload["type"]))
workloads.run_workload(copy.deepcopy(workload), run_iteration)
def check_metadata(self):
meta = self.config['elasticsearch']['metadata_files']
@ -140,12 +113,11 @@ class Tools(object):
return True
def gather_metadata(self):
os.putenv("ANSIBLE_SSH_ARGS",
" -F {}".format(self.config['ansible']['ssh_config']))
os.putenv("ANSIBLE_SSH_ARGS", " -F {}".format(self.config['ansible']['ssh_config']))
ansible_cmd = \
'ansible-playbook -i {} {}' \
.format(self.config['ansible']['hosts'], self.config['ansible']['metadata'])
.format(self.config['ansible']['hosts'], self.config['ansible']['metadata_playbook'])
self.run_cmd(ansible_cmd)
if not self.check_metadata():
self.logger.warning("Metadata could not be gathered")

View File

@ -1,331 +0,0 @@
name: Browbeat configuration schema
type: map
mapping:
browbeat:
required: True
type: map
mapping:
results:
type: str
required: True
rerun:
type: int
required: True
cloud_name:
type: str
required: True
elasticsearch:
required: True
type: map
mapping:
enabled:
type: bool
required: True
host:
type: str
required: True
pattern: ^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$
regather:
type: bool
required: True
port:
type: int
required: True
metadata_files:
type: seq
required: True
sequence:
- type: map
allowempty: True
mapping:
name:
type: str
required: True
file:
type: str
required: True
ansible:
required: True
type: map
allowempty: True
mapping:
ssh_config:
type: str
required: True
hosts:
type: str
required: True
adjust:
type: map
mapping:
keystone_token:
type: str
neutron_l3:
type: str
nova_db:
type: str
workers:
type: str
shaker_build:
type: str
metadata:
type: str
required: True
grafana:
required: True
type: map
mapping:
enabled:
type: bool
required: True
grafana_ip:
type: str
pattern: ^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$
grafana_port:
type: int
dashboards:
type: seq
sequence:
- type: str
perfkit:
required: False
type: map
allowempty: True
mapping:
enabled:
type: bool
required: True
sleep_before:
type: number
required: True
sleep_after:
type: number
required: True
default:
type: map
required: True
mapping:
image:
type: str
required: True
machine_type:
type: str
required: True
os_type:
type: str
required: True
enum: ['rhel', 'debian', 'ubuntu_container', 'windows']
openstack_image_username:
type: str
required: True
openstack_floating_ip_pool:
type: str
required: True
openstack_network:
type: str
required: True
ignore_package_requirements:
type: bool
required: False
timing_measurements:
type: str
required: False
benchmarks:
type: seq
sequence:
- type: map
allowempty: True
mapping:
name:
type: str
required: True
enabled:
type: bool
required: True
benchmarks:
type: str
required: True
shaker:
required: False
allowempty: True
type: map
mapping:
enabled:
type: bool
required: True
server:
type: str
required: True
pattern: ^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$
port:
type: int
required: True
flavor:
type: str
required: True
join_timeout:
type: int
required: True
sleep_before:
type: number
required: True
sleep_after:
type: number
required: True
shaker_region:
type: str
required: true
external_host:
type: str
required: False
pattern: ^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$
scenarios:
type: seq
sequence:
- type: map
allowempty: True
mapping:
name:
type: str
required: True
enabled:
type: bool
required: True
file:
type: str
required: True
rally:
required: False
type: map
allowempty: True
mapping:
enabled:
type: bool
required: True
sleep_before:
type: number
required: True
sleep_after:
type: number
required: True
benchmarks:
type: seq
required: True
sequence:
- type: map
mapping:
name:
type: str
required: True
enabled:
required: True
type: bool
concurrency:
type: seq
required: True
sequence:
- type: int
times:
type: int
required: True
scenarios:
type: seq
sequence:
- type: map
allowempty: True
mapping:
name:
type: str
required: True
enabled:
type: bool
required: True
file:
type: str
required: True
yoda:
required: False
type: map
allowempty: True
mapping:
enabled:
type: bool
required: True
instackenv:
type: str
required: True
stackrc:
type: str
required: True
benchmarks:
type: seq
required: True
sequence:
- type: map
mapping:
name:
type: str
required: True
type:
type: str
required: True
enabled:
required: True
type: bool
ntp_server:
type: str
required: False
templates:
type: seq
required: False
sequence:
- type: str
instackenv:
type: str
required: false
times:
type: int
required: True
step:
type: int
required: False
method:
type: str
required: False
timeout:
type: int
required: True
max_fail_amnt:
type: float
required: False
batch_size:
type: int
required: False
keep_stack:
type: bool
required: False
node_pinning:
type: bool
required: False
cloud:
type: seq
sequence:
- type: map
allowempty: True
mapping:
node:
type: str
required: True
start_scale:
type: int
required: True
end_scale:
type: int
required: True

View File

@ -15,6 +15,8 @@ import logging
import os
import yaml
from browbeat.path import results_path
class WorkloadBase(object):
__metaclass__ = abc.ABCMeta
@ -26,8 +28,11 @@ class WorkloadBase(object):
index_failures = 0
browbeat = {}
def __init__(self):
self.result_dir_ts = ""
@abc.abstractmethod
def run_workloads(self):
def run_workload(self, workload, run_iteration):
pass
@abc.abstractmethod
@ -61,17 +66,15 @@ class WorkloadBase(object):
def update_index_failures(self):
WorkloadBase.index_failures += 1
def workload_logger(self, result_dir, workload):
base = result_dir.split('/')
if not os.path.isfile("{}/{}/browbeat-{}-run.log".format(base[0], base[1], workload)):
file = logging.FileHandler(
"{}/{}/browbeat-{}-run.log".format(base[0], base[1], workload))
file.setLevel(logging.DEBUG)
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)5s - %(message)s')
file.setFormatter(formatter)
self.logger.addHandler(file)
return None
def workload_logger(self, workload):
workload_result_dir = os.path.join(results_path, self.result_dir_ts)
if not os.path.isfile("{}/browbeat-{}-run.log".format(workload_result_dir, workload)):
filehandler = logging.FileHandler(
"{}/browbeat-{}-run.log".format(workload_result_dir, workload))
filehandler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)5s - %(message)s')
filehandler.setFormatter(formatter)
self.logger.addHandler(filehandler)
def get_time_dict(self, to_time, from_time, benchmark, test_name, workload, status,
index_status="disabled"):

View File

@ -30,15 +30,17 @@ import requests
import elastic
import grafana
from path import results_path
import workloadbase
import tools
class Yoda(workloadbase.WorkloadBase):
def __init__(self, config):
def __init__(self, config, result_dir_ts):
self.logger = logging.getLogger('browbeat.yoda')
self.config = config
self.result_dir_ts = result_dir_ts
self.tools = tools.Tools(self.config)
self.grafana = grafana.Grafana(self.config)
self.elastic = elastic.Elastic(self.config, self.__class__.__name__.lower())
@ -497,7 +499,7 @@ class Yoda(workloadbase.WorkloadBase):
def setup_scenario(self, benchmark_name, dir_ts):
results_dir = self.tools.create_results_dir(
self.config['browbeat']['results'], dir_ts, benchmark_name, benchmark_name)
results_path, dir_ts, benchmark_name, benchmark_name)
if isinstance(results_dir, bool):
self.logger.error(
@ -505,8 +507,7 @@ class Yoda(workloadbase.WorkloadBase):
exit(1)
self.logger.debug("Created result directory: {}".format(results_dir))
workload = self.__class__.__name__
self.workload_logger(results_dir, workload)
self.workload_logger(self.__class__.__name__)
return results_dir
def introspection_workload(
@ -640,7 +641,7 @@ class Yoda(workloadbase.WorkloadBase):
results = out[0]
changed = out[1]
def run_workloads(self):
def run_workload(self, workload, run_iteration):
"""Iterates through all yoda scenarios in browbeat yaml config file"""
self.logger.info("Starting YODA workloads")
es_ts = datetime.datetime.utcnow()
@ -667,39 +668,24 @@ class Yoda(workloadbase.WorkloadBase):
conn = connection.Connection(**auth_args)
instackenv = self.config.get('yoda')['instackenv']
benchmarks = self.config.get('yoda')['benchmarks']
if (benchmarks is not None and len(benchmarks) > 0):
for benchmark in benchmarks:
if benchmark['enabled']:
results_dir = self.setup_scenario(
benchmark['name'], dir_ts)
times = benchmark['times']
if 'instackenv' not in benchmark:
benchmark['instackenv'] = instackenv
for rerun in range(self.config['browbeat']['rerun']):
for run in range(times):
if benchmark['type'] == "overcloud":
self.overcloud_workload(benchmark,
run,
results_dir,
env_setup,
conn)
elif benchmark['type'] == "introspection":
self.introspection_workload(benchmark,
run,
results_dir,
env_setup,
conn)
else:
self.logger.error(
"Could not identify YODA workload!")
exit(1)
self.update_scenarios()
results_dir = self.setup_scenario(workload['name'], dir_ts)
times = workload['times']
if 'instackenv' not in workload:
workload['instackenv'] = instackenv
# Correct iteration/rerun
rerun_range = range(self.config["browbeat"]["rerun"])
if self.config["browbeat"]["rerun_type"] == "complete":
rerun_range = range(run_iteration, run_iteration + 1)
for run in rerun_range:
for run in range(times):
if workload['yoda_type'] == "overcloud":
self.overcloud_workload(workload, run, results_dir, env_setup, conn)
elif workload['yoda_type'] == "introspection":
self.introspection_workload(workload, run, results_dir, env_setup, conn)
else:
self.logger.info(
"Skipping {} benchmarks enabled: false".format(
benchmark['name']))
else:
self.logger.error("Config file contains no yoda benchmarks.")
self.logger.error("Could not identify YODA workload!")
exit(1)
self.update_scenarios()

View File

@ -1,237 +0,0 @@
# Tests to be compleated for the install-and-check.sh script minimal and short workloads are performed
# to confirm functionality.
browbeat:
results : results/
rerun: 1
cloud_name: openstack
elasticsearch:
enabled: false
host: 1.1.1.1
port: 9200
regather: true
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
- name: environment-metadata
file: metadata/environment-metadata.json
- name: software-metadata
file: metadata/software-metadata.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: true
grafana_ip: 1.1.1.1
grafana_port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
enabled: true
sleep_before: 0
sleep_after: 0
venv: /home/stack/perfkit-venv/bin/activate
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
benchmarks:
- name: fio-centos-m1-small
enabled: false
benchmarks: fio
data_disk_size: 4
rally:
enabled: true
sleep_before: 5
sleep_after: 5
venv: /home/stack/rally-venv/bin/activate
plugins:
- netcreate-boot: rally/rally-plugins/netcreate-boot
- netcreate-boot-ping: rally/rally-plugins/netcreate-boot-ping
- subnet-router-create: rally/rally-plugins/subnet-router-create
benchmarks:
- name: authenticate
enabled: true
concurrency:
- 16
- 8
- 16
times: 50
scenarios:
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
sla_max_avg_duration: 6
sla_max_seconds: 30
sla_max_failure: 0
- name: cinder
enabled: true
concurrency:
- 1
- 2
times: 4
scenarios:
- name: create-attach-volume-centos
enabled: true
file: rally/cinder/cinder-create-and-attach-volume-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: keystonebasic
enabled: false
concurrency:
- 8
times: 50
scenarios:
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
times: 50
- name: neutron
enabled: true
concurrency:
- 2
- 4
times: 10
scenarios:
- name: create-list-network
enabled: true
file: rally/neutron/neutron-create-list-network-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: nova
enabled: true
concurrency:
- 1
- 2
times: 16
scenarios:
- name: boot-snapshot-delete
enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml
image_name: cirros
flavor_name: m1.tiny
- name: plugins
enabled: true
concurrency:
- 8
- 16
times: 16
scenarios:
- name: netcreate-boot
enabled: true
image_name: cirros
flavor_name: m1.tiny
file: rally/rally-plugins/netcreate-boot/netcreate_boot.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
#shaker scenarios require atleast 2 compute nodes
shaker:
enabled: true
server: localhost
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 5
sleep_after: 5
venv: /home/stack/shaker-venv
dns_nameserver: 192.168.23.1
shaker_region: regionOne
scenarios:
- name: l2-4-1
enabled: true
density: 4
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l2-8-1
enabled: true
density: 8
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l2-4-2
enabled: true
density: 4
compute: 2
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l2-4-8
enabled: true
density: 8
compute: 2
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: l3-north-south-4-1
enabled: true
placement: single_room
density: 4
compute: 1
progression: null
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-north-south-8-1
enabled: false
placement: single_room
density: 8
compute: 1
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-north-south-4-2
enabled: true
placement: single_room
density: 4
compute: 2
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-north-south-8-2
enabled: true
placement: single_room
density: 8
compute: 2
progression: null
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_north_south.yaml
- name: l3-east-west-4-1
enabled: true
density: 4
compute: 1
placement: single_room
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
- name: l3-east-west-8-1
enabled: true
density: 8
compute: 1
placement: single_room
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
- name: l3-east-west-4-2
enabled: true
density: 4
compute: 2
placement: single_room
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml
- name: l3-east-west-8-2
enabled: true
density: 8
compute: 2
time: 60
placement: single_room
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l3_east_west.yaml

View File

@ -1,13 +1,17 @@
# Complete set of Glance Benchmarks
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -17,49 +21,65 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: true
grafana_ip: 1.1.1.1
grafana_port: 3000
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
plugins:
- glance-create-boot-delete: rally/rally-plugins/glance-create-boot-delete
benchmarks:
- name: glance
enabled: true
concurrency:
- 8
times: 10
scenarios:
- name: create-image-boot-instances
enabled: true
image_location: /home/stack/cirros.qcow2
instances: 2
flavor_name: m1.small
file: rally/glance/create-image-and-boot-instances-cc.yml
- name: create-and-delete-image
enabled: true
image_location: /home/stack/cirros.qcow2
flavor_name: m1.small
file: rally/glance/create-and-delete-image-cc.yml
- name: create-and-list-image
enabled: true
image_location: /home/stack/cirros.qcow2
file: rally/glance/create-and-list-image-cc.yml
- name: list-images
enabled: true
file: rally/glance/list-images-cc.yml
- glance: rally/rally-plugins/glance
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
- name: glance
enabled: true
type: rally
concurrency:
- 8
times: 10
scenarios:
- name: create-image-boot-instances
enabled: true
image_location: /home/stack/cirros.qcow2
instances: 2
flavor_name: m1.small
file: rally/glance/create-image-and-boot-instances-cc.yml
- name: create-and-delete-image
enabled: true
image_location: /home/stack/cirros.qcow2
flavor_name: m1.small
file: rally/glance/create-and-delete-image-cc.yml
- name: create-and-list-image
enabled: true
image_location: /home/stack/cirros.qcow2
file: rally/glance/create-and-list-image-cc.yml
- name: list-images
enabled: true
file: rally/glance/list-images-cc.yml

View File

@ -1,14 +1,18 @@
# Complete set of Keystone Stress tests run 3 times over multiple concurrencies with high repetitions(times)
# This testing will take days to complete. (You have been warned)
browbeat:
results: results/
rerun: 3
cloud_name: openstack
rerun: 3
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -18,197 +22,215 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
benchmarks:
- name: authenticate
enabled: true
concurrency:
- 64
- 128
- 192
- 256
- 320
- 384
- 448
- 512
times: 10000
scenarios:
- name: authentic-ceilometer
enabled: true
file: rally/authenticate/validate_ceilometer-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-cinder
enabled: true
file: rally/authenticate/validate_cinder-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-glance
enabled: true
file: rally/authenticate/validate_glance-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-heat
enabled: true
file: rally/authenticate/validate_heat-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
sla_max_avg_duration: 6
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-monasca
enabled: false
file: rally/authenticate/validate_monasca-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-neutron
enabled: true
file: rally/authenticate/validate_neutron-cc.yml
sla_max_avg_duration: 18
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-nova
enabled: true
file: rally/authenticate/validate_nova-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: keystonebasic
enabled: true
concurrency:
- 128
- 256
times: 5000
scenarios:
- name: create-user
enabled: true
file: rally/keystonebasic/create_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-delete-user
enabled: true
file: rally/keystonebasic/create_delete_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-user-set-enabled-and-delete
enabled: true
enabled_flag: true
file: rally/keystonebasic/create_user_set_enabled_and_delete-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-tenant
enabled: true
file: rally/keystonebasic/create_tenant-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: authenticate_user_and_validate_token
enabled: true
file: rally/keystonebasic/authenticate_user_and_validate_token-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-tenant-with-users
enabled: true
file: rally/keystonebasic/create_tenant_with_users-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-users
enabled: true
file: rally/keystonebasic/create_and_list_users-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: add-and-remove-user-role
enabled: true
file: rally/keystonebasic/add_and_remove_user_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-role
enabled: true
file: rally/keystonebasic/create_and_delete_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-add-and-list-user-roles
enabled: true
file: rally/keystonebasic/create_add_and_list_user_roles-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: get-entities
enabled: true
file: rally/keystonebasic/get_entities-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-service
enabled: true
file: rally/keystonebasic/create_and_delete_service-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-update-and-delete-tenant
enabled: true
file: rally/keystonebasic/create_update_and_delete_tenant-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-user-update-password
enabled: true
file: rally/keystonebasic/create_user_update_password-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-services
enabled: true
file: rally/keystonebasic/create_and_list_services-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-ec2credentials
enabled: true
file: rally/keystonebasic/create_and_list_ec2credentials-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-ec2credentials
enabled: true
file: rally/keystonebasic/create_and_delete_ec2credentials-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-get-role
enabled: true
file: rally/keystonebasic/create_and_get_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-add-list-roles
enabled: true
file: rally/keystonebasic/create_add_list_roles-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-update-user
enabled: true
file: rally/keystonebasic/create_and_update_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
plugins: []
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
- name: authenticate
enabled: true
type: rally
concurrency:
- 64
- 128
- 192
- 256
- 320
- 384
- 448
- 512
times: 10000
scenarios:
- name: authentic-ceilometer
enabled: true
file: rally/authenticate/validate_ceilometer-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-cinder
enabled: true
file: rally/authenticate/validate_cinder-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-glance
enabled: true
file: rally/authenticate/validate_glance-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-heat
enabled: true
file: rally/authenticate/validate_heat-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
sla_max_avg_duration: 6
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-monasca
enabled: false
file: rally/authenticate/validate_monasca-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-neutron
enabled: true
file: rally/authenticate/validate_neutron-cc.yml
sla_max_avg_duration: 18
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-nova
enabled: true
file: rally/authenticate/validate_nova-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: keystonebasic
enabled: true
type: rally
concurrency:
- 128
- 256
times: 5000
scenarios:
- name: create-user
enabled: true
file: rally/keystonebasic/create_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-delete-user
enabled: true
file: rally/keystonebasic/create_delete_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-user-set-enabled-and-delete
enabled: true
enabled_flag: true
file: rally/keystonebasic/create_user_set_enabled_and_delete-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-tenant
enabled: true
file: rally/keystonebasic/create_tenant-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: authenticate_user_and_validate_token
enabled: true
file: rally/keystonebasic/authenticate_user_and_validate_token-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-tenant-with-users
enabled: true
file: rally/keystonebasic/create_tenant_with_users-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-users
enabled: true
file: rally/keystonebasic/create_and_list_users-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: add-and-remove-user-role
enabled: true
file: rally/keystonebasic/add_and_remove_user_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-role
enabled: true
file: rally/keystonebasic/create_and_delete_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-add-and-list-user-roles
enabled: true
file: rally/keystonebasic/create_add_and_list_user_roles-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: get-entities
enabled: true
file: rally/keystonebasic/get_entities-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-service
enabled: true
file: rally/keystonebasic/create_and_delete_service-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-update-and-delete-tenant
enabled: true
file: rally/keystonebasic/create_update_and_delete_tenant-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-user-update-password
enabled: true
file: rally/keystonebasic/create_user_update_password-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-services
enabled: true
file: rally/keystonebasic/create_and_list_services-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-ec2credentials
enabled: true
file: rally/keystonebasic/create_and_list_ec2credentials-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-ec2credentials
enabled: true
file: rally/keystonebasic/create_and_delete_ec2credentials-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-get-role
enabled: true
file: rally/keystonebasic/create_and_get_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-add-list-roles
enabled: true
file: rally/keystonebasic/create_add_list_roles-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-update-user
enabled: true
file: rally/keystonebasic/create_and_update_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0

View File

@ -1,14 +1,18 @@
# Complete set of Keystone Stress tests run minimal number of times.
# Good sanity test to see if OSP will be able to handle the longer stress tests.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -18,190 +22,208 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
benchmarks:
- name: authenticate
enabled: true
concurrency:
- 32
times: 100
scenarios:
- name: authentic-ceilometer
enabled: true
file: rally/authenticate/validate_ceilometer-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-cinder
enabled: true
file: rally/authenticate/validate_cinder-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-glance
enabled: true
file: rally/authenticate/validate_glance-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-heat
enabled: true
file: rally/authenticate/validate_heat-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
sla_max_avg_duration: 6
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-monasca
enabled: false
file: rally/authenticate/validate_monasca-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-neutron
enabled: true
file: rally/authenticate/validate_neutron-cc.yml
sla_max_avg_duration: 18
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-nova
enabled: true
file: rally/authenticate/validate_nova-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: keystonebasic
enabled: true
concurrency:
- 25
times: 100
scenarios:
- name: create-user
enabled: true
file: rally/keystonebasic/create_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-delete-user
enabled: true
file: rally/keystonebasic/create_delete_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-user-set-enabled-and-delete
enabled: true
enabled_flag: true
file: rally/keystonebasic/create_user_set_enabled_and_delete-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-tenant
enabled: true
file: rally/keystonebasic/create_tenant-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: authenticate_user_and_validate_token
enabled: true
file: rally/keystonebasic/authenticate_user_and_validate_token-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-tenant-with-users
enabled: true
users_per_tenant: 2
file: rally/keystonebasic/create_tenant_with_users-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-users
enabled: true
file: rally/keystonebasic/create_and_list_users-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: add-and-remove-user-role
enabled: true
file: rally/keystonebasic/add_and_remove_user_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-role
enabled: true
file: rally/keystonebasic/create_and_delete_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-add-and-list-user-roles
enabled: true
file: rally/keystonebasic/create_add_and_list_user_roles-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: get-entities
enabled: true
file: rally/keystonebasic/get_entities-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-service
enabled: true
file: rally/keystonebasic/create_and_delete_service-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-update-and-delete-tenant
enabled: true
file: rally/keystonebasic/create_update_and_delete_tenant-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-user-update-password
enabled: true
file: rally/keystonebasic/create_user_update_password-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-services
enabled: true
file: rally/keystonebasic/create_and_list_services-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-ec2credentials
enabled: true
file: rally/keystonebasic/create_and_list_ec2credentials-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-ec2credentials
enabled: true
file: rally/keystonebasic/create_and_delete_ec2credentials-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-get-role
enabled: true
file: rally/keystonebasic/create_and_get_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-add-list-roles
enabled: true
file: rally/keystonebasic/create_add_list_roles-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-update-user
enabled: true
file: rally/keystonebasic/create_and_update_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
plugins: []
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
- name: authenticate
enabled: true
type: rally
concurrency:
- 32
times: 100
scenarios:
- name: authentic-ceilometer
enabled: true
file: rally/authenticate/validate_ceilometer-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-cinder
enabled: true
file: rally/authenticate/validate_cinder-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-glance
enabled: true
file: rally/authenticate/validate_glance-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-heat
enabled: true
file: rally/authenticate/validate_heat-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
sla_max_avg_duration: 6
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-monasca
enabled: false
file: rally/authenticate/validate_monasca-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-neutron
enabled: true
file: rally/authenticate/validate_neutron-cc.yml
sla_max_avg_duration: 18
sla_max_seconds: 30
sla_max_failure: 0
- name: authentic-nova
enabled: true
file: rally/authenticate/validate_nova-cc.yml
sla_max_avg_duration: 12
sla_max_seconds: 30
sla_max_failure: 0
- name: keystonebasic
enabled: true
type: rally
concurrency:
- 25
times: 100
scenarios:
- name: create-user
enabled: true
file: rally/keystonebasic/create_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-delete-user
enabled: true
file: rally/keystonebasic/create_delete_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-user-set-enabled-and-delete
enabled: true
enabled_flag: true
file: rally/keystonebasic/create_user_set_enabled_and_delete-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-tenant
enabled: true
file: rally/keystonebasic/create_tenant-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: authenticate_user_and_validate_token
enabled: true
file: rally/keystonebasic/authenticate_user_and_validate_token-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-tenant-with-users
enabled: true
users_per_tenant: 2
file: rally/keystonebasic/create_tenant_with_users-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-users
enabled: true
file: rally/keystonebasic/create_and_list_users-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-tenants
enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: add-and-remove-user-role
enabled: true
file: rally/keystonebasic/add_and_remove_user_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-role
enabled: true
file: rally/keystonebasic/create_and_delete_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-add-and-list-user-roles
enabled: true
file: rally/keystonebasic/create_add_and_list_user_roles-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: get-entities
enabled: true
file: rally/keystonebasic/get_entities-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-service
enabled: true
file: rally/keystonebasic/create_and_delete_service-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-update-and-delete-tenant
enabled: true
file: rally/keystonebasic/create_update_and_delete_tenant-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-user-update-password
enabled: true
file: rally/keystonebasic/create_user_update_password-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-services
enabled: true
file: rally/keystonebasic/create_and_list_services-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-list-ec2credentials
enabled: true
file: rally/keystonebasic/create_and_list_ec2credentials-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-delete-ec2credentials
enabled: true
file: rally/keystonebasic/create_and_delete_ec2credentials-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-get-role
enabled: true
file: rally/keystonebasic/create_and_get_role-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-add-list-roles
enabled: true
file: rally/keystonebasic/create_add_list_roles-cc.yml
sla_max_seconds: 30
sla_max_failure: 0
- name: create-and-update-user
enabled: true
file: rally/keystonebasic/create_and_update_user-cc.yml
sla_max_seconds: 30
sla_max_failure: 0

View File

@ -1,13 +1,17 @@
# Complete set of Workload Benchmarks
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -17,60 +21,76 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: true
grafana_ip: 1.1.1.1
grafana_port: 3000
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
plugins:
- workloads: rally/rally-plugins/workloads
benchmarks:
- name: workloads
enabled: true
concurrency:
- 1
times: 1
scenarios:
- name: browbeat-linpack
enabled: true
image_name: browbeat-linpack
flavor_name: m1.small
external_network:
net_id:
file: rally/rally-plugins/workloads/linpack.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
- name: browbeat-pbench-uperf
enabled: true
user: root
image_name: browbeat-uperf
flavor_name: m1.small
# hypervisor_server: "nova:overcloud-compute-1.localdomain"
# hypervisor_client: "nova:overcloud-compute-0.localdomain"
external_network:
net_id:
protocols: tcp,udp
instances: 1
num_pairs: 1
samples: 1
test_types: stream,rr
message_sizes: 64,1024,16384
test_name: browbeat-pbench-uperf
send_results: true
cloudname:
elastic_host:
elastic_port: 9200
file: rally/rally-plugins/workloads/pbench-uperf.yml
workloads:
- name: workloads
enabled: true
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: browbeat-linpack
enabled: true
image_name: browbeat-linpack
flavor_name: m1.small
external_network:
net_id:
file: rally/rally-plugins/workloads/linpack.yml
- name: browbeat-pbench-uperf
enabled: true
user: root
image_name: browbeat-uperf
flavor_name: m1.small
# hypervisor_server: "nova:overcloud-compute-1.localdomain"
# hypervisor_client: "nova:overcloud-compute-0.localdomain"
external_network:
net_id:
protocols: tcp,udp
instances: 1
num_pairs: 1
samples: 1
test_types: stream,rr
message_sizes: 64,1024,16384
test_name: browbeat-pbench-uperf
send_results: true
cloudname:
elastic_host:
elastic_port: 9200
file: rally/rally-plugins/workloads/pbench-uperf.yml

View File

@ -1,13 +1,17 @@
# Ceilometer Stress tests run minimal number of times.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -17,151 +21,175 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
plugins: []
benchmarks:
- name: CeilometerAlarms
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: create_alarm
enabled: true
file: rally/CeilometerAlarms/create_alarm-cc.yml
- name: create_alarm_and_get_history
enabled: true
file: rally/CeilometerAlarms/create_alarm_and_get_history-cc.yml
- name: create_and_delete_alarm
enabled: true
file: rally/CeilometerAlarms/create_and_delete_alarm-cc.yml
- name: create_and_list_alarm
enabled: true
file: rally/CeilometerAlarms/create_and_list_alarm-cc.yml
- name: create_and_update_alarm
enabled: true
file: rally/CeilometerAlarms/create_and_update_alarm-cc.yml
- name: list_alarms
enabled: true
file: rally/CeilometerAlarms/list_alarms-cc.yml
- name: CeilometerEvents
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: create_user_and_get_event
enabled: true
file: rally/CeilometerEvents/create_user_and_get_event-cc.yml
- name: create_user_and_list_event_types
enabled: true
file: rally/CeilometerEvents/create_user_and_list_event_types-cc.yml
- name: create_user_and_list_events
enabled: true
file: rally/CeilometerEvents/create_user_and_list_events-cc.yml
- name: CeilometerMeters
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: list_matched_meters
enabled: true
file: rally/CeilometerMeters/list_matched_meters-cc.yml
- name: list_meters
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: CeilometerQueries
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: create_and_query_alarm_history
enabled: true
file: rally/CeilometerQueries/create_and_query_alarm_history-cc.yml
- name: create_and_query_alarms
enabled: true
file: rally/CeilometerQueries/create_and_query_alarms-cc.yml
- name: create_and_query_samples
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: CeilometerResource
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: get_tenant_resources
enabled: true
file: rally/CeilometerResource/get_tenant_resources-cc.yml
- name: list_matched_resources
enabled: true
file: rally/CeilometerResource/list_matched_resources-cc.yml
- name: list_resources
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: CeilometerSamples
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: list_matched_samples
enabled: true
file: rally/CeilometerSamples/list_matched_samples-cc.yml
- name: list_samples
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: CeilometerStats
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: create_meter_and_get_stats
enabled: true
file: rally/CeilometerStats/create_meter_and_get_stats-cc.yml
- name: get_stats
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
- name: CeilometerTraits
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: create_user_and_list_trait_descriptions
enabled: true
file: rally/CeilometerTraits/create_user_and_list_trait_descriptions-cc.yml
- name: create_user_and_list_traits
enabled: true
file: rally/CeilometerTraits/create_user_and_list_traits-cc.yml
# Other Scenarios involving Ceilometer:
- name: Authenticate
enabled: false
concurrency:
- 2
times: 10
scenarios:
- name: validate_ceilometer
enabled: true
file: rally/authenticate/validate_ceilometer-cc.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
- name: CeilometerAlarms
enabled: true
type: rally
concurrency:
- 5
times: 10
scenarios:
- name: create_alarm
enabled: true
file: rally/CeilometerAlarms/create_alarm-cc.yml
- name: create_alarm_and_get_history
enabled: true
file: rally/CeilometerAlarms/create_alarm_and_get_history-cc.yml
- name: create_and_delete_alarm
enabled: true
file: rally/CeilometerAlarms/create_and_delete_alarm-cc.yml
- name: create_and_list_alarm
enabled: true
file: rally/CeilometerAlarms/create_and_list_alarm-cc.yml
- name: create_and_update_alarm
enabled: true
file: rally/CeilometerAlarms/create_and_update_alarm-cc.yml
- name: list_alarms
enabled: true
file: rally/CeilometerAlarms/list_alarms-cc.yml
- name: CeilometerEvents
enabled: true
type: rally
concurrency:
- 5
times: 10
scenarios:
- name: create_user_and_get_event
enabled: true
file: rally/CeilometerEvents/create_user_and_get_event-cc.yml
- name: create_user_and_list_event_types
enabled: true
file: rally/CeilometerEvents/create_user_and_list_event_types-cc.yml
- name: create_user_and_list_events
enabled: true
file: rally/CeilometerEvents/create_user_and_list_events-cc.yml
- name: CeilometerMeters
enabled: true
type: rally
concurrency:
- 5
times: 10
scenarios:
- name: list_matched_meters
enabled: true
file: rally/CeilometerMeters/list_matched_meters-cc.yml
- name: list_meters
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: CeilometerQueries
enabled: true
type: rally
concurrency:
- 5
times: 10
scenarios:
- name: create_and_query_alarm_history
enabled: true
file: rally/CeilometerQueries/create_and_query_alarm_history-cc.yml
- name: create_and_query_alarms
enabled: true
file: rally/CeilometerQueries/create_and_query_alarms-cc.yml
- name: create_and_query_samples
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: CeilometerResource
enabled: true
type: rally
concurrency:
- 5
times: 10
scenarios:
- name: get_tenant_resources
enabled: true
file: rally/CeilometerResource/get_tenant_resources-cc.yml
- name: list_matched_resources
enabled: true
file: rally/CeilometerResource/list_matched_resources-cc.yml
- name: list_resources
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: CeilometerSamples
enabled: true
type: rally
concurrency:
- 5
times: 10
scenarios:
- name: list_matched_samples
enabled: true
file: rally/CeilometerSamples/list_matched_samples-cc.yml
- name: list_samples
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: CeilometerStats
enabled: true
type: rally
concurrency:
- 5
times: 10
scenarios:
- name: create_meter_and_get_stats
enabled: true
file: rally/CeilometerStats/create_meter_and_get_stats-cc.yml
- name: get_stats
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
- name: CeilometerTraits
enabled: true
type: rally
concurrency:
- 5
times: 10
scenarios:
- name: create_user_and_list_trait_descriptions
enabled: true
file: rally/CeilometerTraits/create_user_and_list_trait_descriptions-cc.yml
- name: create_user_and_list_traits
enabled: true
file: rally/CeilometerTraits/create_user_and_list_traits-cc.yml
# Other Scenarios involving Ceilometer:
- name: Authenticate
enabled: false
type: rally
concurrency:
- 2
times: 10
scenarios:
- name: validate_ceilometer
enabled: true
file: rally/authenticate/validate_ceilometer-cc.yml

View File

@ -3,14 +3,18 @@
# each iteration it measures response time of several Ceilometer APIs.
# Currently it maxs at 200 instances
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 10
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -20,387 +24,77 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
plugins:
- browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova
benchmarks:
# Ceilometer Baseline
- name: Ceilometer01
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-01
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-01
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-01
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-01
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-01
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist01
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer02
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-02
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-02
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-02
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-02
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-02
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist02
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer03
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-03
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-03
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-03
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-03
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-03
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist03
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer04
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-04
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-04
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-04
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-04
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-04
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist04
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer05
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-05
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-05
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-05
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-05
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-05
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist05
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer06
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-06
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-06
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-06
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-06
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-06
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist06
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer07
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-07
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-07
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-07
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-07
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-07
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist07
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer08
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-08
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-08
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-08
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-08
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-08
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist08
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer09
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-09
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-09
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-09
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-09
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-09
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist09
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer10
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-10
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-10
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-10
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-10
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-10
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist10
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Final Measure Ceilometer Response Timings
- name: Ceilometer11
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-11
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-11
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-11
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-11
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-11
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
# Measure Ceilometer Response Timings
- name: Ceilometer
enabled: true
type: rally
concurrency:
- 8
times: 500
scenarios:
- name: list_meters
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-01
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist
enabled: true
type: rally
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml

View File

@ -1,14 +1,18 @@
# Complete set of Gnocchi Stress tests run minimal number of times.
# Good sanity test to see if OSP will be able to handle the longer stress tests.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -18,121 +22,137 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
rally:
enabled: true
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
sleep_before: 5
sleep_after: 5
plugins:
- gnocchi: rally/rally-plugins/gnocchi
benchmarks:
- name: Gnocchi
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: gnocchi-archive-policy-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-archive-policy-list.yml
- name: gnocchi-create-archive-policy
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-archive-policy.yml
- name: gnocchi-create-delete-archive-policy
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-archive-policy.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
- name: gnocchi-archive-policy-rule-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-archive-policy-rule-list.yml
- name: gnocchi-create-archive-policy-rule
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-archive-policy-rule.yml
- name: gnocchi-create-delete-archive-policy-rule
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-archive-policy-rule.yml
workloads:
- name: Gnocchi
enabled: true
type: rally
concurrency:
- 5
times: 10
scenarios:
- name: gnocchi-archive-policy-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-archive-policy-list.yml
- name: gnocchi-create-archive-policy
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-archive-policy.yml
- name: gnocchi-create-delete-archive-policy
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-archive-policy.yml
- name: gnocchi-capabilities-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-capabilities-list.yml
- name: gnocchi-archive-policy-rule-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-archive-policy-rule-list.yml
- name: gnocchi-create-archive-policy-rule
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-archive-policy-rule.yml
- name: gnocchi-create-delete-archive-policy-rule
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-archive-policy-rule.yml
# Aggregation has several potential scenarios due to parameterization
- name: gnocchi-metric-aggregation-single-page
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-aggregation.yml
- name: gnocchi-metric-aggregation-all
enabled: true
all_metrics: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-aggregation.yml
- name: gnocchi-metric-aggregation-agg-mean-refresh
enabled: true
all_metrics: true
aggregation: mean
refresh: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-aggregation.yml
# Get Measures has several potential scenarios due to parameterization
- name: gnocchi-metric-get-measures-single-page
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-metric-get-measures-all
enabled: true
all_metrics: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-metric-get-measures-agg-mean-refresh
enabled: true
all_metrics: true
aggregation: mean
refresh: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
# List/Create/Create&Delete Metrics
- name: gnocchi-metric-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-list.yml
- name: gnocchi-create-metric
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-metric.yml
- name: gnocchi-create-delete-metric
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-capabilities-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-capabilities-list.yml
- name: gnocchi-resource-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-resource-list.yml
- name: gnocchi-create-resource
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-resource.yml
- name: gnocchi-create-delete-resource
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
# Aggregation has several potential scenarios due to parameterization
- name: gnocchi-metric-aggregation-single-page
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-aggregation.yml
- name: gnocchi-metric-aggregation-all
enabled: true
all_metrics: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-aggregation.yml
- name: gnocchi-metric-aggregation-agg-mean-refresh
enabled: true
all_metrics: true
aggregation: mean
refresh: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-aggregation.yml
# Get Measures has several potential scenarios due to parameterization
- name: gnocchi-metric-get-measures-single-page
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-metric-get-measures-all
enabled: true
all_metrics: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-metric-get-measures-agg-mean-refresh
enabled: true
all_metrics: true
aggregation: mean
refresh: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
# List/Create/Create&Delete Metrics
- name: gnocchi-metric-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-metric-list.yml
- name: gnocchi-create-metric
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-metric.yml
- name: gnocchi-create-delete-metric
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-resource-type-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-resource-type-list.yml
- name: gnocchi-create-resource-type
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-resource-type.yml
- name: gnocchi-create-delete-resource-type
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource-type.yml
- name: gnocchi-resource-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-resource-list.yml
- name: gnocchi-create-resource
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-resource.yml
- name: gnocchi-create-delete-resource
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: gnocchi-status-get
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-status-get.yml
- name: gnocchi-status-get-detailed
enabled: true
detailed: True
file: rally/rally-plugins/gnocchi/gnocchi-status-get.yml
- name: gnocchi-resource-type-list
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-resource-type-list.yml
- name: gnocchi-create-resource-type
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-resource-type.yml
- name: gnocchi-create-delete-resource-type
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource-type.yml
- name: gnocchi-status-get
enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-status-get.yml
- name: gnocchi-status-get-detailed
enabled: true
detailed: True
file: rally/rally-plugins/gnocchi/gnocchi-status-get.yml

View File

@ -5,14 +5,18 @@
# each of the benchmarks. The settings for the benchmarks below
# are not tuned for best performance analysis either.
browbeat:
results : results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -22,23 +26,13 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
enabled: true
sleep_before: 0
sleep_after: 0
default:
@ -50,80 +44,119 @@ perfkit:
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
benchmarks:
- name: aerospike-centos-m1-small
enabled: false
benchmarks: aerospike
- name: block_storage_workload-database-centos-m1-small
enabled: false
benchmarks: block_storage_workload
openstack_volume_size: 20
workload_mode: database
- name: block_storage_workload-logging-centos-m1-small
enabled: false
benchmarks: block_storage_workload
openstack_volume_size: 20
workload_mode: logging
- name: block_storage_workload-streaming-centos-m1-small
enabled: false
benchmarks: block_storage_workload
openstack_volume_size: 20
workload_mode: streaming
- name: cluster_boot-centos-m1-small
enabled: false
benchmarks: cluster_boot
config_override: "cluster_boot.vm_groups.default.vm_count=4"
- name: copy_throughput-cp-centos-m1-small
enabled: false
benchmarks: copy_throughput
copy_benchmark_mode: cp
openstack_volume_size: 20
- name: copy_throughput-dd-centos-m1-small
enabled: false
benchmarks: copy_throughput
copy_benchmark_mode: dd
openstack_volume_size: 20
- name: copy_throughput-scp-centos-m1-small
enabled: false
benchmarks: copy_throughput
copy_benchmark_mode: scp
openstack_volume_size: 20
- name: fio-centos-m1-small
enabled: false
benchmarks: fio
openstack_volume_size: 20
- name: fio-centos-m1-small-10m
enabled: false
benchmarks: fio
openstack_volume_size: 20
fio_generate_scenarios: all
fio_runtime: 600
fio_working_set_size: 4
- name: iperf-centos-m1-small
enabled: false
benchmarks: iperf
- name: mesh_network-centos-m1-small
enabled: false
benchmarks: mesh_network
num_vms: 3
- name: netperf-centos-m1-small
enabled: false
benchmarks: netperf
- name: ping-centos-m1-small
enabled: false
benchmarks: ping
- name: redis_ycsb-centos-m1-small
enabled: false
benchmarks: redis_ycsb
ycsb_client_vms: 2
- name: scimark2-centos-m1-small
enabled: false
benchmarks: scimark2
- name: sysbench_oltp-centos-m1-small
enabled: false
benchmarks: sysbench_oltp
openstack_volume_size: 20
- name: unixbench-centos-m1-small
enabled: false
benchmarks: unixbench
openstack_volume_size: 20
rally:
sleep_before: 5
sleep_after: 5
plugins:
- glance: rally/rally-plugins/glance
- neutron: rally/rally-plugins/neutron
- netcreate-boot: rally/rally-plugins/netcreate-boot
- workloads: rally/rally-plugins/workloads
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
- name: aerospike-centos-m1-small
enabled: false
type: perfkit
benchmarks: aerospike
- name: block_storage_workload-database-centos-m1-small
enabled: false
type: perfkit
benchmarks: block_storage_workload
openstack_volume_size: 20
workload_mode: database
- name: block_storage_workload-logging-centos-m1-small
enabled: false
type: perfkit
benchmarks: block_storage_workload
openstack_volume_size: 20
workload_mode: logging
- name: block_storage_workload-streaming-centos-m1-small
enabled: false
type: perfkit
benchmarks: block_storage_workload
openstack_volume_size: 20
workload_mode: streaming
- name: cluster_boot-centos-m1-small
enabled: false
type: perfkit
benchmarks: cluster_boot
config_override: "cluster_boot.vm_groups.default.vm_count=4"
- name: copy_throughput-cp-centos-m1-small
enabled: false
type: perfkit
benchmarks: copy_throughput
copy_benchmark_mode: cp
openstack_volume_size: 20
- name: copy_throughput-dd-centos-m1-small
enabled: false
type: perfkit
benchmarks: copy_throughput
copy_benchmark_mode: dd
openstack_volume_size: 20
- name: copy_throughput-scp-centos-m1-small
enabled: false
type: perfkit
benchmarks: copy_throughput
copy_benchmark_mode: scp
openstack_volume_size: 20
- name: fio-centos-m1-small
enabled: false
type: perfkit
benchmarks: fio
openstack_volume_size: 20
- name: fio-centos-m1-small-10m
enabled: false
type: perfkit
benchmarks: fio
openstack_volume_size: 20
fio_generate_scenarios: all
fio_runtime: 600
fio_working_set_size: 4
- name: iperf-centos-m1-small
enabled: false
type: perfkit
benchmarks: iperf
- name: mesh_network-centos-m1-small
enabled: false
type: perfkit
benchmarks: mesh_network
num_vms: 3
- name: netperf-centos-m1-small
enabled: false
type: perfkit
benchmarks: netperf
- name: ping-centos-m1-small
enabled: false
type: perfkit
benchmarks: ping
- name: redis_ycsb-centos-m1-small
enabled: false
type: perfkit
benchmarks: redis_ycsb
ycsb_client_vms: 2
- name: scimark2-centos-m1-small
enabled: false
type: perfkit
benchmarks: scimark2
- name: sysbench_oltp-centos-m1-small
enabled: false
type: perfkit
benchmarks: sysbench_oltp
openstack_volume_size: 20
- name: unixbench-centos-m1-small
enabled: false
type: perfkit
benchmarks: unixbench
openstack_volume_size: 20

View File

@ -7,14 +7,18 @@
# how system resources and api responsiveness degrade over each new set of
# instances booted.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 10
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -24,23 +28,25 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
plugins:
@ -48,355 +54,55 @@ rally:
- nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron
- gnocchi: rally/rally-plugins/gnocchi
benchmarks:
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
# Baseline
- name: BrowbeatGnocchiBaseline
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-Baseline
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
workloads:
- name: BrowbeatNovaPersistWithNetwork01
enabled: true
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.0.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi01
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-01
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-01
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-01
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
# Baseline Gnocchi API
- name: BrowbeatGnocchiResponsiveness
enabled: true
type: rally
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-Baseline
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork02
enabled: true
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.4.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi02
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-02
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-02
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-02
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork03
enabled: true
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.8.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi03
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-03
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-03
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-03
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork04
enabled: true
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.12.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi04
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-04
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-04
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-04
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork05
enabled: true
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.16.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi05
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-05
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-05
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-05
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork06
enabled: true
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.20.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi06
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-06
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-06
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-06
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork07
enabled: true
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.24.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi07
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-07
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-07
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-07
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork08
enabled: true
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.28.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi08
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-08
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-08
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-08
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork09
enabled: true
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.32.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi09
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-09
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-09
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-09
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork10
enabled: true
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.36.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi10
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-10
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-10
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-10
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
# Boot 1000 instances
- name: BrowbeatNovaPersistWithNetwork
enabled: true
type: rally
concurrency:
- 40
times: 1000
scenarios:
- name: nova-boot-persist-with-network-1000
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.0.0/22
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml

View File

@ -7,14 +7,18 @@
# how system resources and api responsiveness degrade over each new set of
# instances booted.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 10
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -24,23 +28,25 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
plugins:
@ -48,355 +54,55 @@ rally:
- nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron
- gnocchi: rally/rally-plugins/gnocchi
benchmarks:
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
# Baseline
- name: BrowbeatGnocchiBaseline
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-Baseline
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
workloads:
- name: BrowbeatNovaPersistWithNetwork01
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.0.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi01
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-01
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-01
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-01
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
# Baseline Gnocchi API
- name: BrowbeatGnocchiResponsiveness
enabled: true
type: rally
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-Baseline
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork02
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.2.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi02
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-02
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-02
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-02
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork03
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.4.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi03
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-03
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-03
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-03
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork04
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.6.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi04
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-04
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-04
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-04
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork05
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.8.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi05
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-05
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-05
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-05
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork06
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.10.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi06
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-06
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-06
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-06
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork07
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.12.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi07
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-07
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-07
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-07
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork08
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.14.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi08
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-08
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-08
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-08
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork09
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.16.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi09
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-09
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-09
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-09
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork10
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.18.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi10
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-10
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-10
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-10
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
# Boot 100 instances
- name: BrowbeatNovaPersistWithNetwork
enabled: true
type: rally
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.0.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml

View File

@ -7,14 +7,18 @@
# how system resources and api responsiveness degrade over each new set of
# instances booted.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 2
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -24,23 +28,25 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
plugins:
@ -48,91 +54,55 @@ rally:
- nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron
- gnocchi: rally/rally-plugins/gnocchi
benchmarks:
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
# Baseline
- name: BrowbeatGnocchiBaseline
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-Baseline
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
workloads:
- name: BrowbeatNovaPersistWithNetwork01
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.0.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi01
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-01
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-01
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-01
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
# Baseline Gnocchi API
- name: BrowbeatGnocchiResponsiveness
enabled: true
type: rally
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-Baseline
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork02
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.2.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi02
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-02
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-02
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-02
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
# Boot 500 instances
- name: BrowbeatNovaPersistWithNetwork
enabled: true
type: rally
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.0.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml

View File

@ -7,14 +7,18 @@
# how system resources and api responsiveness degrade over each new set of
# instances booted.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 10
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -24,23 +28,25 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 5
sleep_after: 5
plugins:
@ -48,355 +54,55 @@ rally:
- nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron
- gnocchi: rally/rally-plugins/gnocchi
benchmarks:
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
# Baseline
- name: BrowbeatGnocchiBaseline
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-Baseline
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
workloads:
- name: BrowbeatNovaPersistWithNetwork01
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.0.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi01
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-01
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-01
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-01
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
# Baseline Gnocchi API
- name: BrowbeatGnocchiResponsiveness
enabled: true
type: rally
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-Baseline
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-Baseline
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork02
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.2.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi02
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-02
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-02
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-02
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork03
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.4.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi03
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-03
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-03
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-03
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork04
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.6.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi04
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-04
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-04
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-04
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork05
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.8.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi05
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-05
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-05
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-05
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork06
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.10.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi06
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-06
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-06
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-06
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork07
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.12.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi07
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-07
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-07
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-07
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork08
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.14.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi08
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-08
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-08
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-08
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork09
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.16.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi09
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-09
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-09
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-09
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: BrowbeatNovaPersistWithNetwork10
enabled: true
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.18.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: BrowbeatGnocchi10
enabled: true
concurrency:
- 8
times: 5000
scenarios:
- name: gnocchi-metric-get-measures-agg-mean-10
enabled: true
all_metrics: true
aggregation: mean
file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: gnocchi-create-delete-metric-10
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
- name: gnocchi-create-delete-resource-10
enabled: true
times: 1000
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
# Boot 500 instances
- name: BrowbeatNovaPersistWithNetwork
enabled: true
type: rally
concurrency:
- 20
times: 500
scenarios:
- name: nova-boot-persist-with-network-500
enabled: true
image_name: cirros
flavor_name: m1.xtiny
network_start_cidr: 10.1.0.0/23
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml

View File

@ -4,14 +4,18 @@
# booted. The instances have a nic and a fip.
# You must pre-populate (external_net_name and private_net_id)
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -21,114 +25,130 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 0
sleep_after: 0
plugins:
- browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron
benchmarks:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: BrowbeatNovaPersistWithNetworkFIP01
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-fip-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: BrowbeatNovaPersistWithNetworkFIP01
enabled: true
type: rally
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-fip-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
- name: nova-boot-persist-with-network-fip-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml

View File

@ -4,14 +4,18 @@
# booted. The instances have a nic, volume and fip.
# You must pre-populate (external_net_name and private_net_id)
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -21,124 +25,140 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 0
sleep_after: 0
plugins:
- browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron
benchmarks:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: BrowbeatNovaPersistWithNetworkVolumeFIP01
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-volume-fip-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: BrowbeatNovaPersistWithNetworkVolumeFIP01
enabled: true
type: rally
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-volume-fip-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
- name: nova-boot-persist-with-network-volume-fip-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
external_net_name:
private_net_id:
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml

View File

@ -3,14 +3,18 @@
# with a concurrency of 20 instances. A total of 1000 instances are
# booted. The instances have a nic and volume.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -20,114 +24,130 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 0
sleep_after: 0
plugins:
- browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron
benchmarks:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: BrowbeatNovaPersistWithNetworkVolume01
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-volume-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.0.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.2.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.4.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.6.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.8.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.10.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.12.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.14.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.16.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.18.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: BrowbeatNovaPersistWithNetworkVolume01
enabled: true
type: rally
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-volume-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.0.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.2.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.4.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.6.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.8.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.10.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.12.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.14.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.16.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
- name: nova-boot-persist-with-network-volume-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
volume_size: 1
cleanup_delay: 1800
network_start_cidr: 10.1.18.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml

View File

@ -5,14 +5,18 @@
# additional telemetry load. View how system resources degrade over each
# new set of instances booted.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -22,104 +26,120 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 0
sleep_after: 0
plugins:
- browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron
benchmarks:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: BrowbeatNovaPersistWithNetwork01
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.0.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.2.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.4.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.6.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.8.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.10.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.12.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.14.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.16.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.18.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: BrowbeatNovaPersistWithNetwork01
enabled: true
type: rally
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-persist-with-network-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.0.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.2.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.4.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.6.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.8.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.10.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.12.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.14.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.16.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
network_start_cidr: 10.1.18.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml

View File

@ -4,14 +4,18 @@
# booted. View how system resources degrade over each new set of
# instances booted.
browbeat:
results: results/
rerun: 1
cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
regather: false
host: 1.1.1.1
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
@ -21,93 +25,110 @@ elasticsearch:
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
ansible:
ssh_config: ansible/ssh-config
hosts: ansible/hosts
adjust:
keystone_token: ansible/browbeat/adjustment-keystone-token.yml
neutron_l3: ansible/browbeat/adjustment-l3.yml
nova_db: ansible/browbeat/adjustment-db.yml
workers: ansible/browbeat/adjustment-workers.yml
metadata: ansible/gather/site.yml
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
enabled: true
host: example.grafana.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
enabled: true
sleep_before: 0
sleep_after: 0
plugins:
- browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova
benchmarks:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: BrowbeatNovaPersist01
enabled: true
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: BrowbeatNovaPersist01
enabled: true
type: rally
concurrency:
- 20
times: 100
scenarios:
- name: nova-boot-100-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-100-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml

View File

@ -7,6 +7,7 @@ hacking<0.11,>=0.10.0
ansible-lint
pykwalify
coverage>=3.6
pytest==3.2.1
python-subunit>=0.0.18
sphinx>=1.3,!=1.6.1
oslosphinx>=2.5.0 # Apache-2.0

0
tests/__init__.py Normal file
View File

View File

@ -0,0 +1,89 @@
# Invalid due to invalid_flag key
browbeat:
cloud_name: browbeat-test
rerun: 1
rerun_type: complete
invalid_flag: invalid
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
host: browbeat.test.com
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
- name: environment-metadata
file: metadata/environment-metadata.json
- name: software-metadata
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
grafana:
enabled: true
host: browbeat.test.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
sleep_before: 0
sleep_after: 0
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
- name: browbeat-test-perfkit-ping
enabled: false
type: perfkit
benchmarks: ping
- name: browbeat-test-authenticate
enabled: false
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: browbeat-test-authentic-keystone
enabled: false
file: rally/authenticate/keystone-cc.yml
- name: browbeat-test-shaker-l2
enabled: false
type: shaker
density: 1
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: browbeat-test-introspect-batch
enabled: false
type: yoda
yoda_type: introspection
method: individual
times: 3
timeout: 900
batch_size: 2

View File

@ -0,0 +1,68 @@
# Invalid due to workload invalid
browbeat:
cloud_name: browbeat-test
rerun: 1
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
host: browbeat.test.com
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
- name: environment-metadata
file: metadata/environment-metadata.json
- name: software-metadata
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
grafana:
enabled: true
host: browbeat.test.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
sleep_before: 0
sleep_after: 0
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
# Missing name
- enabled: false
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: browbeat-test-authentic-keystone
enabled: false
file: rally/authenticate/keystone-cc.yml

View File

@ -0,0 +1,88 @@
# Valid Browbeat Config
browbeat:
cloud_name: browbeat-test
rerun: 1
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch:
enabled: false
host: browbeat.test.com
port: 9200
regather: false
metadata_files:
- name: hardware-metadata
file: metadata/hardware-metadata.json
- name: environment-metadata
file: metadata/environment-metadata.json
- name: software-metadata
file: metadata/software-metadata.json
- name: version
file: metadata/version.json
grafana:
enabled: true
host: browbeat.test.com
port: 3000
dashboards:
- openstack-general-system-performance
perfkit:
sleep_before: 0
sleep_after: 0
default:
image: centos7
machine_type: m1.small
os_type: rhel
openstack_image_username: centos
openstack_floating_ip_pool: browbeat_public
openstack_network: browbeat_private
timing_measurements: runtimes
ignore_package_requirements: true
rally:
sleep_before: 0
sleep_after: 0
shaker:
server: 1.1.1.1
port: 5555
flavor: m1.small
join_timeout: 600
sleep_before: 0
sleep_after: 0
shaker_region: regionOne
external_host: 2.2.2.2
yoda:
instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc"
workloads:
- name: browbeat-test-perfkit-ping
enabled: false
type: perfkit
benchmarks: ping
- name: browbeat-test-authenticate
enabled: false
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: browbeat-test-authentic-keystone
enabled: false
file: rally/authenticate/keystone-cc.yml
- name: browbeat-test-shaker-l2
enabled: false
type: shaker
density: 1
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- name: browbeat-test-introspect-batch
enabled: false
type: yoda
yoda_type: introspection
method: individual
times: 3
timeout: 900
batch_size: 2

87
tests/data/workloads.yml Normal file
View File

@ -0,0 +1,87 @@
# Valid and invalid workload schemas for testing per workload
perfkit:
- valid: true
data:
name: valid-test-perfkit-ping
enabled: false
type: perfkit
benchmarks: ping
- valid: false
data:
opps_name: invalid-test-perfkit-ping
enabled: false
type: perfkit
benchmarks: ping
rally:
- valid: true
data:
name: valid-test-authenticate-01
enabled: true
type: rally
concurrency:
- 1
times: 1
scenarios:
- name: valid-test-authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
- name: valid-test-authentic-neutron
enabled: false
file: rally/authenticate/validate_neutron-cc.yml
- valid: false
data:
name: invalid-test-authenticate-01
enabled: true
type: rally-incorrect
concurrency:
- 1
times: 1
scenarios:
- name: invalid-test-authentic-keystone
enabled: true
file: rally/authenticate/keystone-cc.yml
- name: invalid-test-authentic-neutron
enabled: false
file: rally/authenticate/validate_neutron-cc.yml
shaker:
- valid: true
data:
name: valid-test-shaker-l2
enabled: false
type: shaker
density: 1
compute: 1
progression: linear
time: 60
file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
- valid: false
data:
name: invalid-test-shaker-l2
enabled: false
type: shaker
density: 1
compute: 1
progression: linear
time: 60
opps_file: lib/python2.7/site-packages/shaker/scenarios/openstack/dense_l2.yaml
yoda:
- valid: true
data:
name: valid-test-yoda-introspection
enabled: false
type: yoda
yoda_type: introspection
method: individual
times: 3
timeout: 900
batch_size: 2
- valid: false
data:
name: invalid-test-yoda-introspection
enabled: false
type: yoda
fake_yoda_type: introspection
method: individual
times: 3
timeout: 900
batch_size: 2

54
tests/test_config.py Normal file
View File

@ -0,0 +1,54 @@
# 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.
import pytest
import yaml
from browbeat.config import load_browbeat_config
from browbeat.config import _validate_yaml
test_browbeat_configs = {
"tests/data/valid_browbeat.yml": True,
"tests/data/invalid_browbeat.yml": False,
"tests/data/invalid_browbeat_workload.yml": False
}
@pytest.mark.parametrize("config", test_browbeat_configs.keys())
def test_load_browbeat_config(config):
"""Tests valid and invalid Browbeat configuration."""
if test_browbeat_configs[config]:
# Valid configuration (No exception)
loaded_config = load_browbeat_config(config)
assert loaded_config["browbeat"]["cloud_name"] == "browbeat-test"
else:
# Invalid configuration, test for exception
with pytest.raises(Exception) as exception_data:
load_browbeat_config(config)
assert "SchemaError" in str(exception_data)
@pytest.mark.parametrize("schema", ["perfkit", "rally", "shaker", "yoda"])
def test__validate_yaml(schema):
"""Tests valid and invalid Browbeat workload configurations."""
with open("tests/data/workloads.yml", "r") as config_file:
config_data = yaml.safe_load(config_file)
for workload_config in config_data[schema]:
if workload_config["valid"]:
# Valid configuration (No exception)
_validate_yaml(schema, workload_config["data"])
else:
# Invalid configuration, test for exception
with pytest.raises(Exception) as exception_data:
_validate_yaml(schema, workload_config["data"])
assert "SchemaError" in str(exception_data)

10
tox.ini
View File

@ -17,10 +17,10 @@ commands =
bash -c "cd ansible; find . -type f -regex '.*.y[a]?ml' -print0 | xargs -t -n1 -0 \
ansible-lint \
-x ANSIBLE0013,ANSIBLE0012,ANSIBLE0006,ANSIBLE0007,ANSIBLE0010,ANSIBLE0016"
pykwalify -d browbeat-config.yaml -s browbeat/validate.yaml
pykwalify -d browbeat-complete.yaml -s browbeat/validate.yaml
pykwalify -d browbeat-config.yaml -s browbeat/schema/browbeat.yml
pykwalify -d browbeat-complete.yaml -s browbeat/schema/browbeat.yml
bash -c "set -e; for config in $(ls conf/); do \
pykwalify -d conf/$config -s browbeat/validate.yaml; done"
echo conf/$config; pykwalify -d conf/$config -s browbeat/schema/browbeat.yml; done"
[testenv:pep8]
commands = flake8 {posargs}
@ -28,6 +28,10 @@ commands = flake8 {posargs}
[testenv:venv]
commands = {posargs}
[testenv:py27]
basepython = python2.7
commands = pytest {posargs}
[testenv:cover]
commands = python setup.py test --coverage --testr-args='{posargs}'