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] *.py[cod]
# Distribution / packaging
.eggs
# Testing
.cache
.tox .tox
# Virtual Environments: # Virtual Environments:

View File

@ -1,7 +1,11 @@
browbeat: browbeat:
results: results/
rerun: 3
cloud_name: {{ browbeat_cloud_name }} 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: elasticsearch:
enabled: {{ elastic_enabled }} enabled: {{ elastic_enabled }}
host: {{ elastic_host }} host: {{ elastic_host }}
@ -16,116 +20,136 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: {{ grafana_enabled }} enabled: {{ grafana_enabled }}
grafana_ip: {{ grafana_host }} host: {{ grafana_host }}
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
venv: /home/stack/rally-venv
plugins: plugins:
- netcreate-boot: rally/rally-plugins/netcreate-boot - netcreate-boot: rally/rally-plugins/netcreate-boot
benchmarks: shaker:
- name: authenticate server: 1.1.1.1
enabled: true port: 5555
concurrency: flavor: m1.small
- 16 join_timeout: 600
- 24 sleep_before: 0
times: 2500 sleep_after: 0
scenarios: shaker_region: regionOne
- name: authentic-keystone external_host: 2.2.2.2
enabled: true yoda:
file: rally/authenticate/keystone-cc.yml instackenv: "/home/stack/instackenv.json"
- name: keystonebasic stackrc: "/home/stack/stackrc"
enabled: true
concurrency: workloads:
- 16 - name: authenticate
times: 1000 enabled: true
scenarios: type: rally
- name: create-and-list-tenants concurrency:
enabled: true - 16
file: rally/keystonebasic/create_and_list_tenants-cc.yml - 24
- name: neutron times: 2500
enabled: true scenarios:
concurrency: - name: authentic-keystone
- 8 enabled: true
- 12 file: rally/authenticate/keystone-cc.yml
times: 128 - name: keystonebasic
scenarios: enabled: true
- name: create-list-router type: rally
enabled: true concurrency:
file: rally/neutron/neutron-create-list-router-cc.yml - 16
- name: create-list-network times: 1000
enabled: true scenarios:
file: rally/neutron/neutron-create-list-network-cc.yml - name: create-and-list-tenants
- name: create-list-subnet enabled: true
enabled: true file: rally/keystonebasic/create_and_list_tenants-cc.yml
file: rally/neutron/neutron-create-list-subnet-cc.yml - name: neutron
- name: create-list-port enabled: true
enabled: true type: rally
file: rally/neutron/neutron-create-list-port-cc.yml concurrency:
- name: create-list-security-group - 8
enabled: true - 12
file: rally/neutron/neutron-create-list-security-group-cc.yml times: 128
- name: nova scenarios:
enabled: true - name: create-list-router
concurrency: enabled: true
- 8 file: rally/neutron/neutron-create-list-router-cc.yml
- 12 - name: create-list-network
times: 64 enabled: true
scenarios: file: rally/neutron/neutron-create-list-network-cc.yml
- name: boot-snapshot-delete - name: create-list-subnet
enabled: true enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml file: rally/neutron/neutron-create-list-subnet-cc.yml
image_name: cirros - name: create-list-port
flavor_name: m1.tiny enabled: true
- name: boot-list file: rally/neutron/neutron-create-list-port-cc.yml
enabled: true - name: create-list-security-group
file: rally/nova/nova-boot-list-cc.yml enabled: true
image_name: cirros file: rally/neutron/neutron-create-list-security-group-cc.yml
flavor_name: m1.tiny - name: nova
- name: glance enabled: true
enabled: true type: rally
concurrency: concurrency:
- 8 - 8
- 12 - 12
times: 64 times: 64
scenarios: scenarios:
- name: create-and-delete-image - name: boot-snapshot-delete
enabled: true enabled: true
image_location: http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz file: rally/nova/nova-boot-snapshot-cc.yml
flavor_name: m1.tiny image_name: cirros
file: rally/glance/create-and-delete-image-cc.yml flavor_name: m1.tiny
- name: plugins - name: boot-list
enabled: true enabled: true
concurrency: file: rally/nova/nova-boot-list-cc.yml
- 8 image_name: cirros
times: 64 flavor_name: m1.tiny
scenarios: - name: glance
- name: netcreate-1-boot enabled: true
enabled: true type: rally
enable_dhcp: true concurrency:
image_name: cirros - 8
flavor_name: m1.tiny - 12
num_networks: 1 times: 64
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml scenarios:
- name: netcreate-5-boot - name: create-and-delete-image
enabled: true enabled: true
enable_dhcp: true image_location: http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz
image_name: cirros flavor_name: m1.tiny
flavor_name: m1.tiny file: rally/glance/create-and-delete-image-cc.yml
num_networks: 5 - name: plugins
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml 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 # Tests to be completed for the install-and-check.sh script minimal and short workloads are performed
# to confirm functionality. # to confirm functionality.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: {{ browbeat_cloud_name }} 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: elasticsearch:
enabled: {{ elastic_enabled }} enabled: {{ elastic_enabled }}
host: {{ elastic_host }} host: {{ elastic_host }}
@ -18,86 +22,111 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: {{ grafana_enabled }} enabled: {{ grafana_enabled }}
grafana_ip: {{ grafana_host }} host: {{ grafana_host }}
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
venv: /home/stack/rally-venv
plugins: plugins:
- netcreate-boot: rally/rally-plugins/netcreate-boot - netcreate-boot: rally/rally-plugins/netcreate-boot
benchmarks: shaker:
- name: authenticate server: 1.1.1.1
enabled: true port: 5555
concurrency: flavor: m1.small
- 1 join_timeout: 600
times: 1 sleep_before: 0
scenarios: sleep_after: 0
- name: authentic-keystone shaker_region: regionOne
enabled: true external_host: 2.2.2.2
file: rally/authenticate/keystone-cc.yml yoda:
- name: cinder instackenv: "/home/stack/instackenv.json"
enabled: true stackrc: "/home/stack/stackrc"
concurrency:
- 1 workloads:
times: 1 - name: authenticate
scenarios: enabled: true
- name: create-attach-volume-centos type: rally
enabled: true concurrency:
file: rally/cinder/cinder-create-and-attach-volume-cc.yml - 1
- name: keystonebasic times: 1
enabled: false scenarios:
concurrency: - name: authentic-keystone
- 1 enabled: true
times: 1 file: rally/authenticate/keystone-cc.yml
scenarios:
- name: create-and-list-tenants - name: cinder
enabled: true enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml type: rally
- name: neutron concurrency:
enabled: true - 1
concurrency: times: 1
- 1 scenarios:
times: 1 - name: create-attach-volume-centos
scenarios: enabled: true
- name: create-list-network file: rally/cinder/cinder-create-and-attach-volume-cc.yml
enabled: true
file: rally/neutron/neutron-create-list-network-cc.yml - name: keystonebasic
- name: nova enabled: true
enabled: true type: rally
concurrency: concurrency:
- 1 - 1
times: 1 times: 1
scenarios: scenarios:
- name: boot-snapshot-delete - name: create-and-list-tenants
enabled: true enabled: true
file: rally/nova/nova-boot-snapshot-cc.yml file: rally/keystonebasic/create_and_list_tenants-cc.yml
image_name: cirros
flavor_name: m1.tiny - name: neutron
- name: plugins enabled: true
enabled: true type: rally
concurrency: concurrency:
- 1 - 1
times: 1 times: 1
scenarios: scenarios:
- name: netcreate-1-boot - name: create-list-network
enabled: true enabled: true
enable_dhcp: true file: rally/neutron/neutron-create-list-network-cc.yml
image_name: cirros
flavor_name: m1.tiny - name: nova
num_networks: 1 enabled: true
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml 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. # to confirm functionality.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: {{ browbeat_cloud_name }} 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: elasticsearch:
enabled: {{ elastic_enabled }} enabled: {{ elastic_enabled }}
host: {{ elastic_host }} host: {{ elastic_host }}
@ -18,53 +22,73 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: {{ grafana_enabled }} enabled: {{ grafana_enabled }}
grafana_ip: {{ grafana_host }} host: {{ grafana_host }}
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: yoda:
enabled: true
instackenv: "/home/stack/instackenv.json" instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc" stackrc: "/home/stack/stackrc"
benchmarks:
- name: introspect-{{ overcloud_size }}-batch-5 workloads:
type: introspection - name: introspect-{{ overcloud_size }}-batch-5
enabled: true enabled: true
method: individual type: yoda
times: 3 yoda_type: introspection
timeout: 1800 method: individual
batch_size: 5 times: 3
- name: introspect-{{ overcloud_size }}-bulk timeout: 1800
type: introspection batch_size: 5
enabled: true - name: introspect-{{ overcloud_size }}-bulk
method: bulk enabled: true
times: 3 type: yoda
timeout: 1800 yoda_type: introspection
- name: HA-Max-Compute-{{ overcloud_size }}-stack-update method: bulk
type: overcloud times: 3
ntp_server: pool.ntp.org timeout: 1800
timeout: 600 - name: HA-Max-Compute-{{ overcloud_size }}-stack-update
templates: enabled: true
- "" type: yoda
enabled: true yoda_type: overcloud
step: 1 ntp_server: pool.ntp.org
keep_stack: true timeout: 600
times: 1 templates:
cloud: - ""
- node: "compute" step: 1
start_scale: {{ overcloud_size | int - 3 }} keep_stack: true
end_scale: {{ overcloud_size | int - 3 }} times: 1
- node: "control" cloud:
start_scale: 3 - node: "compute"
end_scale: 3 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: browbeat:
results: results/
rerun: 1
cloud_name: {{ browbeat_cloud_name }} 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: elasticsearch:
enabled: {{ elastic_enabled }} enabled: {{ elastic_enabled }}
host: {{ elastic_host }} host: {{ elastic_host }}
@ -18,157 +20,187 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: {{ grafana_enabled }} enabled: {{ grafana_enabled }}
grafana_ip: {{ grafana_host }} host: {{ grafana_host }}
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: yoda:
enabled: true
instackenv: "/home/stack/instackenv.json" instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc" stackrc: "/home/stack/stackrc"
benchmarks:
- name: introspect-{{ overcloud_size }}-10-individual-batch-2 workloads:
type: introspection
enabled: true - name: introspect-{{ overcloud_size }}-10-individual-batch-2
method: individual type: yoda
times: 10 yoda_type: introspection
timeout: 900 enabled: true
batch_size: 2 method: individual
- name: introspect-{{ overcloud_size }}-10-individual-batch-4 times: 10
type: introspection timeout: 900
enabled: true batch_size: 2
method: individual - name: introspect-{{ overcloud_size }}-10-individual-batch-4
times: 10 type: yoda
timeout: 900 yoda_type: introspection
batch_size: 4 enabled: true
- name: introspect-{{ overcloud_size }}-10-individual-batch-8 method: individual
type: introspection times: 10
enabled: true timeout: 900
method: individual batch_size: 4
times: 10 - name: introspect-{{ overcloud_size }}-10-individual-batch-8
timeout: 900 type: yoda
batch_size: 8 yoda_type: introspection
- name: introspect-{{ overcloud_size }}-10-individual-batch-16 enabled: true
type: introspection method: individual
enabled: true times: 10
method: individual timeout: 900
times: 10 batch_size: 8
timeout: 900 - name: introspect-{{ overcloud_size }}-10-individual-batch-16
batch_size: 16 type: yoda
- name: introspect-{{ overcloud_size }}-10-individual-batch-32 yoda_type: introspection
type: introspection enabled: true
enabled: true method: individual
method: individual times: 10
times: 10 timeout: 900
timeout: 900 batch_size: 16
batch_size: 32 - name: introspect-{{ overcloud_size }}-10-individual-batch-32
- name: introspect-{{ overcloud_size }}-10-individual-batch-{{ overcloud_size }} type: yoda
type: introspection yoda_type: introspection
enabled: true enabled: true
method: individual method: individual
times: 10 times: 10
timeout: 900 timeout: 900
batch_size: {{ overcloud_size }} batch_size: 32
- name: introspect-{{ overcloud_size }}-50-bulk - name: introspect-{{ overcloud_size }}-10-individual-batch-{{ overcloud_size }}
type: introspection type: yoda
enabled: true yoda_type: introspection
method: bulk enabled: true
times: 50 method: individual
timeout: 900 times: 10
- name: No-HA-Max-Compute-{{ overcloud_size }}-full-deploy timeout: 900
type: overcloud batch_size: {{ overcloud_size }}
ntp_server: clock01.util.phx2.redhat.com - name: introspect-{{ overcloud_size }}-50-bulk
timeout: 600 type: yoda
templates: yoda_type: introspection
- "" enabled: true
enabled: true method: bulk
step: 5 times: 50
keep_stack: false timeout: 900
times: 2 - name: No-HA-Max-Compute-{{ overcloud_size }}-full-deploy
cloud: type: yoda
- node: "compute" yoda_type: overcloud
start_scale: 1 ntp_server: clock01.util.phx2.redhat.com
end_scale: {{ overcloud_size | int - 1 }} timeout: 600
- node: "control" templates:
start_scale: 1 - ""
end_scale: 1 enabled: true
- name: No-HA-Max-Compute-{{ overcloud_size }}-stack-update step: 5
type: overcloud keep_stack: false
ntp_server: clock01.util.phx2.redhat.com times: 2
timeout: 600 cloud:
templates: - node: "compute"
- "" start_scale: 1
instackenv: "/home/stack/instackenv.json" end_scale: {{ overcloud_size | int - 1 }}
enabled: true - node: "control"
step: 5 start_scale: 1
keep_stack: true end_scale: 1
times: 2 - name: No-HA-Max-Compute-{{ overcloud_size }}-stack-update
cloud: type: yoda
- node: "compute" yoda_type: overcloud
start_scale: 1 ntp_server: clock01.util.phx2.redhat.com
end_scale: {{ overcloud_size | int - 1 }} timeout: 600
- node: "control" templates:
start_scale: 1 - ""
end_scale: 1 instackenv: "/home/stack/instackenv.json"
- name: HA-Max-Compute-{{ overcloud_size }}-full-deploy enabled: true
type: overcloud step: 5
ntp_server: clock01.util.phx2.redhat.com keep_stack: true
timeout: 600 times: 2
templates: cloud:
- "" - node: "compute"
enabled: true start_scale: 1
step: 5 end_scale: {{ overcloud_size | int - 1 }}
keep_stack: false - node: "control"
times: 2 start_scale: 1
cloud: end_scale: 1
- node: "compute" - name: HA-Max-Compute-{{ overcloud_size }}-full-deploy
start_scale: 1 type: yoda
end_scale: {{ overcloud_size | int - 3 }} yoda_type: overcloud
- node: "control" ntp_server: clock01.util.phx2.redhat.com
start_scale: 3 timeout: 600
end_scale: 3 templates:
- name: HA-Max-Compute-{{ overcloud_size }}-stack-update - ""
type: overcloud enabled: true
ntp_server: clock01.util.phx2.redhat.com step: 5
timeout: 600 keep_stack: false
templates: times: 2
- "" cloud:
enabled: true - node: "compute"
step: 5 start_scale: 1
keep_stack: true end_scale: {{ overcloud_size | int - 3 }}
times: 2 - node: "control"
cloud: start_scale: 3
- node: "compute" end_scale: 3
start_scale: 1 - name: HA-Max-Compute-{{ overcloud_size }}-stack-update
end_scale: {{ overcloud_size | int - 3 }} type: yoda
- node: "control" yoda_type: overcloud
start_scale: 3 ntp_server: clock01.util.phx2.redhat.com
end_scale: 3 timeout: 600
- name: HA-Max-Compute-{{ overcloud_size }}-stack-update templates:
type: overcloud - ""
ntp_server: clock01.util.phx2.redhat.com enabled: true
timeout: 600 step: 5
templates: keep_stack: true
- "" times: 2
enabled: true cloud:
step: 5 - node: "compute"
keep_stack: true start_scale: 1
times: 2 end_scale: {{ overcloud_size | int - 3 }}
cloud: - node: "control"
- node: "compute" start_scale: 3
start_scale: 1 end_scale: 3
end_scale: {{ overcloud_size | int - 3 }} - name: HA-Max-Compute-{{ overcloud_size }}-stack-update
- node: "control" type: yoda
start_scale: 3 yoda_type: overcloud
end_scale: 3 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)) # Complete set of Stress Tests, this can take a long time (day(s))
browbeat: browbeat:
results: results/
rerun: 3
cloud_name: openstack cloud_name: openstack
rerun: 3
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: true
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: true
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -17,23 +21,13 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: true enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - openstack-general-system-performance
perfkit: perfkit:
enabled: true
sleep_before: 0 sleep_before: 0
sleep_after: 0 sleep_after: 0
default: default:
@ -45,13 +39,7 @@ perfkit:
openstack_network: browbeat_private openstack_network: browbeat_private
timing_measurements: runtimes timing_measurements: runtimes
ignore_package_requirements: true ignore_package_requirements: true
benchmarks:
- name: fio-centos-m1-small
enabled: false
benchmarks: fio
openstack_volume_size: 1
rally: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
plugins: plugins:
@ -59,207 +47,7 @@ rally:
- neutron: rally/rally-plugins/neutron - neutron: rally/rally-plugins/neutron
- netcreate-boot: rally/rally-plugins/netcreate-boot - netcreate-boot: rally/rally-plugins/netcreate-boot
- workloads: rally/rally-plugins/workloads - 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: shaker:
enabled: true
server: 1.1.1.1 server: 1.1.1.1
port: 5555 port: 5555
flavor: m1.small flavor: m1.small
@ -268,121 +56,349 @@ shaker:
sleep_after: 5 sleep_after: 5
shaker_region: regionOne shaker_region: regionOne
external_host: 2.2.2.2 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: yoda:
enabled: false
instackenv: "/home/stack/instackenv.json" instackenv: "/home/stack/instackenv.json"
stackrc: "/home/stack/stackrc" stackrc: "/home/stack/stackrc"
benchmarks:
- name: scale-deploy workloads:
type: overcloud # PerfKitBenchmarker
ntp_server: pool.ntp.org - name: fio-centos-m1-small
enabled: true enabled: false
templates: type: perfkit
- "" benchmarks: fio
timeout: 600 #deploy timeout in minutes openstack_volume_size: 1
step: 1
keep_stack: false # Rally
times: 3 - name: authenticate
cloud: enabled: true
- node: "compute" type: rally
start_scale: 1 concurrency:
end_scale: 1 - 64
- node: "control" - 128
start_scale: 1 - 192
end_scale: 3 - 256
- name: introspect-batch - 320
type: introspection - 384
enabled: true - 448
method: individual #other option is bulk - 512
times: 3 times: 10000
timeout: 900 #introspection timeout in seconds scenarios:
batch_size: 2 - 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. # Basic set of initial stress tests to test overcloud before running complete set of benchmarks.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack 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: elasticsearch:
enabled: true enabled: false
regather: true
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -17,23 +25,13 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: true enabled: false
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - openstack-general-system-performance
perfkit: perfkit:
enabled: false
sleep_before: 0 sleep_before: 0
sleep_after: 0 sleep_after: 0
default: default:
@ -45,45 +43,7 @@ perfkit:
openstack_network: browbeat_private openstack_network: browbeat_private
timing_measurements: runtimes timing_measurements: runtimes
ignore_package_requirements: true 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
plugins: plugins:
@ -91,178 +51,231 @@ rally:
- neutron: rally/rally-plugins/neutron - neutron: rally/rally-plugins/neutron
- netcreate-boot: rally/rally-plugins/netcreate-boot - netcreate-boot: rally/rally-plugins/netcreate-boot
- workloads: rally/rally-plugins/workloads - workloads: rally/rally-plugins/workloads
benchmarks: shaker:
- name: authenticate server: 1.1.1.1
enabled: true port: 5555
concurrency: flavor: m1.small
- 8 join_timeout: 600
times: 100 sleep_before: 0
scenarios: sleep_after: 0
- name: authentic-keystone shaker_region: regionOne
enabled: true external_host: 2.2.2.2
file: rally/authenticate/keystone-cc.yml yoda:
- name: authentic-neutron instackenv: "/home/stack/instackenv.json"
enabled: true stackrc: "/home/stack/stackrc"
file: rally/authenticate/validate_neutron-cc.yml
- name: authentic-nova
enabled: true
file: rally/authenticate/validate_nova-cc.yml
- name: cinder workloads:
enabled: true # PerfKitBenchmarker
concurrency: - name: fio-centos-m1-small
- 2 enabled: false
times: 10 type: perfkit
scenarios: benchmarks: fio
- name: create-attach-volume-cirros openstack_volume_size: 1
enabled: true # Shaker
image_name: cirros - name: shaker-l2
flavor_name: m1.tiny enabled: true
file: rally/cinder/cinder-create-and-attach-volume-cc.yml 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 - name: cinder
enabled: true enabled: true
concurrency: type: rally
- 8 concurrency:
times: 100 - 2
scenarios: times: 10
- name: create-and-list-tenants scenarios:
enabled: false - name: create-attach-volume-cirros
file: rally/keystonebasic/create_and_list_tenants-cc.yml enabled: true
- name: create-and-list-users image_name: cirros
enabled: true flavor_name: m1.tiny
file: rally/keystonebasic/create_and_list_users-cc.yml file: rally/cinder/cinder-create-and-attach-volume-cc.yml
- name: neutron - name: keystonebasic
enabled: true enabled: true
concurrency: type: rally
- 2 concurrency:
times: 10 - 8
scenarios: times: 100
- name: create-list-network scenarios:
enabled: true - name: create-and-list-tenants
file: rally/neutron/neutron-create-list-network-cc.yml enabled: false
- name: create-list-port file: rally/keystonebasic/create_and_list_tenants-cc.yml
enabled: true - name: create-and-list-users
file: rally/neutron/neutron-create-list-port-cc.yml enabled: true
- name: create-list-router file: rally/keystonebasic/create_and_list_users-cc.yml
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: nova - name: neutron
enabled: true enabled: true
concurrency: type: rally
- 2 concurrency:
times: 10 - 2
scenarios: times: 10
- name: boot-snapshot-delete-cirros scenarios:
enabled: true - name: create-list-network
file: rally/nova/nova-boot-snapshot-cc.yml enabled: true
image_name: cirros file: rally/neutron/neutron-create-list-network-cc.yml
flavor_name: m1.xtiny - name: create-list-port
- name: boot-list-cirros enabled: true
enabled: true file: rally/neutron/neutron-create-list-port-cc.yml
image_name: cirros - name: create-list-router
file: rally/nova/nova-boot-list-cc.yml enabled: true
flavor_name: m1.xtiny file: rally/neutron/neutron-create-list-router-cc.yml
- name: boot-show-cirros - name: create-list-security-group
enabled: true enabled: true
image_name: cirros file: rally/neutron/neutron-create-list-security-group-cc.yml
file: rally/nova/nova-boot-show-cc.yml - name: create-list-subnet
flavor_name: m1.xtiny enabled: true
- name: boot-bounce-delete-cirros file: rally/neutron/neutron-create-list-subnet-cc.yml
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 - name: nova
enabled: true enabled: true
concurrency: type: rally
- 2 concurrency:
times: 10 - 2
scenarios: times: 10
- name: create-and-delete-image scenarios:
enabled: true - name: boot-snapshot-delete-cirros
image_location: /home/stack/cirros.qcow2 enabled: true
container_format: bare file: rally/nova/nova-boot-snapshot-cc.yml
disk_format: qcow2 image_name: cirros
file: rally/glance/create-and-delete-image-cc.yml 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 - name: glance
enabled: true enabled: true
concurrency: type: rally
- 8 concurrency:
times: 10 - 2
scenarios: times: 10
- name: netcreate-boot scenarios:
enabled: true - name: create-and-delete-image
enable_dhcp: true enabled: true
image_name: cirros image_location: /home/stack/cirros.qcow2
flavor_name: m1.tiny container_format: bare
file: rally/rally-plugins/netcreate-boot/netcreate_nova_boot.yml disk_format: qcow2
- name: netcreate-boot-ping file: rally/glance/create-and-delete-image-cc.yml
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: plugin-workloads - name: simple-plugins
enabled: true enabled: true
concurrency: type: rally
- 1 concurrency:
times: 1 - 8
scenarios: times: 10
- name: linpack scenarios:
enabled: true - name: netcreate-boot
image_name: browbeat-linpack enabled: true
flavor_name: m1.small enable_dhcp: true
external_network: image_name: cirros
net_id: flavor_name: m1.tiny
file: rally/rally-plugins/workloads/linpack.yml 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 - name: plugin-workloads
enabled: true enabled: false
user: root type: rally
image_name: browbeat-uperf concurrency:
flavor_name: m1.small - 1
# hypervisor_server: "nova:overcloud-compute-1.localdomain" times: 1
# hypervisor_client: "nova:overcloud-compute-0.localdomain" scenarios:
external_network: - name: linpack
net_id: enabled: true
protocols: tcp,udp image_name: browbeat-linpack
instances: 1 flavor_name: m1.small
num_pairs: 1 external_network:
samples: 1 net_id:
test_types: stream,rr file: rally/rally-plugins/workloads/linpack.yml
message_sizes: 64,1024,16384
test_name: "browbeat-pbench-uperf" - name: browbeat-pbench-uperf
send_results: true enabled: true
cloudname: user: root
elastic_host: image_name: browbeat-uperf
elastic_port: 9200 flavor_name: m1.small
file: rally/rally-plugins/workloads/pbench-uperf.yml # 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.elastic
import browbeat.tools import browbeat.tools
import browbeat.workloadbase import browbeat.workloadbase
from browbeat.config import load_browbeat_config
from browbeat.path import results_path
_workload_opts = ['perfkit', 'rally', 'shaker', 'yoda'] _workload_opts = ['perfkit', 'rally', 'shaker', 'yoda']
_config_file = 'browbeat-config.yaml' _config_file = 'browbeat-config.yaml'
@ -28,26 +30,20 @@ debug_log_file = 'log/debug.log'
def main(): def main():
tools = browbeat.tools.Tools()
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Browbeat Performance and Scale testing for Openstack") description="Browbeat Performance and Scale testing for Openstack")
parser.add_argument( parser.add_argument(
'-s', '-s', '--setup', nargs='?', default=_config_file,
'--setup',
nargs='?',
default=_config_file,
help='Provide Browbeat YAML configuration file. Default is ./{}'.format(_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' parser.add_argument(
' list of workloads ({}) or \"all\"'.format(', '.join(_workload_opts))) 'workloads', nargs='*', help='Browbeat workload(s). Takes a space separated'
parser.add_argument('--debug', action='store_true', ' list of workloads ({}) or \"all\"'.format(', '.join(_workload_opts)))
help='Enable Debug messages') parser.add_argument('--debug', action='store_true', help='Enable Debug messages')
parser.add_argument('-p', '--postprocess', parser.add_argument(
dest="path", help="Path to process, ie results/20170101/") '-p', '--postprocess', dest="path", help="Path to process, ie results/20171130-191420/")
parser.add_argument('-c', '--compare', parser.add_argument(
help="Compare metadata", dest="compare", '-c', '--compare', help="Compare metadata", dest="compare", choices=['software-metadata'])
choices=['software-metadata']) parser.add_argument('-u', '--uuid', help="UUIDs to pass", dest="uuids", nargs=2)
parser.add_argument('-u', '--uuid',
help="UUIDs to pass", dest="uuids", nargs=2)
_cli_args = parser.parse_args() _cli_args = parser.parse_args()
_logger = logging.getLogger('browbeat') _logger = logging.getLogger('browbeat')
@ -70,8 +66,10 @@ def main():
_logger.debug("CLI Args: {}".format(_cli_args)) _logger.debug("CLI Args: {}".format(_cli_args))
# Load Browbeat yaml config file: # 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": if _cli_args.compare == "software-metadata":
es = browbeat.elastic.Elastic(_config, "BrowbeatCLI") es = browbeat.elastic.Elastic(_config, "BrowbeatCLI")
es.compare_metadata("_all", 'controller', _cli_args.uuids) es.compare_metadata("_all", 'controller', _cli_args.uuids)
@ -81,74 +79,93 @@ def main():
parser.print_help() parser.print_help()
exit(1) 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 == []: if _cli_args.workloads == []:
_cli_args.workloads.append('all') _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: if len(_cli_args.workloads) == 1 and 'all' in _cli_args.workloads:
_cli_args.workloads = _workload_opts _cli_args.workloads = _workload_opts
invalid_wkld = [ invalid_wkld = [wkld for wkld in _cli_args.workloads if wkld not in _workload_opts]
wkld for wkld in _cli_args.workloads if wkld not in _workload_opts]
if invalid_wkld: if invalid_wkld:
_logger.error("Invalid workload(s) specified: {}".format(invalid_wkld)) _logger.error("Invalid workload(s) specified: {}".format(invalid_wkld))
if 'all' in _cli_args.workloads: if 'all' in _cli_args.workloads:
_logger.error( _logger.error(
"If you meant 'all' use: './browbeat.py all' or './browbeat.py'") "If you meant 'all' use: './browbeat.py all' or './browbeat.py'")
exit(1) 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( result_dir_ts = datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%S")
','.join(_cli_args.workloads))) _logger.info("Browbeat test suite kicked off")
for wkld_provider in _cli_args.workloads: _logger.info("Browbeat UUID: {}".format(browbeat.elastic.browbeat_uuid))
if wkld_provider in _config: if _config['elasticsearch']['enabled']:
if _config[wkld_provider]['enabled']: _logger.info("Checking for Metadata")
tools._run_workload_provider(wkld_provider) metadata_exists = tools.check_metadata()
else: if not metadata_exists:
_logger.warning("{} is not enabled in {}".format(wkld_provider, _logger.error("Elasticsearch has been enabled but"
_cli_args.setup)) " metadata files do not exist")
else: _logger.info("Gathering Metadata")
_logger.error("{} is missing in {}".format( tools.gather_metadata()
wkld_provider, _cli_args.setup)) elif _config['elasticsearch']['regather']:
result_dir = _config['browbeat']['results'] _logger.info("Regathering Metadata")
browbeat.workloadbase.WorkloadBase.print_report(result_dir, time_stamp) tools.gather_metadata()
_logger.info("Saved browbeat result summary to {}".format(
os.path.join(result_dir, time_stamp + '.' + 'report')))
browbeat.workloadbase.WorkloadBase.print_summary()
browbeat_rc = 0 _logger.info("Running workload(s): {}".format(','.join(_cli_args.workloads)))
if browbeat.workloadbase.WorkloadBase.failure > 0: # Iteration rerun_type pushes rerun logic down to the workload itself. This allows the workload
browbeat_rc = 1 # to run multiple times before moving to the next workload
if browbeat.workloadbase.WorkloadBase.index_failures > 0: if _config["browbeat"]["rerun_type"] == "iteration":
browbeat_rc = 2 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: if not workload["type"] in _cli_args.workloads:
_logger.info("Browbeat finished with test failures, UUID: {}".format( _logger.info(
browbeat.elastic.browbeat_uuid)) "{} workload {} disabled via cli".format(workload["type"], workload["name"]))
sys.exit(browbeat_rc) continue
elif browbeat_rc == 2:
_logger.info("Browbeat finished with Elasticsearch indexing failures, UUID: {}" _logger.info("{} workload {} is enabled".format(workload["type"], workload["name"]))
.format(browbeat.elastic.browbeat_uuid)) tools.run_workload(workload, result_dir_ts, 0)
sys.exit(browbeat_rc) browbeat.workloadbase.WorkloadBase.print_summary()
else:
_logger.info("Browbeat finished successfully, UUID: {}".format( elif _config["browbeat"]["rerun_type"] == "complete":
browbeat.elastic.browbeat_uuid)) # Complete rerun_type, reruns after all workloads have been run.
sys.exit(0) 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__': if __name__ == '__main__':
sys.exit(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.logger = logging.getLogger('browbeat.grafana')
self.config = config self.config = config
self.cloud_name = self.config['browbeat']['cloud_name'] self.cloud_name = self.config['browbeat']['cloud_name']
self.grafana_ip = self.config['grafana']['grafana_ip'] self.host = self.config['grafana']['host']
self.grafana_port = self.config['grafana']['grafana_port'] self.port = self.config['grafana']['port']
self.grafana_url = {} self.grafana_url = {}
def grafana_urls(self): def grafana_urls(self):
@ -31,7 +31,7 @@ class Grafana(object):
from_ts = time['from_ts'] from_ts = time['from_ts']
to_ts = time['to_ts'] to_ts = time['to_ts']
url = 'http://{}:{}/dashboard/db/'.format( url = 'http://{}:{}/dashboard/db/'.format(
self.grafana_ip, self.grafana_port) self.host, self.port)
for dashboard in self.config['grafana']['dashboards']: for dashboard in self.config['grafana']['dashboards']:
self.grafana_url[dashboard] = '{}{}?from={}&to={}&var-Cloud={}'.format( self.grafana_url[dashboard] = '{}{}?from={}&to={}&var-Cloud={}'.format(
url, 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_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') log_path = os.path.join(browbeat_path, 'log')
results_path = os.path.join(browbeat_path, 'results') results_path = os.path.join(browbeat_path, 'results')

View File

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

View File

@ -23,15 +23,17 @@ import time
import elastic import elastic
import grafana import grafana
from path import get_workload_venv from path import get_workload_venv
from path import results_path
import workloadbase import workloadbase
import tools import tools
class Rally(workloadbase.WorkloadBase): class Rally(workloadbase.WorkloadBase):
def __init__(self, config, hosts=None): def __init__(self, config, result_dir_ts):
self.logger = logging.getLogger('browbeat.rally') self.logger = logging.getLogger('browbeat.rally')
self.config = config self.config = config
self.result_dir_ts = result_dir_ts
self.tools = tools.Tools(self.config) self.tools = tools.Tools(self.config)
self.grafana = grafana.Grafana(self.config) self.grafana = grafana.Grafana(self.config)
self.elastic = elastic.Elastic(self.config, self.__class__.__name__.lower()) 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): def run_scenario(self, task_file, scenario_args, result_dir, test_name, benchmark):
self.logger.debug("--------------------------------") self.logger.debug("--------------------------------")
self.logger.debug("task_file: {}".format(task_file)) 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("result_dir: {}".format(result_dir))
self.logger.debug("test_name: {}".format(test_name)) self.logger.debug("test_name: {}".format(test_name))
self.logger.debug("--------------------------------") self.logger.debug("--------------------------------")
@ -91,17 +93,6 @@ class Rally(workloadbase.WorkloadBase):
test_name) test_name)
return self.tools.run_cmd(cmd)['stdout'] 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): def gen_scenario_html(self, task_ids, test_name):
all_task_ids = ' '.join(task_ids) all_task_ids = ' '.join(task_ids)
cmd = "source {}; ".format(get_workload_venv('rally', True)) cmd = "source {}; ".format(get_workload_venv('rally', True))
@ -223,152 +214,113 @@ class Rally(workloadbase.WorkloadBase):
success = False success = False
return success return success
def run_workloads(self): def run_workload(self, workload, run_iteration):
"""Iterates through all rally scenarios in browbeat yaml config file""" """Runs a Browbeat Rally workload"""
results = collections.OrderedDict() results = []
self.logger.info("Starting Rally workloads") self.logger.info("Running Rally workload: {}".format(workload["name"]))
es_ts = datetime.datetime.utcnow() es_ts = datetime.datetime.utcnow()
dir_ts = es_ts.strftime("%Y%m%d-%H%M%S") def_concurrencies = workload["concurrency"]
self.logger.debug("Time Stamp (Prefix): {}".format(dir_ts)) def_times = workload["times"]
benchmarks = self.config.get('rally')['benchmarks'] self.logger.debug("Default Concurrencies: {}".format(def_concurrencies))
if (benchmarks is not None and len(benchmarks) > 0): self.logger.debug("Default Times: {}".format(def_times))
for benchmark in benchmarks: for scenario in workload["scenarios"]:
if benchmark['enabled']: if not scenario["enabled"]:
self.logger.info("Benchmark: {}".format(benchmark['name'])) self.logger.info("{} scenario is disabled".format(scenario['name']))
scenarios = benchmark['scenarios'] continue
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))
del scenario['enabled'] self.logger.info("Running Scenario: {}".format(scenario["name"]))
del scenario['file'] self.logger.debug("Scenario File: {}".format(scenario["file"]))
del scenario['name'] self.update_scenarios()
if len(scenario) > 0: self.update_total_scenarios()
self.logger.debug( scenario_name = scenario["name"]
"Overriding Scenario Args: {}".format(scenario)) 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( result_dir = self.tools.create_results_dir(
self.config['browbeat']['results'], dir_ts, results_path, self.result_dir_ts,
self.__class__.__name__.lower(), self.__class__.__name__.lower(),
benchmark['name'], scenario_name workload["name"], scenario_name
) )
self.logger.debug(
"Created result directory: {}".format(result_dir))
workload = self.__class__.__name__
self.workload_logger(result_dir, workload)
# Override concurrency/times self.logger.debug("Created result directory: {}".format(result_dir))
if 'concurrency' in scenario: self.workload_logger(self.__class__.__name__)
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
for concurrency in concurrencies: # Override concurrency/times
scenario['concurrency'] = concurrency if "concurrency" in scenario:
for run in range(self.config['browbeat']['rerun']): concurrencies = scenario["concurrency"]
if run not in results: del scenario["concurrency"]
results[run] = [] else:
self.update_tests() concurrencies = def_concurrencies
self.update_total_tests() if "times" not in scenario:
if concurrency_count_dict[concurrency] == 1: scenario["times"] = def_times
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
if not result_dir: concurrency_count_dict = collections.Counter()
self.logger.error( for concurrency in concurrencies:
"Failed to create result directory") scenario["concurrency"] = concurrency
exit(1)
from_time, to_time = self.run_scenario( # Correct iteration/rerun
scenario_file, scenario, result_dir, test_name, rerun_range = range(self.config["browbeat"]["rerun"])
benchmark['name']) if self.config["browbeat"]["rerun_type"] == "complete":
rerun_range = range(run_iteration, run_iteration + 1)
new_test_name = test_name.split('-') for run in rerun_range:
new_test_name = new_test_name[3:] self.update_tests()
new_test_name = "-".join(new_test_name) 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 if not result_dir:
# running) self.logger.error(
task_id = self.get_task_id(test_name) "Failed to create result directory")
if task_id: exit(1)
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", )
else: from_time, to_time = self.run_scenario(
self.logger.error( scenario_file, scenario, result_dir, test_name, workload["name"])
"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")
for data in glob.glob("./{}*".format(test_name)): new_test_name = test_name.split("-")
shutil.move(data, result_dir) new_test_name = new_test_name[3:]
new_test_name = "-".join(new_test_name)
self._get_details()
# 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: else:
self.logger.info( self.get_time_dict(to_time, from_time, workload["name"], new_test_name,
"Skipping {} scenario enabled: false".format(scenario['name'])) self.__class__.__name__, "pass", )
else:
self.logger.info( else:
"Skipping {} benchmarks enabled: false".format(benchmark['name'])) self.logger.error("Cannot find task_id")
self.logger.debug("Creating Combined Rally Reports") self.update_fail_tests()
for run in results: self.update_total_fail_tests()
combined_html_name = 'all-rally-run-{}'.format(run) self.get_time_dict(to_time, from_time, workload["name"], new_test_name,
self.gen_scenario_html(results[run], combined_html_name) self.__class__.__name__, "fail")
if os.path.isfile('{}.html'.format(combined_html_name)):
shutil.move('{}.html'.format(combined_html_name), for data in glob.glob("./{}*".format(test_name)):
'{}/{}'.format(self.config['browbeat']['results'], dir_ts)) shutil.move(data, result_dir)
else:
self.logger.error("Config file contains no rally benchmarks.") 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 import grafana
from path import get_overcloudrc from path import get_overcloudrc
from path import get_workload_venv from path import get_workload_venv
from path import results_path
import workloadbase import workloadbase
import tools import tools
class Shaker(workloadbase.WorkloadBase): class Shaker(workloadbase.WorkloadBase):
def __init__(self, config): def __init__(self, config, result_dir_ts):
self.logger = logging.getLogger('browbeat.shaker') self.logger = logging.getLogger('browbeat.shaker')
self.overcloudrc = get_overcloudrc() self.overcloudrc = get_overcloudrc()
self.config = config self.config = config
self.result_dir_ts = result_dir_ts
self.tools = tools.Tools(self.config) self.tools = tools.Tools(self.config)
self.grafana = grafana.Grafana(self.config) self.grafana = grafana.Grafana(self.config)
self.elastic = elastic.Elastic(self.config, self.__class__.__name__.lower()) self.elastic = elastic.Elastic(self.config, self.__class__.__name__.lower())
@ -42,24 +44,14 @@ class Shaker(workloadbase.WorkloadBase):
self.scenario_count = 0 self.scenario_count = 0
def shaker_checks(self): 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'] == "": if self.tools.run_cmd(cmd)['stdout'] == "":
self.logger.error("Shaker Image is not built, try again") self.logger.error("Shaker Image is not built, try again")
exit(1) exit(1)
else: else:
self.logger.info("Shaker image is built, continuing") 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): def accommodation_to_dict(self, accommodation):
accommodation_dict = {} accommodation_dict = {}
for item in accommodation: for item in accommodation:
@ -406,57 +398,46 @@ class Shaker(workloadbase.WorkloadBase):
else: else:
self.result_check(result_dir, test_name, scenario, to_time, from_time) 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") self.logger.info("Starting Shaker workloads")
time_stamp = datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%S") time_stamp = datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%S")
self.logger.debug("Time Stamp (Prefix): {}".format(time_stamp)) 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']): venv = get_workload_venv('shaker', False)
self.logger.info("Scenario: {}".format(scenario['name'])) self.shaker_checks()
self.logger.info("Run: {}".format(run))
fname = os.path.join(venv, scenario['file']) self.update_scenarios()
self.set_scenario(scenario, fname, default_time) self.update_total_scenarios()
self.logger.debug("Set Scenario File: {}".format( shaker_uuid = uuid.uuid4()
fname)) es_ts = datetime.datetime.utcnow()
result_dir = self.tools.create_results_dir( es_list = []
self.config['browbeat'][ # Default test time to 60
'results'], time_stamp, "shaker", test_time = workload.get("time", 60)
scenario['name'] + "-" + str(run)) for interval in range(0, test_time + 9):
workload = self.__class__.__name__ es_list.append(
self.workload_logger(result_dir, workload) datetime.datetime.utcnow() +
time_stamp1 = datetime.datetime.now().strftime( datetime.timedelta(0, interval))
"%Y%m%d-%H%M%S")
test_name = "{}-browbeat-{}-{}-{}".format( rerun_range = range(self.config["browbeat"]["rerun"])
time_stamp1, "shaker", scenario['name'], run) if self.config["browbeat"]["rerun_type"] == "complete":
self.run_scenario( # Compelete rerun type means force
scenario, result_dir, test_name, fname, shaker_uuid, rerun_range = range(run_iteration, run_iteration + 1)
es_ts, es_list, run)
self.get_stats() for run in rerun_range:
else: self.logger.info("Scenario: {}".format(workload['name']))
self.logger.info( self.logger.info("Run: {}".format(run))
"Skipping {} as scenario enabled: false".format( fname = os.path.join(venv, workload['file'])
scenario['name'])) self.set_scenario(workload, fname, 60)
self.final_stats(self.scenario_count) self.logger.debug("Set Scenario File: {}".format(fname))
else: result_dir = self.tools.create_results_dir(
self.logger.error( results_path, self.result_dir_ts, "shaker",
"Configuration file contains no shaker scenarios") 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 # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import copy
import logging import logging
import os import os
import re import re
import subprocess import subprocess
import yaml
from pykwalify import core as pykwalify_core
from pykwalify import errors as pykwalify_errors
import perfkit import perfkit
import rally import rally
@ -27,10 +24,9 @@ import yoda
class Tools(object): class Tools(object):
def __init__(self, config=None): def __init__(self, config):
self.logger = logging.getLogger('browbeat.tools') self.logger = logging.getLogger('browbeat.tools')
self.config = config self.config = config
return None
# Returns true if ping successful, false otherwise # Returns true if ping successful, false otherwise
def is_pingable(self, ip): def is_pingable(self, ip):
@ -88,47 +84,24 @@ class Tools(object):
return False return False
return the_directory return the_directory
def _load_config(self, path, validate=True): def run_workload(self, workload, result_dir_ts, run_iteration):
try: """Creates workload object and runs a specific workload.
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 validate_yaml(self): :param workload: Dictionary of workload attributes defined by browbeat config
self.logger.info( :param result_dir_ts: Result directory timestamp
"Validating the configuration file passed by the user") :param run_iteration: Iteration for a specific run
stream = open("browbeat/validate.yaml", 'r') """
schema = yaml.safe_load(stream) if workload["type"] == "perfkit":
check = pykwalify_core.Core( workloads = perfkit.PerfKit(self.config, result_dir_ts)
source_data=self.config, schema_data=schema) elif workload["type"] == "rally":
try: workloads = rally.Rally(self.config, result_dir_ts)
check.validate(raise_exception=True) elif workload["type"] == "shaker":
self.logger.info("Validation successful") workloads = shaker.Shaker(self.config, result_dir_ts)
except pykwalify_errors.SchemaError as e: elif workload["type"] == "yoda":
self.logger.error("Schema Validation failed") workloads = yoda.Yoda(self.config, result_dir_ts)
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)
else: else:
self.logger.error("Unknown workload provider: {}".format(provider)) self.logger.error("Unknown workload provider: {}".format(workload["type"]))
workloads.run_workloads() workloads.run_workload(copy.deepcopy(workload), run_iteration)
def check_metadata(self): def check_metadata(self):
meta = self.config['elasticsearch']['metadata_files'] meta = self.config['elasticsearch']['metadata_files']
@ -140,12 +113,11 @@ class Tools(object):
return True return True
def gather_metadata(self): def gather_metadata(self):
os.putenv("ANSIBLE_SSH_ARGS", os.putenv("ANSIBLE_SSH_ARGS", " -F {}".format(self.config['ansible']['ssh_config']))
" -F {}".format(self.config['ansible']['ssh_config']))
ansible_cmd = \ ansible_cmd = \
'ansible-playbook -i {} {}' \ '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) self.run_cmd(ansible_cmd)
if not self.check_metadata(): if not self.check_metadata():
self.logger.warning("Metadata could not be gathered") 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 os
import yaml import yaml
from browbeat.path import results_path
class WorkloadBase(object): class WorkloadBase(object):
__metaclass__ = abc.ABCMeta __metaclass__ = abc.ABCMeta
@ -26,8 +28,11 @@ class WorkloadBase(object):
index_failures = 0 index_failures = 0
browbeat = {} browbeat = {}
def __init__(self):
self.result_dir_ts = ""
@abc.abstractmethod @abc.abstractmethod
def run_workloads(self): def run_workload(self, workload, run_iteration):
pass pass
@abc.abstractmethod @abc.abstractmethod
@ -61,17 +66,15 @@ class WorkloadBase(object):
def update_index_failures(self): def update_index_failures(self):
WorkloadBase.index_failures += 1 WorkloadBase.index_failures += 1
def workload_logger(self, result_dir, workload): def workload_logger(self, workload):
base = result_dir.split('/') workload_result_dir = os.path.join(results_path, self.result_dir_ts)
if not os.path.isfile("{}/{}/browbeat-{}-run.log".format(base[0], base[1], workload)): if not os.path.isfile("{}/browbeat-{}-run.log".format(workload_result_dir, workload)):
file = logging.FileHandler( filehandler = logging.FileHandler(
"{}/{}/browbeat-{}-run.log".format(base[0], base[1], workload)) "{}/browbeat-{}-run.log".format(workload_result_dir, workload))
file.setLevel(logging.DEBUG) filehandler.setLevel(logging.DEBUG)
formatter = logging.Formatter( formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)5s - %(message)s')
'%(asctime)s - %(name)s - %(levelname)5s - %(message)s') filehandler.setFormatter(formatter)
file.setFormatter(formatter) self.logger.addHandler(filehandler)
self.logger.addHandler(file)
return None
def get_time_dict(self, to_time, from_time, benchmark, test_name, workload, status, def get_time_dict(self, to_time, from_time, benchmark, test_name, workload, status,
index_status="disabled"): index_status="disabled"):

View File

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

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 # Complete set of Glance Benchmarks
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -17,49 +21,65 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: true enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
plugins: plugins:
- glance-create-boot-delete: rally/rally-plugins/glance-create-boot-delete - glance: rally/rally-plugins/glance
benchmarks: shaker:
- name: glance server: 1.1.1.1
enabled: true port: 5555
concurrency: flavor: m1.small
- 8 join_timeout: 600
times: 10 sleep_before: 0
scenarios: sleep_after: 0
- name: create-image-boot-instances shaker_region: regionOne
enabled: true external_host: 2.2.2.2
image_location: /home/stack/cirros.qcow2 yoda:
instances: 2 instackenv: "/home/stack/instackenv.json"
flavor_name: m1.small stackrc: "/home/stack/stackrc"
file: rally/glance/create-image-and-boot-instances-cc.yml
- name: create-and-delete-image workloads:
enabled: true - name: glance
image_location: /home/stack/cirros.qcow2 enabled: true
flavor_name: m1.small type: rally
file: rally/glance/create-and-delete-image-cc.yml concurrency:
- name: create-and-list-image - 8
enabled: true times: 10
image_location: /home/stack/cirros.qcow2 scenarios:
file: rally/glance/create-and-list-image-cc.yml - name: create-image-boot-instances
- name: list-images enabled: true
enabled: true image_location: /home/stack/cirros.qcow2
file: rally/glance/list-images-cc.yml 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) # 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) # This testing will take days to complete. (You have been warned)
browbeat: browbeat:
results: results/
rerun: 3
cloud_name: openstack cloud_name: openstack
rerun: 3
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -18,197 +22,215 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
benchmarks: plugins: []
- name: authenticate shaker:
enabled: true server: 1.1.1.1
concurrency: port: 5555
- 64 flavor: m1.small
- 128 join_timeout: 600
- 192 sleep_before: 0
- 256 sleep_after: 0
- 320 shaker_region: regionOne
- 384 external_host: 2.2.2.2
- 448 yoda:
- 512 instackenv: "/home/stack/instackenv.json"
times: 10000 stackrc: "/home/stack/stackrc"
scenarios:
- name: authentic-ceilometer workloads:
enabled: true - name: authenticate
file: rally/authenticate/validate_ceilometer-cc.yml enabled: true
sla_max_avg_duration: 12 type: rally
sla_max_seconds: 30 concurrency:
sla_max_failure: 0 - 64
- name: authentic-cinder - 128
enabled: true - 192
file: rally/authenticate/validate_cinder-cc.yml - 256
sla_max_avg_duration: 12 - 320
sla_max_seconds: 30 - 384
sla_max_failure: 0 - 448
- name: authentic-glance - 512
enabled: true times: 10000
file: rally/authenticate/validate_glance-cc.yml scenarios:
sla_max_avg_duration: 12 - name: authentic-ceilometer
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/validate_ceilometer-cc.yml
- name: authentic-heat sla_max_avg_duration: 12
enabled: true sla_max_seconds: 30
file: rally/authenticate/validate_heat-cc.yml sla_max_failure: 0
sla_max_avg_duration: 12 - name: authentic-cinder
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/validate_cinder-cc.yml
- name: authentic-keystone sla_max_avg_duration: 12
enabled: true sla_max_seconds: 30
file: rally/authenticate/keystone-cc.yml sla_max_failure: 0
sla_max_avg_duration: 6 - name: authentic-glance
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/validate_glance-cc.yml
- name: authentic-monasca sla_max_avg_duration: 12
enabled: false sla_max_seconds: 30
file: rally/authenticate/validate_monasca-cc.yml sla_max_failure: 0
sla_max_avg_duration: 12 - name: authentic-heat
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/validate_heat-cc.yml
- name: authentic-neutron sla_max_avg_duration: 12
enabled: true sla_max_seconds: 30
file: rally/authenticate/validate_neutron-cc.yml sla_max_failure: 0
sla_max_avg_duration: 18 - name: authentic-keystone
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/keystone-cc.yml
- name: authentic-nova sla_max_avg_duration: 6
enabled: true sla_max_seconds: 30
file: rally/authenticate/validate_nova-cc.yml sla_max_failure: 0
sla_max_avg_duration: 12 - name: authentic-monasca
sla_max_seconds: 30 enabled: false
sla_max_failure: 0 file: rally/authenticate/validate_monasca-cc.yml
- name: keystonebasic sla_max_avg_duration: 12
enabled: true sla_max_seconds: 30
concurrency: sla_max_failure: 0
- 128 - name: authentic-neutron
- 256 enabled: true
times: 5000 file: rally/authenticate/validate_neutron-cc.yml
scenarios: sla_max_avg_duration: 18
- name: create-user sla_max_seconds: 30
enabled: true sla_max_failure: 0
file: rally/keystonebasic/create_user-cc.yml - name: authentic-nova
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/validate_nova-cc.yml
- name: create-delete-user sla_max_avg_duration: 12
enabled: true sla_max_seconds: 30
file: rally/keystonebasic/create_delete_user-cc.yml sla_max_failure: 0
sla_max_seconds: 30 - name: keystonebasic
sla_max_failure: 0 enabled: true
- name: create-user-set-enabled-and-delete type: rally
enabled: true concurrency:
enabled_flag: true - 128
file: rally/keystonebasic/create_user_set_enabled_and_delete-cc.yml - 256
sla_max_seconds: 30 times: 5000
sla_max_failure: 0 scenarios:
- name: create-tenant - name: create-user
enabled: true enabled: true
file: rally/keystonebasic/create_tenant-cc.yml file: rally/keystonebasic/create_user-cc.yml
sla_max_seconds: 30 sla_max_seconds: 30
sla_max_failure: 0 sla_max_failure: 0
- name: authenticate_user_and_validate_token - name: create-delete-user
enabled: true enabled: true
file: rally/keystonebasic/authenticate_user_and_validate_token-cc.yml file: rally/keystonebasic/create_delete_user-cc.yml
sla_max_seconds: 30 sla_max_seconds: 30
sla_max_failure: 0 sla_max_failure: 0
- name: create-tenant-with-users - name: create-user-set-enabled-and-delete
enabled: true enabled: true
file: rally/keystonebasic/create_tenant_with_users-cc.yml enabled_flag: true
sla_max_seconds: 30 file: rally/keystonebasic/create_user_set_enabled_and_delete-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-list-users sla_max_failure: 0
enabled: true - name: create-tenant
file: rally/keystonebasic/create_and_list_users-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_tenant-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-list-tenants sla_max_failure: 0
enabled: true - name: authenticate_user_and_validate_token
file: rally/keystonebasic/create_and_list_tenants-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/authenticate_user_and_validate_token-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: add-and-remove-user-role sla_max_failure: 0
enabled: true - name: create-tenant-with-users
file: rally/keystonebasic/add_and_remove_user_role-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_tenant_with_users-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-delete-role sla_max_failure: 0
enabled: true - name: create-and-list-users
file: rally/keystonebasic/create_and_delete_role-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_list_users-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-add-and-list-user-roles sla_max_failure: 0
enabled: true - name: create-and-list-tenants
file: rally/keystonebasic/create_add_and_list_user_roles-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_list_tenants-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: get-entities sla_max_failure: 0
enabled: true - name: add-and-remove-user-role
file: rally/keystonebasic/get_entities-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/add_and_remove_user_role-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-delete-service sla_max_failure: 0
enabled: true - name: create-and-delete-role
file: rally/keystonebasic/create_and_delete_service-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_delete_role-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-update-and-delete-tenant sla_max_failure: 0
enabled: true - name: create-add-and-list-user-roles
file: rally/keystonebasic/create_update_and_delete_tenant-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_add_and_list_user_roles-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-user-update-password sla_max_failure: 0
enabled: true - name: get-entities
file: rally/keystonebasic/create_user_update_password-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/get_entities-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-list-services sla_max_failure: 0
enabled: true - name: create-and-delete-service
file: rally/keystonebasic/create_and_list_services-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_delete_service-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-list-ec2credentials sla_max_failure: 0
enabled: true - name: create-update-and-delete-tenant
file: rally/keystonebasic/create_and_list_ec2credentials-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_update_and_delete_tenant-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-delete-ec2credentials sla_max_failure: 0
enabled: true - name: create-user-update-password
file: rally/keystonebasic/create_and_delete_ec2credentials-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_user_update_password-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-get-role sla_max_failure: 0
enabled: true - name: create-and-list-services
file: rally/keystonebasic/create_and_get_role-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_list_services-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-add-list-roles sla_max_failure: 0
enabled: true - name: create-and-list-ec2credentials
file: rally/keystonebasic/create_add_list_roles-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_list_ec2credentials-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-update-user sla_max_failure: 0
enabled: true - name: create-and-delete-ec2credentials
file: rally/keystonebasic/create_and_update_user-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_delete_ec2credentials-cc.yml
sla_max_failure: 0 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. # 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. # Good sanity test to see if OSP will be able to handle the longer stress tests.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -18,190 +22,208 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
benchmarks: plugins: []
- name: authenticate shaker:
enabled: true server: 1.1.1.1
concurrency: port: 5555
- 32 flavor: m1.small
times: 100 join_timeout: 600
scenarios: sleep_before: 0
- name: authentic-ceilometer sleep_after: 0
enabled: true shaker_region: regionOne
file: rally/authenticate/validate_ceilometer-cc.yml external_host: 2.2.2.2
sla_max_avg_duration: 12 yoda:
sla_max_seconds: 30 instackenv: "/home/stack/instackenv.json"
sla_max_failure: 0 stackrc: "/home/stack/stackrc"
- name: authentic-cinder
enabled: true workloads:
file: rally/authenticate/validate_cinder-cc.yml - name: authenticate
sla_max_avg_duration: 12 enabled: true
sla_max_seconds: 30 type: rally
sla_max_failure: 0 concurrency:
- name: authentic-glance - 32
enabled: true times: 100
file: rally/authenticate/validate_glance-cc.yml scenarios:
sla_max_avg_duration: 12 - name: authentic-ceilometer
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/validate_ceilometer-cc.yml
- name: authentic-heat sla_max_avg_duration: 12
enabled: true sla_max_seconds: 30
file: rally/authenticate/validate_heat-cc.yml sla_max_failure: 0
sla_max_avg_duration: 12 - name: authentic-cinder
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/validate_cinder-cc.yml
- name: authentic-keystone sla_max_avg_duration: 12
enabled: true sla_max_seconds: 30
file: rally/authenticate/keystone-cc.yml sla_max_failure: 0
sla_max_avg_duration: 6 - name: authentic-glance
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/validate_glance-cc.yml
- name: authentic-monasca sla_max_avg_duration: 12
enabled: false sla_max_seconds: 30
file: rally/authenticate/validate_monasca-cc.yml sla_max_failure: 0
sla_max_avg_duration: 12 - name: authentic-heat
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/validate_heat-cc.yml
- name: authentic-neutron sla_max_avg_duration: 12
enabled: true sla_max_seconds: 30
file: rally/authenticate/validate_neutron-cc.yml sla_max_failure: 0
sla_max_avg_duration: 18 - name: authentic-keystone
sla_max_seconds: 30 enabled: true
sla_max_failure: 0 file: rally/authenticate/keystone-cc.yml
- name: authentic-nova sla_max_avg_duration: 6
enabled: true sla_max_seconds: 30
file: rally/authenticate/validate_nova-cc.yml sla_max_failure: 0
sla_max_avg_duration: 12 - name: authentic-monasca
sla_max_seconds: 30 enabled: false
sla_max_failure: 0 file: rally/authenticate/validate_monasca-cc.yml
- name: keystonebasic sla_max_avg_duration: 12
enabled: true sla_max_seconds: 30
concurrency: sla_max_failure: 0
- 25 - name: authentic-neutron
times: 100 enabled: true
scenarios: file: rally/authenticate/validate_neutron-cc.yml
- name: create-user sla_max_avg_duration: 18
enabled: true sla_max_seconds: 30
file: rally/keystonebasic/create_user-cc.yml sla_max_failure: 0
sla_max_seconds: 30 - name: authentic-nova
sla_max_failure: 0 enabled: true
- name: create-delete-user file: rally/authenticate/validate_nova-cc.yml
enabled: true sla_max_avg_duration: 12
file: rally/keystonebasic/create_delete_user-cc.yml sla_max_seconds: 30
sla_max_seconds: 30 sla_max_failure: 0
sla_max_failure: 0 - name: keystonebasic
- name: create-user-set-enabled-and-delete enabled: true
enabled: true type: rally
enabled_flag: true concurrency:
file: rally/keystonebasic/create_user_set_enabled_and_delete-cc.yml - 25
sla_max_seconds: 30 times: 100
sla_max_failure: 0 scenarios:
- name: create-tenant - name: create-user
enabled: true enabled: true
file: rally/keystonebasic/create_tenant-cc.yml file: rally/keystonebasic/create_user-cc.yml
sla_max_seconds: 30 sla_max_seconds: 30
sla_max_failure: 0 sla_max_failure: 0
- name: authenticate_user_and_validate_token - name: create-delete-user
enabled: true enabled: true
file: rally/keystonebasic/authenticate_user_and_validate_token-cc.yml file: rally/keystonebasic/create_delete_user-cc.yml
sla_max_seconds: 30 sla_max_seconds: 30
sla_max_failure: 0 sla_max_failure: 0
- name: create-tenant-with-users - name: create-user-set-enabled-and-delete
enabled: true enabled: true
users_per_tenant: 2 enabled_flag: true
file: rally/keystonebasic/create_tenant_with_users-cc.yml file: rally/keystonebasic/create_user_set_enabled_and_delete-cc.yml
sla_max_seconds: 30 sla_max_seconds: 30
sla_max_failure: 0 sla_max_failure: 0
- name: create-and-list-users - name: create-tenant
enabled: true enabled: true
file: rally/keystonebasic/create_and_list_users-cc.yml file: rally/keystonebasic/create_tenant-cc.yml
sla_max_seconds: 30 sla_max_seconds: 30
sla_max_failure: 0 sla_max_failure: 0
- name: create-and-list-tenants - name: authenticate_user_and_validate_token
enabled: true enabled: true
file: rally/keystonebasic/create_and_list_tenants-cc.yml file: rally/keystonebasic/authenticate_user_and_validate_token-cc.yml
sla_max_seconds: 30 sla_max_seconds: 30
sla_max_failure: 0 sla_max_failure: 0
- name: add-and-remove-user-role - name: create-tenant-with-users
enabled: true enabled: true
file: rally/keystonebasic/add_and_remove_user_role-cc.yml users_per_tenant: 2
sla_max_seconds: 30 file: rally/keystonebasic/create_tenant_with_users-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-delete-role sla_max_failure: 0
enabled: true - name: create-and-list-users
file: rally/keystonebasic/create_and_delete_role-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_list_users-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-add-and-list-user-roles sla_max_failure: 0
enabled: true - name: create-and-list-tenants
file: rally/keystonebasic/create_add_and_list_user_roles-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_list_tenants-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: get-entities sla_max_failure: 0
enabled: true - name: add-and-remove-user-role
file: rally/keystonebasic/get_entities-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/add_and_remove_user_role-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-delete-service sla_max_failure: 0
enabled: true - name: create-and-delete-role
file: rally/keystonebasic/create_and_delete_service-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_delete_role-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-update-and-delete-tenant sla_max_failure: 0
enabled: true - name: create-add-and-list-user-roles
file: rally/keystonebasic/create_update_and_delete_tenant-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_add_and_list_user_roles-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-user-update-password sla_max_failure: 0
enabled: true - name: get-entities
file: rally/keystonebasic/create_user_update_password-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/get_entities-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-list-services sla_max_failure: 0
enabled: true - name: create-and-delete-service
file: rally/keystonebasic/create_and_list_services-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_delete_service-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-list-ec2credentials sla_max_failure: 0
enabled: true - name: create-update-and-delete-tenant
file: rally/keystonebasic/create_and_list_ec2credentials-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_update_and_delete_tenant-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-delete-ec2credentials sla_max_failure: 0
enabled: true - name: create-user-update-password
file: rally/keystonebasic/create_and_delete_ec2credentials-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_user_update_password-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-get-role sla_max_failure: 0
enabled: true - name: create-and-list-services
file: rally/keystonebasic/create_and_get_role-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_list_services-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-add-list-roles sla_max_failure: 0
enabled: true - name: create-and-list-ec2credentials
file: rally/keystonebasic/create_add_list_roles-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_list_ec2credentials-cc.yml
sla_max_failure: 0 sla_max_seconds: 30
- name: create-and-update-user sla_max_failure: 0
enabled: true - name: create-and-delete-ec2credentials
file: rally/keystonebasic/create_and_update_user-cc.yml enabled: true
sla_max_seconds: 30 file: rally/keystonebasic/create_and_delete_ec2credentials-cc.yml
sla_max_failure: 0 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 # Complete set of Workload Benchmarks
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -17,60 +21,76 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: true enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
plugins: plugins:
- workloads: rally/rally-plugins/workloads - workloads: rally/rally-plugins/workloads
benchmarks: shaker:
- name: workloads server: 1.1.1.1
enabled: true port: 5555
concurrency: flavor: m1.small
- 1 join_timeout: 600
times: 1 sleep_before: 0
scenarios: sleep_after: 0
- name: browbeat-linpack shaker_region: regionOne
enabled: true external_host: 2.2.2.2
image_name: browbeat-linpack yoda:
flavor_name: m1.small instackenv: "/home/stack/instackenv.json"
external_network: stackrc: "/home/stack/stackrc"
net_id:
file: rally/rally-plugins/workloads/linpack.yml
- name: browbeat-pbench-uperf workloads:
enabled: true - name: workloads
user: root enabled: true
image_name: browbeat-uperf type: rally
flavor_name: m1.small concurrency:
# hypervisor_server: "nova:overcloud-compute-1.localdomain" - 1
# hypervisor_client: "nova:overcloud-compute-0.localdomain" times: 1
external_network: scenarios:
net_id: - name: browbeat-linpack
protocols: tcp,udp enabled: true
instances: 1 image_name: browbeat-linpack
num_pairs: 1 flavor_name: m1.small
samples: 1 external_network:
test_types: stream,rr net_id:
message_sizes: 64,1024,16384 file: rally/rally-plugins/workloads/linpack.yml
test_name: browbeat-pbench-uperf
send_results: true - name: browbeat-pbench-uperf
cloudname: enabled: true
elastic_host: user: root
elastic_port: 9200 image_name: browbeat-uperf
file: rally/rally-plugins/workloads/pbench-uperf.yml 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. # Ceilometer Stress tests run minimal number of times.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -17,151 +21,175 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
plugins: [] plugins: []
benchmarks: shaker:
- name: CeilometerAlarms server: 1.1.1.1
enabled: true port: 5555
concurrency: flavor: m1.small
- 5 join_timeout: 600
times: 10 sleep_before: 0
scenarios: sleep_after: 0
- name: create_alarm shaker_region: regionOne
enabled: true external_host: 2.2.2.2
file: rally/CeilometerAlarms/create_alarm-cc.yml yoda:
- name: create_alarm_and_get_history instackenv: "/home/stack/instackenv.json"
enabled: true stackrc: "/home/stack/stackrc"
file: rally/CeilometerAlarms/create_alarm_and_get_history-cc.yml
- name: create_and_delete_alarm workloads:
enabled: true - name: CeilometerAlarms
file: rally/CeilometerAlarms/create_and_delete_alarm-cc.yml enabled: true
- name: create_and_list_alarm type: rally
enabled: true concurrency:
file: rally/CeilometerAlarms/create_and_list_alarm-cc.yml - 5
- name: create_and_update_alarm times: 10
enabled: true scenarios:
file: rally/CeilometerAlarms/create_and_update_alarm-cc.yml - name: create_alarm
- name: list_alarms enabled: true
enabled: true file: rally/CeilometerAlarms/create_alarm-cc.yml
file: rally/CeilometerAlarms/list_alarms-cc.yml - name: create_alarm_and_get_history
- name: CeilometerEvents enabled: true
enabled: true file: rally/CeilometerAlarms/create_alarm_and_get_history-cc.yml
concurrency: - name: create_and_delete_alarm
- 5 enabled: true
times: 10 file: rally/CeilometerAlarms/create_and_delete_alarm-cc.yml
scenarios: - name: create_and_list_alarm
- name: create_user_and_get_event enabled: true
enabled: true file: rally/CeilometerAlarms/create_and_list_alarm-cc.yml
file: rally/CeilometerEvents/create_user_and_get_event-cc.yml - name: create_and_update_alarm
- name: create_user_and_list_event_types enabled: true
enabled: true file: rally/CeilometerAlarms/create_and_update_alarm-cc.yml
file: rally/CeilometerEvents/create_user_and_list_event_types-cc.yml - name: list_alarms
- name: create_user_and_list_events enabled: true
enabled: true file: rally/CeilometerAlarms/list_alarms-cc.yml
file: rally/CeilometerEvents/create_user_and_list_events-cc.yml - name: CeilometerEvents
- name: CeilometerMeters enabled: true
enabled: true type: rally
concurrency: concurrency:
- 5 - 5
times: 10 times: 10
scenarios: scenarios:
- name: list_matched_meters - name: create_user_and_get_event
enabled: true enabled: true
file: rally/CeilometerMeters/list_matched_meters-cc.yml file: rally/CeilometerEvents/create_user_and_get_event-cc.yml
- name: list_meters - name: create_user_and_list_event_types
enabled: true enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml file: rally/CeilometerEvents/create_user_and_list_event_types-cc.yml
- name: CeilometerQueries - name: create_user_and_list_events
enabled: true enabled: true
concurrency: file: rally/CeilometerEvents/create_user_and_list_events-cc.yml
- 5 - name: CeilometerMeters
times: 10 enabled: true
scenarios: type: rally
- name: create_and_query_alarm_history concurrency:
enabled: true - 5
file: rally/CeilometerQueries/create_and_query_alarm_history-cc.yml times: 10
- name: create_and_query_alarms scenarios:
enabled: true - name: list_matched_meters
file: rally/CeilometerQueries/create_and_query_alarms-cc.yml enabled: true
- name: create_and_query_samples file: rally/CeilometerMeters/list_matched_meters-cc.yml
enabled: true - name: list_meters
file: rally/CeilometerQueries/create_and_query_samples-cc.yml enabled: true
- name: CeilometerResource file: rally/CeilometerMeters/list_meters-cc.yml
enabled: true - name: CeilometerQueries
concurrency: enabled: true
- 5 type: rally
times: 10 concurrency:
scenarios: - 5
- name: get_tenant_resources times: 10
enabled: true scenarios:
file: rally/CeilometerResource/get_tenant_resources-cc.yml - name: create_and_query_alarm_history
- name: list_matched_resources enabled: true
enabled: true file: rally/CeilometerQueries/create_and_query_alarm_history-cc.yml
file: rally/CeilometerResource/list_matched_resources-cc.yml - name: create_and_query_alarms
- name: list_resources enabled: true
enabled: true file: rally/CeilometerQueries/create_and_query_alarms-cc.yml
file: rally/CeilometerResource/list_resources-cc.yml - name: create_and_query_samples
- name: CeilometerSamples enabled: true
enabled: true file: rally/CeilometerQueries/create_and_query_samples-cc.yml
concurrency: - name: CeilometerResource
- 5 enabled: true
times: 10 type: rally
scenarios: concurrency:
- name: list_matched_samples - 5
enabled: true times: 10
file: rally/CeilometerSamples/list_matched_samples-cc.yml scenarios:
- name: list_samples - name: get_tenant_resources
enabled: true enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml file: rally/CeilometerResource/get_tenant_resources-cc.yml
- name: CeilometerStats - name: list_matched_resources
enabled: true enabled: true
concurrency: file: rally/CeilometerResource/list_matched_resources-cc.yml
- 5 - name: list_resources
times: 10 enabled: true
scenarios: file: rally/CeilometerResource/list_resources-cc.yml
- name: create_meter_and_get_stats - name: CeilometerSamples
enabled: true enabled: true
file: rally/CeilometerStats/create_meter_and_get_stats-cc.yml type: rally
- name: get_stats concurrency:
enabled: true - 5
file: rally/CeilometerStats/get_stats-cc.yml times: 10
- name: CeilometerTraits scenarios:
enabled: true - name: list_matched_samples
concurrency: enabled: true
- 5 file: rally/CeilometerSamples/list_matched_samples-cc.yml
times: 10 - name: list_samples
scenarios: enabled: true
- name: create_user_and_list_trait_descriptions file: rally/CeilometerSamples/list_samples-cc.yml
enabled: true - name: CeilometerStats
file: rally/CeilometerTraits/create_user_and_list_trait_descriptions-cc.yml enabled: true
- name: create_user_and_list_traits type: rally
enabled: true concurrency:
file: rally/CeilometerTraits/create_user_and_list_traits-cc.yml - 5
# Other Scenarios involving Ceilometer: times: 10
- name: Authenticate scenarios:
enabled: false - name: create_meter_and_get_stats
concurrency: enabled: true
- 2 file: rally/CeilometerStats/create_meter_and_get_stats-cc.yml
times: 10 - name: get_stats
scenarios: enabled: true
- name: validate_ceilometer file: rally/CeilometerStats/get_stats-cc.yml
enabled: true - name: CeilometerTraits
file: rally/authenticate/validate_ceilometer-cc.yml 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. # each iteration it measures response time of several Ceilometer APIs.
# Currently it maxs at 200 instances # Currently it maxs at 200 instances
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 10
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -20,387 +24,77 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
plugins: plugins:
- browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova - nova: rally/rally-plugins/nova
benchmarks: shaker:
# Ceilometer Baseline server: 1.1.1.1
- name: Ceilometer01 port: 5555
enabled: true flavor: m1.small
concurrency: join_timeout: 600
- 8 sleep_before: 0
times: 500 sleep_after: 0
scenarios: shaker_region: regionOne
- name: list_meters-01 external_host: 2.2.2.2
enabled: true yoda:
file: rally/CeilometerMeters/list_meters-cc.yml instackenv: "/home/stack/instackenv.json"
- name: create_and_query_samples-01 stackrc: "/home/stack/stackrc"
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml workloads:
- name: list_resources-01 # Measure Ceilometer Response Timings
enabled: true - name: Ceilometer
file: rally/CeilometerResource/list_resources-cc.yml enabled: true
- name: list_samples-01 type: rally
enabled: true concurrency:
file: rally/CeilometerSamples/list_samples-cc.yml - 8
- name: get_stats-01 times: 500
enabled: true scenarios:
file: rally/CeilometerStats/get_stats-cc.yml - name: list_meters
# Boot 20 instances enabled: true
- name: BrowbeatNovaPersist01 file: rally/CeilometerMeters/list_meters-cc.yml
enabled: true - name: create_and_query_samples-01
concurrency: enabled: true
- 5 file: rally/CeilometerQueries/create_and_query_samples-cc.yml
times: 20 - name: list_resources
scenarios: enabled: true
- name: nova-boot-20-01 file: rally/CeilometerResource/list_resources-cc.yml
enabled: true - name: list_samples
image_name: cirros enabled: true
flavor_name: m1.xtiny file: rally/CeilometerSamples/list_samples-cc.yml
file: rally/rally-plugins/nova/nova_boot_persist.yml - name: get_stats
# Measure Ceilometer Response Timings enabled: true
- name: Ceilometer02 file: rally/CeilometerStats/get_stats-cc.yml
enabled: true # Boot 20 instances
concurrency: - name: BrowbeatNovaPersist
- 8 enabled: true
times: 500 type: rally
scenarios: concurrency:
- name: list_meters-02 - 5
enabled: true times: 20
file: rally/CeilometerMeters/list_meters-cc.yml scenarios:
- name: create_and_query_samples-02 - name: nova-boot-20
enabled: true enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml image_name: cirros
- name: list_resources-02 flavor_name: m1.xtiny
enabled: true file: rally/rally-plugins/nova/nova_boot_persist.yml
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

View File

@ -1,14 +1,18 @@
# Complete set of Gnocchi Stress tests run minimal number of times. # 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. # Good sanity test to see if OSP will be able to handle the longer stress tests.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -18,121 +22,137 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - openstack-general-system-performance
rally: perfkit:
enabled: true
sleep_before: 0 sleep_before: 0
sleep_after: 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: plugins:
- gnocchi: rally/rally-plugins/gnocchi - gnocchi: rally/rally-plugins/gnocchi
benchmarks: shaker:
- name: Gnocchi server: 1.1.1.1
enabled: true port: 5555
concurrency: flavor: m1.small
- 5 join_timeout: 600
times: 10 sleep_before: 0
scenarios: sleep_after: 0
- name: gnocchi-archive-policy-list shaker_region: regionOne
enabled: true external_host: 2.2.2.2
file: rally/rally-plugins/gnocchi/gnocchi-archive-policy-list.yml yoda:
- name: gnocchi-create-archive-policy instackenv: "/home/stack/instackenv.json"
enabled: true stackrc: "/home/stack/stackrc"
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-archive-policy-rule-list workloads:
enabled: true - name: Gnocchi
file: rally/rally-plugins/gnocchi/gnocchi-archive-policy-rule-list.yml enabled: true
- name: gnocchi-create-archive-policy-rule type: rally
enabled: true concurrency:
file: rally/rally-plugins/gnocchi/gnocchi-create-archive-policy-rule.yml - 5
- name: gnocchi-create-delete-archive-policy-rule times: 10
enabled: true scenarios:
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-archive-policy-rule.yml - 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 - name: gnocchi-archive-policy-rule-list
enabled: true enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-capabilities-list.yml 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-capabilities-list
- name: gnocchi-metric-aggregation-single-page enabled: true
enabled: true file: rally/rally-plugins/gnocchi/gnocchi-capabilities-list.yml
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-list # Aggregation has several potential scenarios due to parameterization
enabled: true - name: gnocchi-metric-aggregation-single-page
file: rally/rally-plugins/gnocchi/gnocchi-resource-list.yml enabled: true
- name: gnocchi-create-resource file: rally/rally-plugins/gnocchi/gnocchi-metric-aggregation.yml
enabled: true - name: gnocchi-metric-aggregation-all
file: rally/rally-plugins/gnocchi/gnocchi-create-resource.yml enabled: true
- name: gnocchi-create-delete-resource all_metrics: true
enabled: true file: rally/rally-plugins/gnocchi/gnocchi-metric-aggregation.yml
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.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 - name: gnocchi-resource-list
enabled: true enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-resource-type-list.yml file: rally/rally-plugins/gnocchi/gnocchi-resource-list.yml
- name: gnocchi-create-resource-type - name: gnocchi-create-resource
enabled: true enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-resource-type.yml file: rally/rally-plugins/gnocchi/gnocchi-create-resource.yml
- name: gnocchi-create-delete-resource-type - name: gnocchi-create-delete-resource
enabled: true enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource-type.yml file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
- name: gnocchi-status-get - name: gnocchi-resource-type-list
enabled: true enabled: true
file: rally/rally-plugins/gnocchi/gnocchi-status-get.yml file: rally/rally-plugins/gnocchi/gnocchi-resource-type-list.yml
- name: gnocchi-status-get-detailed - name: gnocchi-create-resource-type
enabled: true enabled: true
detailed: True file: rally/rally-plugins/gnocchi/gnocchi-create-resource-type.yml
file: rally/rally-plugins/gnocchi/gnocchi-status-get.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 # each of the benchmarks. The settings for the benchmarks below
# are not tuned for best performance analysis either. # are not tuned for best performance analysis either.
browbeat: browbeat:
results : results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -22,23 +26,13 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - openstack-general-system-performance
perfkit: perfkit:
enabled: true
sleep_before: 0 sleep_before: 0
sleep_after: 0 sleep_after: 0
default: default:
@ -50,80 +44,119 @@ perfkit:
openstack_network: browbeat_private openstack_network: browbeat_private
timing_measurements: runtimes timing_measurements: runtimes
ignore_package_requirements: true ignore_package_requirements: true
benchmarks: rally:
- name: aerospike-centos-m1-small sleep_before: 5
enabled: false sleep_after: 5
benchmarks: aerospike plugins:
- name: block_storage_workload-database-centos-m1-small - glance: rally/rally-plugins/glance
enabled: false - neutron: rally/rally-plugins/neutron
benchmarks: block_storage_workload - netcreate-boot: rally/rally-plugins/netcreate-boot
openstack_volume_size: 20 - workloads: rally/rally-plugins/workloads
workload_mode: database shaker:
- name: block_storage_workload-logging-centos-m1-small server: 1.1.1.1
enabled: false port: 5555
benchmarks: block_storage_workload flavor: m1.small
openstack_volume_size: 20 join_timeout: 600
workload_mode: logging sleep_before: 0
- name: block_storage_workload-streaming-centos-m1-small sleep_after: 0
enabled: false shaker_region: regionOne
benchmarks: block_storage_workload external_host: 2.2.2.2
openstack_volume_size: 20 yoda:
workload_mode: streaming instackenv: "/home/stack/instackenv.json"
- name: cluster_boot-centos-m1-small stackrc: "/home/stack/stackrc"
enabled: false
benchmarks: cluster_boot workloads:
config_override: "cluster_boot.vm_groups.default.vm_count=4" - name: aerospike-centos-m1-small
- name: copy_throughput-cp-centos-m1-small enabled: false
enabled: false type: perfkit
benchmarks: copy_throughput benchmarks: aerospike
copy_benchmark_mode: cp - name: block_storage_workload-database-centos-m1-small
openstack_volume_size: 20 enabled: false
- name: copy_throughput-dd-centos-m1-small type: perfkit
enabled: false benchmarks: block_storage_workload
benchmarks: copy_throughput openstack_volume_size: 20
copy_benchmark_mode: dd workload_mode: database
openstack_volume_size: 20 - name: block_storage_workload-logging-centos-m1-small
- name: copy_throughput-scp-centos-m1-small enabled: false
enabled: false type: perfkit
benchmarks: copy_throughput benchmarks: block_storage_workload
copy_benchmark_mode: scp openstack_volume_size: 20
openstack_volume_size: 20 workload_mode: logging
- name: fio-centos-m1-small - name: block_storage_workload-streaming-centos-m1-small
enabled: false enabled: false
benchmarks: fio type: perfkit
openstack_volume_size: 20 benchmarks: block_storage_workload
- name: fio-centos-m1-small-10m openstack_volume_size: 20
enabled: false workload_mode: streaming
benchmarks: fio - name: cluster_boot-centos-m1-small
openstack_volume_size: 20 enabled: false
fio_generate_scenarios: all type: perfkit
fio_runtime: 600 benchmarks: cluster_boot
fio_working_set_size: 4 config_override: "cluster_boot.vm_groups.default.vm_count=4"
- name: iperf-centos-m1-small - name: copy_throughput-cp-centos-m1-small
enabled: false enabled: false
benchmarks: iperf type: perfkit
- name: mesh_network-centos-m1-small benchmarks: copy_throughput
enabled: false copy_benchmark_mode: cp
benchmarks: mesh_network openstack_volume_size: 20
num_vms: 3 - name: copy_throughput-dd-centos-m1-small
- name: netperf-centos-m1-small enabled: false
enabled: false type: perfkit
benchmarks: netperf benchmarks: copy_throughput
- name: ping-centos-m1-small copy_benchmark_mode: dd
enabled: false openstack_volume_size: 20
benchmarks: ping - name: copy_throughput-scp-centos-m1-small
- name: redis_ycsb-centos-m1-small enabled: false
enabled: false type: perfkit
benchmarks: redis_ycsb benchmarks: copy_throughput
ycsb_client_vms: 2 copy_benchmark_mode: scp
- name: scimark2-centos-m1-small openstack_volume_size: 20
enabled: false - name: fio-centos-m1-small
benchmarks: scimark2 enabled: false
- name: sysbench_oltp-centos-m1-small type: perfkit
enabled: false benchmarks: fio
benchmarks: sysbench_oltp openstack_volume_size: 20
openstack_volume_size: 20 - name: fio-centos-m1-small-10m
- name: unixbench-centos-m1-small enabled: false
enabled: false type: perfkit
benchmarks: unixbench benchmarks: fio
openstack_volume_size: 20 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 # how system resources and api responsiveness degrade over each new set of
# instances booted. # instances booted.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 10
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -24,23 +28,25 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
plugins: plugins:
@ -48,355 +54,55 @@ rally:
- nova: rally/rally-plugins/nova - nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron - neutron: rally/rally-plugins/neutron
- gnocchi: rally/rally-plugins/gnocchi - 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 workloads:
- 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
- name: BrowbeatNovaPersistWithNetwork01 # Baseline Gnocchi API
enabled: true - name: BrowbeatGnocchiResponsiveness
concurrency: enabled: true
- 40 type: rally
times: 1000 concurrency:
scenarios: - 8
- name: nova-boot-persist-with-network-1000-01 times: 5000
enabled: true scenarios:
image_name: cirros - name: gnocchi-metric-get-measures-agg-mean-Baseline
flavor_name: m1.xtiny enabled: true
network_start_cidr: 10.1.0.0/22 all_metrics: true
cleanup_delay: 1800 aggregation: mean
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: BrowbeatGnocchi01 - name: gnocchi-create-delete-metric-Baseline
enabled: true enabled: true
concurrency: times: 1000
- 8 file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
times: 5000 - name: gnocchi-create-delete-resource-Baseline
scenarios: enabled: true
- name: gnocchi-metric-get-measures-agg-mean-01 times: 1000
enabled: true file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
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
- name: BrowbeatNovaPersistWithNetwork02 # Boot 1000 instances
enabled: true - name: BrowbeatNovaPersistWithNetwork
concurrency: enabled: true
- 40 type: rally
times: 1000 concurrency:
scenarios: - 40
- name: nova-boot-persist-with-network-1000-02 times: 1000
enabled: true scenarios:
image_name: cirros - name: nova-boot-persist-with-network-1000
flavor_name: m1.xtiny enabled: true
network_start_cidr: 10.1.4.0/22 image_name: cirros
cleanup_delay: 1800 flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml network_start_cidr: 10.1.0.0/22
- name: BrowbeatGnocchi02 cleanup_delay: 1800
enabled: true file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
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

View File

@ -7,14 +7,18 @@
# how system resources and api responsiveness degrade over each new set of # how system resources and api responsiveness degrade over each new set of
# instances booted. # instances booted.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 10
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -24,23 +28,25 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
plugins: plugins:
@ -48,355 +54,55 @@ rally:
- nova: rally/rally-plugins/nova - nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron - neutron: rally/rally-plugins/neutron
- gnocchi: rally/rally-plugins/gnocchi - 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 workloads:
- 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
- name: BrowbeatNovaPersistWithNetwork01 # Baseline Gnocchi API
enabled: true - name: BrowbeatGnocchiResponsiveness
concurrency: enabled: true
- 20 type: rally
times: 100 concurrency:
scenarios: - 8
- name: nova-boot-persist-with-network-100-01 times: 5000
enabled: true scenarios:
image_name: cirros - name: gnocchi-metric-get-measures-agg-mean-Baseline
flavor_name: m1.xtiny enabled: true
network_start_cidr: 10.1.0.0/23 all_metrics: true
cleanup_delay: 1800 aggregation: mean
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: BrowbeatGnocchi01 - name: gnocchi-create-delete-metric-Baseline
enabled: true enabled: true
concurrency: times: 1000
- 8 file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
times: 5000 - name: gnocchi-create-delete-resource-Baseline
scenarios: enabled: true
- name: gnocchi-metric-get-measures-agg-mean-01 times: 1000
enabled: true file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
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
- name: BrowbeatNovaPersistWithNetwork02 # Boot 100 instances
enabled: true - name: BrowbeatNovaPersistWithNetwork
concurrency: enabled: true
- 20 type: rally
times: 100 concurrency:
scenarios: - 20
- name: nova-boot-persist-with-network-100-02 times: 100
enabled: true scenarios:
image_name: cirros - name: nova-boot-persist-with-network-100
flavor_name: m1.xtiny enabled: true
network_start_cidr: 10.1.2.0/23 image_name: cirros
cleanup_delay: 1800 flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml network_start_cidr: 10.1.0.0/23
- name: BrowbeatGnocchi02 cleanup_delay: 1800
enabled: true file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
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

View File

@ -7,14 +7,18 @@
# how system resources and api responsiveness degrade over each new set of # how system resources and api responsiveness degrade over each new set of
# instances booted. # instances booted.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 2
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -24,23 +28,25 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
plugins: plugins:
@ -48,91 +54,55 @@ rally:
- nova: rally/rally-plugins/nova - nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron - neutron: rally/rally-plugins/neutron
- gnocchi: rally/rally-plugins/gnocchi - 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 workloads:
- 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
- name: BrowbeatNovaPersistWithNetwork01 # Baseline Gnocchi API
enabled: true - name: BrowbeatGnocchiResponsiveness
concurrency: enabled: true
- 20 type: rally
times: 500 concurrency:
scenarios: - 8
- name: nova-boot-persist-with-network-500-01 times: 5000
enabled: true scenarios:
image_name: cirros - name: gnocchi-metric-get-measures-agg-mean-Baseline
flavor_name: m1.xtiny enabled: true
network_start_cidr: 10.1.0.0/23 all_metrics: true
cleanup_delay: 1800 aggregation: mean
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: BrowbeatGnocchi01 - name: gnocchi-create-delete-metric-Baseline
enabled: true enabled: true
concurrency: times: 1000
- 8 file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
times: 5000 - name: gnocchi-create-delete-resource-Baseline
scenarios: enabled: true
- name: gnocchi-metric-get-measures-agg-mean-01 times: 1000
enabled: true file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
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
- name: BrowbeatNovaPersistWithNetwork02 # Boot 500 instances
enabled: true - name: BrowbeatNovaPersistWithNetwork
concurrency: enabled: true
- 20 type: rally
times: 500 concurrency:
scenarios: - 20
- name: nova-boot-persist-with-network-500-02 times: 500
enabled: true scenarios:
image_name: cirros - name: nova-boot-persist-with-network-500
flavor_name: m1.xtiny enabled: true
network_start_cidr: 10.1.2.0/23 image_name: cirros
cleanup_delay: 1800 flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml network_start_cidr: 10.1.0.0/23
- name: BrowbeatGnocchi02 cleanup_delay: 1800
enabled: true file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
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

View File

@ -7,14 +7,18 @@
# how system resources and api responsiveness degrade over each new set of # how system resources and api responsiveness degrade over each new set of
# instances booted. # instances booted.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 10
rerun_type: complete
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -24,23 +28,25 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 5 sleep_before: 5
sleep_after: 5 sleep_after: 5
plugins: plugins:
@ -48,355 +54,55 @@ rally:
- nova: rally/rally-plugins/nova - nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron - neutron: rally/rally-plugins/neutron
- gnocchi: rally/rally-plugins/gnocchi - 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 workloads:
- 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
- name: BrowbeatNovaPersistWithNetwork01 # Baseline Gnocchi API
enabled: true - name: BrowbeatGnocchiResponsiveness
concurrency: enabled: true
- 20 type: rally
times: 500 concurrency:
scenarios: - 8
- name: nova-boot-persist-with-network-500-01 times: 5000
enabled: true scenarios:
image_name: cirros - name: gnocchi-metric-get-measures-agg-mean-Baseline
flavor_name: m1.xtiny enabled: true
network_start_cidr: 10.1.0.0/23 all_metrics: true
cleanup_delay: 1800 aggregation: mean
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/gnocchi/gnocchi-metric-get-measures.yml
- name: BrowbeatGnocchi01 - name: gnocchi-create-delete-metric-Baseline
enabled: true enabled: true
concurrency: times: 1000
- 8 file: rally/rally-plugins/gnocchi/gnocchi-create-delete-metric.yml
times: 5000 - name: gnocchi-create-delete-resource-Baseline
scenarios: enabled: true
- name: gnocchi-metric-get-measures-agg-mean-01 times: 1000
enabled: true file: rally/rally-plugins/gnocchi/gnocchi-create-delete-resource.yml
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
- name: BrowbeatNovaPersistWithNetwork02 # Boot 500 instances
enabled: true - name: BrowbeatNovaPersistWithNetwork
concurrency: enabled: true
- 20 type: rally
times: 500 concurrency:
scenarios: - 20
- name: nova-boot-persist-with-network-500-02 times: 500
enabled: true scenarios:
image_name: cirros - name: nova-boot-persist-with-network-500
flavor_name: m1.xtiny enabled: true
network_start_cidr: 10.1.2.0/23 image_name: cirros
cleanup_delay: 1800 flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml network_start_cidr: 10.1.0.0/23
- name: BrowbeatGnocchi02 cleanup_delay: 1800
enabled: true file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
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

View File

@ -4,14 +4,18 @@
# booted. The instances have a nic and a fip. # booted. The instances have a nic and a fip.
# You must pre-populate (external_net_name and private_net_id) # You must pre-populate (external_net_name and private_net_id)
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -21,114 +25,130 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 0 sleep_before: 0
sleep_after: 0 sleep_after: 0
plugins: plugins:
- browbeat: rally/rally-plugins/browbeat - browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova - nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron - neutron: rally/rally-plugins/neutron
benchmarks: shaker:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms server: 1.1.1.1
- name: BrowbeatNovaPersistWithNetworkFIP01 port: 5555
enabled: true flavor: m1.small
concurrency: join_timeout: 600
- 20 sleep_before: 0
times: 100 sleep_after: 0
scenarios: shaker_region: regionOne
- name: nova-boot-persist-with-network-fip-100-01 external_host: 2.2.2.2
enabled: true yoda:
image_name: cirros instackenv: "/home/stack/instackenv.json"
flavor_name: m1.xtiny stackrc: "/home/stack/stackrc"
cleanup_delay: 1800
external_net_name: workloads:
private_net_id: # Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml - name: BrowbeatNovaPersistWithNetworkFIP01
- name: nova-boot-persist-with-network-fip-100-02 enabled: true
enabled: true type: rally
image_name: cirros concurrency:
flavor_name: m1.xtiny - 20
cleanup_delay: 1800 times: 100
external_net_name: scenarios:
private_net_id: - name: nova-boot-persist-with-network-fip-100-01
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml enabled: true
- name: nova-boot-persist-with-network-fip-100-03 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros cleanup_delay: 1800
flavor_name: m1.xtiny external_net_name:
cleanup_delay: 1800 private_net_id:
external_net_name: file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
private_net_id: - name: nova-boot-persist-with-network-fip-100-02
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml enabled: true
- name: nova-boot-persist-with-network-fip-100-04 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros cleanup_delay: 1800
flavor_name: m1.xtiny external_net_name:
cleanup_delay: 1800 private_net_id:
external_net_name: file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
private_net_id: - name: nova-boot-persist-with-network-fip-100-03
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml enabled: true
- name: nova-boot-persist-with-network-fip-100-05 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros cleanup_delay: 1800
flavor_name: m1.xtiny external_net_name:
cleanup_delay: 1800 private_net_id:
external_net_name: file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
private_net_id: - name: nova-boot-persist-with-network-fip-100-04
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml enabled: true
- name: nova-boot-persist-with-network-fip-100-06 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros cleanup_delay: 1800
flavor_name: m1.xtiny external_net_name:
cleanup_delay: 1800 private_net_id:
external_net_name: file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
private_net_id: - name: nova-boot-persist-with-network-fip-100-05
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml enabled: true
- name: nova-boot-persist-with-network-fip-100-07 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros cleanup_delay: 1800
flavor_name: m1.xtiny external_net_name:
cleanup_delay: 1800 private_net_id:
external_net_name: file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
private_net_id: - name: nova-boot-persist-with-network-fip-100-06
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml enabled: true
- name: nova-boot-persist-with-network-fip-100-08 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros cleanup_delay: 1800
flavor_name: m1.xtiny external_net_name:
cleanup_delay: 1800 private_net_id:
external_net_name: file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
private_net_id: - name: nova-boot-persist-with-network-fip-100-07
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml enabled: true
- name: nova-boot-persist-with-network-fip-100-09 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros cleanup_delay: 1800
flavor_name: m1.xtiny external_net_name:
cleanup_delay: 1800 private_net_id:
external_net_name: file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
private_net_id: - name: nova-boot-persist-with-network-fip-100-08
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml enabled: true
- name: nova-boot-persist-with-network-fip-100-10 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros cleanup_delay: 1800
flavor_name: m1.xtiny external_net_name:
cleanup_delay: 1800 private_net_id:
external_net_name: file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml
private_net_id: - name: nova-boot-persist-with-network-fip-100-09
file: rally/rally-plugins/nova/nova_boot_persist_with_network_fip.yml 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. # booted. The instances have a nic, volume and fip.
# You must pre-populate (external_net_name and private_net_id) # You must pre-populate (external_net_name and private_net_id)
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -21,124 +25,140 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 0 sleep_before: 0
sleep_after: 0 sleep_after: 0
plugins: plugins:
- browbeat: rally/rally-plugins/browbeat - browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova - nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron - neutron: rally/rally-plugins/neutron
benchmarks: shaker:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms server: 1.1.1.1
- name: BrowbeatNovaPersistWithNetworkVolumeFIP01 port: 5555
enabled: true flavor: m1.small
concurrency: join_timeout: 600
- 20 sleep_before: 0
times: 100 sleep_after: 0
scenarios: shaker_region: regionOne
- name: nova-boot-persist-with-network-volume-fip-100-01 external_host: 2.2.2.2
enabled: true yoda:
image_name: cirros instackenv: "/home/stack/instackenv.json"
flavor_name: m1.xtiny stackrc: "/home/stack/stackrc"
volume_size: 1
cleanup_delay: 1800 workloads:
external_net_name: # Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
private_net_id: - name: BrowbeatNovaPersistWithNetworkVolumeFIP01
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml enabled: true
- name: nova-boot-persist-with-network-volume-fip-100-02 type: rally
enabled: true concurrency:
image_name: cirros - 20
flavor_name: m1.xtiny times: 100
volume_size: 1 scenarios:
cleanup_delay: 1800 - name: nova-boot-persist-with-network-volume-fip-100-01
external_net_name: enabled: true
private_net_id: image_name: cirros
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml flavor_name: m1.xtiny
- name: nova-boot-persist-with-network-volume-fip-100-03 volume_size: 1
enabled: true cleanup_delay: 1800
image_name: cirros external_net_name:
flavor_name: m1.xtiny private_net_id:
volume_size: 1 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
cleanup_delay: 1800 - name: nova-boot-persist-with-network-volume-fip-100-02
external_net_name: enabled: true
private_net_id: image_name: cirros
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml flavor_name: m1.xtiny
- name: nova-boot-persist-with-network-volume-fip-100-04 volume_size: 1
enabled: true cleanup_delay: 1800
image_name: cirros external_net_name:
flavor_name: m1.xtiny private_net_id:
volume_size: 1 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
cleanup_delay: 1800 - name: nova-boot-persist-with-network-volume-fip-100-03
external_net_name: enabled: true
private_net_id: image_name: cirros
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml flavor_name: m1.xtiny
- name: nova-boot-persist-with-network-volume-fip-100-05 volume_size: 1
enabled: true cleanup_delay: 1800
image_name: cirros external_net_name:
flavor_name: m1.xtiny private_net_id:
volume_size: 1 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
cleanup_delay: 1800 - name: nova-boot-persist-with-network-volume-fip-100-04
external_net_name: enabled: true
private_net_id: image_name: cirros
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml flavor_name: m1.xtiny
- name: nova-boot-persist-with-network-volume-fip-100-06 volume_size: 1
enabled: true cleanup_delay: 1800
image_name: cirros external_net_name:
flavor_name: m1.xtiny private_net_id:
volume_size: 1 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
cleanup_delay: 1800 - name: nova-boot-persist-with-network-volume-fip-100-05
external_net_name: enabled: true
private_net_id: image_name: cirros
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml flavor_name: m1.xtiny
- name: nova-boot-persist-with-network-volume-fip-100-07 volume_size: 1
enabled: true cleanup_delay: 1800
image_name: cirros external_net_name:
flavor_name: m1.xtiny private_net_id:
volume_size: 1 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
cleanup_delay: 1800 - name: nova-boot-persist-with-network-volume-fip-100-06
external_net_name: enabled: true
private_net_id: image_name: cirros
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml flavor_name: m1.xtiny
- name: nova-boot-persist-with-network-volume-fip-100-08 volume_size: 1
enabled: true cleanup_delay: 1800
image_name: cirros external_net_name:
flavor_name: m1.xtiny private_net_id:
volume_size: 1 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
cleanup_delay: 1800 - name: nova-boot-persist-with-network-volume-fip-100-07
external_net_name: enabled: true
private_net_id: image_name: cirros
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml flavor_name: m1.xtiny
- name: nova-boot-persist-with-network-volume-fip-100-09 volume_size: 1
enabled: true cleanup_delay: 1800
image_name: cirros external_net_name:
flavor_name: m1.xtiny private_net_id:
volume_size: 1 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
cleanup_delay: 1800 - name: nova-boot-persist-with-network-volume-fip-100-08
external_net_name: enabled: true
private_net_id: image_name: cirros
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml flavor_name: m1.xtiny
- name: nova-boot-persist-with-network-volume-fip-100-10 volume_size: 1
enabled: true cleanup_delay: 1800
image_name: cirros external_net_name:
flavor_name: m1.xtiny private_net_id:
volume_size: 1 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml
cleanup_delay: 1800 - name: nova-boot-persist-with-network-volume-fip-100-09
external_net_name: enabled: true
private_net_id: image_name: cirros
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume_fip.yml 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 # with a concurrency of 20 instances. A total of 1000 instances are
# booted. The instances have a nic and volume. # booted. The instances have a nic and volume.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -20,114 +24,130 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 0 sleep_before: 0
sleep_after: 0 sleep_after: 0
plugins: plugins:
- browbeat: rally/rally-plugins/browbeat - browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova - nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron - neutron: rally/rally-plugins/neutron
benchmarks: shaker:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms server: 1.1.1.1
- name: BrowbeatNovaPersistWithNetworkVolume01 port: 5555
enabled: true flavor: m1.small
concurrency: join_timeout: 600
- 20 sleep_before: 0
times: 100 sleep_after: 0
scenarios: shaker_region: regionOne
- name: nova-boot-persist-with-network-volume-100-01 external_host: 2.2.2.2
enabled: true yoda:
image_name: cirros instackenv: "/home/stack/instackenv.json"
flavor_name: m1.xtiny stackrc: "/home/stack/stackrc"
volume_size: 1
cleanup_delay: 1800 workloads:
network_start_cidr: 10.1.0.0/23 # Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml - name: BrowbeatNovaPersistWithNetworkVolume01
- name: nova-boot-persist-with-network-volume-100-02 enabled: true
enabled: true type: rally
image_name: cirros concurrency:
flavor_name: m1.xtiny - 20
volume_size: 1 times: 100
cleanup_delay: 1800 scenarios:
network_start_cidr: 10.1.2.0/23 - name: nova-boot-persist-with-network-volume-100-01
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml enabled: true
- name: nova-boot-persist-with-network-volume-100-03 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros volume_size: 1
flavor_name: m1.xtiny cleanup_delay: 1800
volume_size: 1 network_start_cidr: 10.1.0.0/23
cleanup_delay: 1800 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
network_start_cidr: 10.1.4.0/23 - name: nova-boot-persist-with-network-volume-100-02
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml enabled: true
- name: nova-boot-persist-with-network-volume-100-04 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros volume_size: 1
flavor_name: m1.xtiny cleanup_delay: 1800
volume_size: 1 network_start_cidr: 10.1.2.0/23
cleanup_delay: 1800 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
network_start_cidr: 10.1.6.0/23 - name: nova-boot-persist-with-network-volume-100-03
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml enabled: true
- name: nova-boot-persist-with-network-volume-100-05 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros volume_size: 1
flavor_name: m1.xtiny cleanup_delay: 1800
volume_size: 1 network_start_cidr: 10.1.4.0/23
cleanup_delay: 1800 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
network_start_cidr: 10.1.8.0/23 - name: nova-boot-persist-with-network-volume-100-04
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml enabled: true
- name: nova-boot-persist-with-network-volume-100-06 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros volume_size: 1
flavor_name: m1.xtiny cleanup_delay: 1800
volume_size: 1 network_start_cidr: 10.1.6.0/23
cleanup_delay: 1800 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
network_start_cidr: 10.1.10.0/23 - name: nova-boot-persist-with-network-volume-100-05
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml enabled: true
- name: nova-boot-persist-with-network-volume-100-07 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros volume_size: 1
flavor_name: m1.xtiny cleanup_delay: 1800
volume_size: 1 network_start_cidr: 10.1.8.0/23
cleanup_delay: 1800 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
network_start_cidr: 10.1.12.0/23 - name: nova-boot-persist-with-network-volume-100-06
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml enabled: true
- name: nova-boot-persist-with-network-volume-100-08 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros volume_size: 1
flavor_name: m1.xtiny cleanup_delay: 1800
volume_size: 1 network_start_cidr: 10.1.10.0/23
cleanup_delay: 1800 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
network_start_cidr: 10.1.14.0/23 - name: nova-boot-persist-with-network-volume-100-07
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml enabled: true
- name: nova-boot-persist-with-network-volume-100-09 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros volume_size: 1
flavor_name: m1.xtiny cleanup_delay: 1800
volume_size: 1 network_start_cidr: 10.1.12.0/23
cleanup_delay: 1800 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
network_start_cidr: 10.1.16.0/23 - name: nova-boot-persist-with-network-volume-100-08
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml enabled: true
- name: nova-boot-persist-with-network-volume-100-10 image_name: cirros
enabled: true flavor_name: m1.xtiny
image_name: cirros volume_size: 1
flavor_name: m1.xtiny cleanup_delay: 1800
volume_size: 1 network_start_cidr: 10.1.14.0/23
cleanup_delay: 1800 file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml
network_start_cidr: 10.1.18.0/23 - name: nova-boot-persist-with-network-volume-100-09
file: rally/rally-plugins/nova/nova_boot_persist_with_network_volume.yml 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 # additional telemetry load. View how system resources degrade over each
# new set of instances booted. # new set of instances booted.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -22,104 +26,120 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 0 sleep_before: 0
sleep_after: 0 sleep_after: 0
plugins: plugins:
- browbeat: rally/rally-plugins/browbeat - browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova - nova: rally/rally-plugins/nova
- neutron: rally/rally-plugins/neutron - neutron: rally/rally-plugins/neutron
benchmarks: shaker:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms server: 1.1.1.1
- name: BrowbeatNovaPersistWithNetwork01 port: 5555
enabled: true flavor: m1.small
concurrency: join_timeout: 600
- 20 sleep_before: 0
times: 100 sleep_after: 0
scenarios: shaker_region: regionOne
- name: nova-boot-persist-with-network-100-01 external_host: 2.2.2.2
enabled: true yoda:
image_name: cirros instackenv: "/home/stack/instackenv.json"
flavor_name: m1.xtiny stackrc: "/home/stack/stackrc"
cleanup_delay: 1800
network_start_cidr: 10.1.0.0/23 workloads:
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml # Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
- name: nova-boot-persist-with-network-100-02 - name: BrowbeatNovaPersistWithNetwork01
enabled: true enabled: true
image_name: cirros type: rally
flavor_name: m1.xtiny concurrency:
cleanup_delay: 1800 - 20
network_start_cidr: 10.1.2.0/23 times: 100
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml scenarios:
- name: nova-boot-persist-with-network-100-03 - name: nova-boot-persist-with-network-100-01
enabled: true enabled: true
image_name: cirros image_name: cirros
flavor_name: m1.xtiny flavor_name: m1.xtiny
cleanup_delay: 1800 cleanup_delay: 1800
network_start_cidr: 10.1.4.0/23 network_start_cidr: 10.1.0.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-04 - name: nova-boot-persist-with-network-100-02
enabled: true enabled: true
image_name: cirros image_name: cirros
flavor_name: m1.xtiny flavor_name: m1.xtiny
cleanup_delay: 1800 cleanup_delay: 1800
network_start_cidr: 10.1.6.0/23 network_start_cidr: 10.1.2.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-05 - name: nova-boot-persist-with-network-100-03
enabled: true enabled: true
image_name: cirros image_name: cirros
flavor_name: m1.xtiny flavor_name: m1.xtiny
cleanup_delay: 1800 cleanup_delay: 1800
network_start_cidr: 10.1.8.0/23 network_start_cidr: 10.1.4.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-06 - name: nova-boot-persist-with-network-100-04
enabled: true enabled: true
image_name: cirros image_name: cirros
flavor_name: m1.xtiny flavor_name: m1.xtiny
cleanup_delay: 1800 cleanup_delay: 1800
network_start_cidr: 10.1.10.0/23 network_start_cidr: 10.1.6.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-07 - name: nova-boot-persist-with-network-100-05
enabled: true enabled: true
image_name: cirros image_name: cirros
flavor_name: m1.xtiny flavor_name: m1.xtiny
cleanup_delay: 1800 cleanup_delay: 1800
network_start_cidr: 10.1.12.0/23 network_start_cidr: 10.1.8.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-08 - name: nova-boot-persist-with-network-100-06
enabled: true enabled: true
image_name: cirros image_name: cirros
flavor_name: m1.xtiny flavor_name: m1.xtiny
cleanup_delay: 1800 cleanup_delay: 1800
network_start_cidr: 10.1.14.0/23 network_start_cidr: 10.1.10.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-09 - name: nova-boot-persist-with-network-100-07
enabled: true enabled: true
image_name: cirros image_name: cirros
flavor_name: m1.xtiny flavor_name: m1.xtiny
cleanup_delay: 1800 cleanup_delay: 1800
network_start_cidr: 10.1.16.0/23 network_start_cidr: 10.1.12.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml
- name: nova-boot-persist-with-network-100-10 - name: nova-boot-persist-with-network-100-08
enabled: true enabled: true
image_name: cirros image_name: cirros
flavor_name: m1.xtiny flavor_name: m1.xtiny
cleanup_delay: 1800 cleanup_delay: 1800
network_start_cidr: 10.1.18.0/23 network_start_cidr: 10.1.14.0/23
file: rally/rally-plugins/nova/nova_boot_persist_with_network.yml 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 # booted. View how system resources degrade over each new set of
# instances booted. # instances booted.
browbeat: browbeat:
results: results/
rerun: 1
cloud_name: openstack cloud_name: openstack
rerun: 1
rerun_type: iteration
ansible:
hosts: ansible/hosts
metadata_playbook: ansible/gather/site.yml
ssh_config: ansible/ssh-config
elasticsearch: elasticsearch:
enabled: false enabled: false
regather: false
host: 1.1.1.1 host: 1.1.1.1
port: 9200 port: 9200
regather: false
metadata_files: metadata_files:
- name: hardware-metadata - name: hardware-metadata
file: metadata/hardware-metadata.json file: metadata/hardware-metadata.json
@ -21,93 +25,110 @@ elasticsearch:
file: metadata/software-metadata.json file: metadata/software-metadata.json
- name: version - name: version
file: metadata/version.json 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: grafana:
enabled: false enabled: true
grafana_ip: 1.1.1.1 host: example.grafana.com
grafana_port: 3000 port: 3000
dashboards: dashboards:
- openstack-general-system-performance - 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: rally:
enabled: true
sleep_before: 0 sleep_before: 0
sleep_after: 0 sleep_after: 0
plugins: plugins:
- browbeat: rally/rally-plugins/browbeat - browbeat: rally/rally-plugins/browbeat
- nova: rally/rally-plugins/nova - nova: rally/rally-plugins/nova
benchmarks: shaker:
# Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms server: 1.1.1.1
- name: BrowbeatNovaPersist01 port: 5555
enabled: true flavor: m1.small
concurrency: join_timeout: 600
- 20 sleep_before: 0
times: 100 sleep_after: 0
scenarios: shaker_region: regionOne
- name: nova-boot-100-01 external_host: 2.2.2.2
enabled: true yoda:
image_name: cirros instackenv: "/home/stack/instackenv.json"
flavor_name: m1.xtiny stackrc: "/home/stack/stackrc"
cleanup_delay: 1800
file: rally/rally-plugins/nova/nova_boot_persist.yml workloads:
- name: nova-boot-100-02
enabled: true # Boots a total of 1000 instances, 100 at a time with 30minutes between booting storms
image_name: cirros - name: BrowbeatNovaPersist01
flavor_name: m1.xtiny enabled: true
cleanup_delay: 1800 type: rally
file: rally/rally-plugins/nova/nova_boot_persist.yml concurrency:
- name: nova-boot-100-03 - 20
enabled: true times: 100
image_name: cirros scenarios:
flavor_name: m1.xtiny - name: nova-boot-100-01
cleanup_delay: 1800 enabled: true
file: rally/rally-plugins/nova/nova_boot_persist.yml image_name: cirros
- name: nova-boot-100-04 flavor_name: m1.xtiny
enabled: true cleanup_delay: 1800
image_name: cirros file: rally/rally-plugins/nova/nova_boot_persist.yml
flavor_name: m1.xtiny - name: nova-boot-100-02
cleanup_delay: 1800 enabled: true
file: rally/rally-plugins/nova/nova_boot_persist.yml image_name: cirros
- name: nova-boot-100-05 flavor_name: m1.xtiny
enabled: true cleanup_delay: 1800
image_name: cirros file: rally/rally-plugins/nova/nova_boot_persist.yml
flavor_name: m1.xtiny - name: nova-boot-100-03
cleanup_delay: 1800 enabled: true
file: rally/rally-plugins/nova/nova_boot_persist.yml image_name: cirros
- name: nova-boot-100-06 flavor_name: m1.xtiny
enabled: true cleanup_delay: 1800
image_name: cirros file: rally/rally-plugins/nova/nova_boot_persist.yml
flavor_name: m1.xtiny - name: nova-boot-100-04
cleanup_delay: 1800 enabled: true
file: rally/rally-plugins/nova/nova_boot_persist.yml image_name: cirros
- name: nova-boot-100-07 flavor_name: m1.xtiny
enabled: true cleanup_delay: 1800
image_name: cirros file: rally/rally-plugins/nova/nova_boot_persist.yml
flavor_name: m1.xtiny - name: nova-boot-100-05
cleanup_delay: 1800 enabled: true
file: rally/rally-plugins/nova/nova_boot_persist.yml image_name: cirros
- name: nova-boot-100-08 flavor_name: m1.xtiny
enabled: true cleanup_delay: 1800
image_name: cirros file: rally/rally-plugins/nova/nova_boot_persist.yml
flavor_name: m1.xtiny - name: nova-boot-100-06
cleanup_delay: 1800 enabled: true
file: rally/rally-plugins/nova/nova_boot_persist.yml image_name: cirros
- name: nova-boot-100-09 flavor_name: m1.xtiny
enabled: true cleanup_delay: 1800
image_name: cirros file: rally/rally-plugins/nova/nova_boot_persist.yml
flavor_name: m1.xtiny - name: nova-boot-100-07
cleanup_delay: 1800 enabled: true
file: rally/rally-plugins/nova/nova_boot_persist.yml image_name: cirros
- name: nova-boot-100-10 flavor_name: m1.xtiny
enabled: true cleanup_delay: 1800
image_name: cirros file: rally/rally-plugins/nova/nova_boot_persist.yml
flavor_name: m1.xtiny - name: nova-boot-100-08
cleanup_delay: 1800 enabled: true
file: rally/rally-plugins/nova/nova_boot_persist.yml 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 ansible-lint
pykwalify pykwalify
coverage>=3.6 coverage>=3.6
pytest==3.2.1
python-subunit>=0.0.18 python-subunit>=0.0.18
sphinx>=1.3,!=1.6.1 sphinx>=1.3,!=1.6.1
oslosphinx>=2.5.0 # Apache-2.0 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 \ bash -c "cd ansible; find . -type f -regex '.*.y[a]?ml' -print0 | xargs -t -n1 -0 \
ansible-lint \ ansible-lint \
-x ANSIBLE0013,ANSIBLE0012,ANSIBLE0006,ANSIBLE0007,ANSIBLE0010,ANSIBLE0016" -x ANSIBLE0013,ANSIBLE0012,ANSIBLE0006,ANSIBLE0007,ANSIBLE0010,ANSIBLE0016"
pykwalify -d browbeat-config.yaml -s browbeat/validate.yaml pykwalify -d browbeat-config.yaml -s browbeat/schema/browbeat.yml
pykwalify -d browbeat-complete.yaml -s browbeat/validate.yaml pykwalify -d browbeat-complete.yaml -s browbeat/schema/browbeat.yml
bash -c "set -e; for config in $(ls conf/); do \ 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] [testenv:pep8]
commands = flake8 {posargs} commands = flake8 {posargs}
@ -28,6 +28,10 @@ commands = flake8 {posargs}
[testenv:venv] [testenv:venv]
commands = {posargs} commands = {posargs}
[testenv:py27]
basepython = python2.7
commands = pytest {posargs}
[testenv:cover] [testenv:cover]
commands = python setup.py test --coverage --testr-args='{posargs}' commands = python setup.py test --coverage --testr-args='{posargs}'