Browbeat Ceilometer Rally Tests

+ Added all Rally Ceilometer scenarios and added minimal ceilometer
  config to ceilometer-minimal.yaml
+ BrowbeatPlugin: Nova boot and persist scenario which boots
  persisting extra tiny instances
+ Two additional Browbeat Configs that use nova boot and persist
  plugin to stress telemetry services over time

Change-Id: Ib52c60559c974c2e63478305a610df6afca5f087
This commit is contained in:
Alex Krzos 2016-06-28 20:26:52 -04:00 committed by akrzos
parent e28ca5fcb7
commit f18707403c
29 changed files with 1438 additions and 0 deletions

View File

@ -231,3 +231,10 @@
when: not item.rc == 0
ignore_errors: true
with_items: "{{ image_osp8.results }}"
#
# Add additional flavor to overcloud
#
- name: Add extra tiny flavor to overcloud
shell: . {{ overcloudrc }}; nova flavor-create m1.xtiny auto 64 1 1

View File

@ -0,0 +1,172 @@
# Ceilometer Stress tests run minimal number of times.
browbeat:
results : results/
rerun: 1
cloud_name: openstack
elasticsearch:
enabled: false
host: 1.1.1.1
port: 9200
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:
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
grafana_snapshot: ansible/browbeat/snapshot-general-performance-dashboard.yml
connmon:
enabled: false
sudo: true
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
dashboards:
- openstack-general-system-performance
snapshot:
enabled: false
snapshot_compute: false
rally:
enabled: true
sleep_before: 5
sleep_after: 5
venv: /home/stack/rally-venv/bin/activate
plugins:
- validate-ceilometer: rally/rally-plugins/validate-ceilometer
- nova-ceilometer: rally/rally-plugins/nova-ceilometer
benchmarks:
- name: CeilometerAlarms
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: create_alarm
enabled: true
file: rally/CeilometerAlarms/create_alarm-cc.yml
- name: create_alarm_and_get_history
enabled: true
file: rally/CeilometerAlarms/create_alarm_and_get_history-cc.yml
- name: create_and_delete_alarm
enabled: true
file: rally/CeilometerAlarms/create_and_delete_alarm-cc.yml
- name: create_and_list_alarm
enabled: true
file: rally/CeilometerAlarms/create_and_list_alarm-cc.yml
- name: create_and_update_alarm
enabled: true
file: rally/CeilometerAlarms/create_and_update_alarm-cc.yml
- name: list_alarms
enabled: true
file: rally/CeilometerAlarms/list_alarms-cc.yml
- name: CeilometerEvents
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: create_user_and_get_event
enabled: true
file: rally/CeilometerEvents/create_user_and_get_event-cc.yml
- name: create_user_and_list_event_types
enabled: true
file: rally/CeilometerEvents/create_user_and_list_event_types-cc.yml
- name: create_user_and_list_events
enabled: true
file: rally/CeilometerEvents/create_user_and_list_events-cc.yml
- name: CeilometerMeters
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: list_matched_meters
enabled: true
file: rally/CeilometerMeters/list_matched_meters-cc.yml
- name: list_meters
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: CeilometerQueries
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: create_and_query_alarm_history
enabled: true
file: rally/CeilometerQueries/create_and_query_alarm_history-cc.yml
- name: create_and_query_alarms
enabled: true
file: rally/CeilometerQueries/create_and_query_alarms-cc.yml
- name: create_and_query_samples
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: CeilometerResource
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: get_tenant_resources
enabled: true
file: rally/CeilometerResource/get_tenant_resources-cc.yml
- name: list_matched_resources
enabled: true
file: rally/CeilometerResource/list_matched_resources-cc.yml
- name: list_resources
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: CeilometerSamples
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: list_matched_samples
enabled: true
file: rally/CeilometerSamples/list_matched_samples-cc.yml
- name: list_samples
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: CeilometerStats
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: create_meter_and_get_stats
enabled: true
file: rally/CeilometerStats/create_meter_and_get_stats-cc.yml
- name: get_stats
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
- name: CeilometerTraits
enabled: true
concurrency:
- 5
times: 10
scenarios:
- name: create_user_and_list_trait_descriptions
enabled: true
file: rally/CeilometerTraits/create_user_and_list_trait_descriptions-cc.yml
- name: create_user_and_list_traits
enabled: true
file: rally/CeilometerTraits/create_user_and_list_traits-cc.yml
# Other Scenarios involving Ceilometer:
- name: Authenticate
enabled: false
concurrency:
- 2
times: 10
scenarios:
- name: validate_ceilometer
enabled: true
file: rally/authenticate/validate_ceilometer-cc.yml

View File

@ -0,0 +1,409 @@
# Ceilometer stress test that boots persisting xtiny cirros instances.
# It boots 20 each iteration with a concurrency of 5 instances. Inbetween
# each iteration it measures response time of several Ceilometer APIs.
# Currently it maxs at 200 instances
browbeat:
results : results/
rerun: 1
cloud_name: openstack
elasticsearch:
enabled: false
host: 1.1.1.1
port: 9200
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:
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
grafana_snapshot: ansible/browbeat/snapshot-general-performance-dashboard.yml
connmon:
enabled: false
sudo: true
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
dashboards:
- openstack-general-system-performance
snapshot:
enabled: false
snapshot_compute: false
rally:
enabled: true
sleep_before: 5
sleep_after: 5
venv: /home/stack/rally-venv/bin/activate
plugins:
- nova: rally/rally-plugins/nova
benchmarks:
# Ceilometer Baseline
- name: Ceilometer01
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-01
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-01
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-01
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-01
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-01
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist01
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer02
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-02
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-02
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-02
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-02
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-02
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist02
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer03
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-03
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-03
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-03
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-03
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-03
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist03
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer04
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-04
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-04
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-04
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-04
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-04
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist04
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer05
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-05
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-05
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-05
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-05
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-05
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist05
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer06
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-06
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-06
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-06
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-06
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-06
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist06
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer07
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-07
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-07
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-07
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-07
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-07
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist07
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer08
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-08
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-08
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-08
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-08
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-08
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist08
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer09
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-09
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-09
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-09
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-09
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-09
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist09
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Measure Ceilometer Response Timings
- name: Ceilometer10
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-10
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-10
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-10
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-10
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-10
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml
# Boot 20 instances
- name: BrowbeatNovaPersist10
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
# Final Measure Ceilometer Response Timings
- name: Ceilometer11
enabled: true
concurrency:
- 8
times: 500
scenarios:
- name: list_meters-11
enabled: true
file: rally/CeilometerMeters/list_meters-cc.yml
- name: create_and_query_samples-11
enabled: true
file: rally/CeilometerQueries/create_and_query_samples-cc.yml
- name: list_resources-11
enabled: true
file: rally/CeilometerResource/list_resources-cc.yml
- name: list_samples-11
enabled: true
file: rally/CeilometerSamples/list_samples-cc.yml
- name: get_stats-11
enabled: true
file: rally/CeilometerStats/get_stats-cc.yml

View File

@ -0,0 +1,106 @@
# Stress test designed for telemetry services (ceilometer, gnocchi) by
# booting persisting xtiny cirros instances. It boots 20 each iteration
# with a concurrency of 5 instances. View how system resources degrade
# over each new set of instances booted.
browbeat:
results : results/
rerun: 1
cloud_name: openstack
elasticsearch:
enabled: false
host: 1.1.1.1
port: 9200
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:
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
grafana_snapshot: ansible/browbeat/snapshot-general-performance-dashboard.yml
connmon:
enabled: false
sudo: true
grafana:
enabled: false
grafana_ip: 1.1.1.1
grafana_port: 3000
dashboards:
- openstack-general-system-performance
snapshot:
enabled: false
snapshot_compute: false
rally:
enabled: true
sleep_before: 0
# Sleeps 20 minutes after each iteration to allow for system resources to degrade or
# display stepped degrading (If the system is hitting saturation or high utilization)
sleep_after: 1200
venv: /home/stack/rally-venv/bin/activate
plugins:
- nova: rally/rally-plugins/nova
benchmarks:
# Boots a total of 200 instances, 20 at a time with 20minutes between persist-booting "Storms"
- name: BrowbeatNovaPersist01
enabled: true
concurrency:
- 5
times: 20
scenarios:
- name: nova-boot-20-01
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-20-02
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-20-03
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-20-04
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-20-05
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-20-06
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-20-07
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-20-08
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-20-09
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml
- name: nova-boot-20-10
enabled: true
image_name: cirros
flavor_name: m1.xtiny
file: rally/rally-plugins/nova/nova_boot_persist.yml

View File

@ -0,0 +1,27 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerAlarms.create_alarm:
-
args:
meter_name: "ram_util"
threshold: 10.0
type: "threshold"
statistic: "avg"
alarm_actions: ["http://localhost:8776/alarm"]
ok_actions: ["http://localhost:8776/ok"]
insufficient_data_actions: ["http://localhost:8776/notok"]
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,28 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerAlarms.create_alarm_and_get_history:
-
args:
meter_name: "ram_util"
threshold: 10.0
type: "threshold"
state: "ok"
statistic: "avg"
alarm_actions: ["http://localhost:8776/alarm"]
ok_actions: ["http://localhost:8776/ok"]
insufficient_data_actions: ["http://localhost:8776/notok"]
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,27 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerAlarms.create_and_delete_alarm:
-
args:
meter_name: "ram_util"
threshold: 10.0
type: "threshold"
statistic: "avg"
alarm_actions: ["http://localhost:8776/alarm"]
ok_actions: ["http://localhost:8776/ok"]
insufficient_data_actions: ["http://localhost:8776/notok"]
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,27 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerAlarms.create_and_list_alarm:
-
args:
meter_name: "ram_util"
threshold: 10.0
type: "threshold"
statistic: "avg"
alarm_actions: ["http://localhost:8776/alarm"]
ok_actions: ["http://localhost:8776/ok"]
insufficient_data_actions: ["http://localhost:8776/notok"]
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,27 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerAlarms.create_and_update_alarm:
-
args:
meter_name: "ram_util"
threshold: 10.0
type: "threshold"
statistic: "avg"
alarm_actions: ["http://localhost:8776/alarm"]
ok_actions: ["http://localhost:8776/ok"]
insufficient_data_actions: ["http://localhost:8776/notok"]
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,19 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerAlarms.list_alarms:
-
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,20 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerEvents.create_user_and_get_event:
-
args: {}
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,20 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerEvents.create_user_and_list_event_types:
-
args: {}
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,20 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerEvents.create_user_and_list_events:
-
args: {}
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,43 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerMeters.list_matched_meters:
-
args:
limit: 50
filter_by_user_id: true
filter_by_project_id: true
filter_by_resource_id: true
metadata_query:
status: "terminated"
context:
ceilometer:
counter_name: "benchmark_meter"
counter_type: "gauge"
counter_unit: "%"
counter_volume: 100
resources_per_tenant: 100
samples_per_resource: 100
timestamp_interval: 10
metadata_list:
-
status: "active"
name: "rally benchmark on"
deleted: "false"
-
status: "terminated"
name: "rally benchmark off"
deleted: "true"
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,40 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerMeters.list_meters:
-
args:
limit: 50
metadata_query:
status: "terminated"
context:
ceilometer:
counter_name: "benchmark_meter"
counter_type: "gauge"
counter_unit: "%"
counter_volume: 100
resources_per_tenant: 100
samples_per_resource: 100
timestamp_interval: 10
metadata_list:
-
status: "active"
name: "rally benchmark on"
deleted: "false"
-
status: "terminated"
name: "rally benchmark off"
deleted: "true"
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,29 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerQueries.create_and_query_alarm_history:
-
args:
orderby: !!null
limit: !!null
meter_name: "ram_util"
threshold: 10.0
type: "threshold"
statistic: "avg"
alarm_actions: ["http://localhost:8776/alarm"]
ok_actions: ["http://localhost:8776/ok"]
insufficient_data_actions: ["http://localhost:8776/notok"]
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,30 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerQueries.create_and_query_alarms:
-
args:
filter: {"and": [{"!=": {"state": "dummy_state"}},{"=": {"type": "threshold"}}]}
orderby: !!null
limit: 10
meter_name: "ram_util"
threshold: 10.0
type: "threshold"
statistic: "avg"
alarm_actions: ["http://localhost:8776/alarm"]
ok_actions: ["http://localhost:8776/ok"]
insufficient_data_actions: ["http://localhost:8776/notok"]
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,28 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerQueries.create_and_query_samples:
-
args:
filter: {"=": {"counter_unit": "instance"}}
orderby: !!null
limit: 10
counter_name: "cpu_util"
counter_type: "gauge"
counter_unit: "instance"
counter_volume: 1.0
resource_id: "resource_id"
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,25 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerResource.get_tenant_resources:
-
args: {}
context:
ceilometer:
counter_name: "cpu_util"
counter_type: "gauge"
counter_volume: 1.0
counter_unit: "instance"
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,42 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerResource.list_matched_resources:
-
args:
limit: 50
filter_by_user_id: true
filter_by_project_id: true
metadata_query:
status: "terminated"
context:
ceilometer:
counter_name: "benchmark_meter"
counter_type: "gauge"
counter_unit: "%"
counter_volume: 100
resources_per_tenant: 100
samples_per_resource: 100
timestamp_interval: 10
metadata_list:
-
status: "active"
name: "rally benchmark on"
deleted: "false"
-
status: "terminated"
name: "rally benchmark off"
deleted: "true"
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,40 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerResource.list_resources:
-
args:
limit: 50
metadata_query:
status: "terminated"
context:
ceilometer:
counter_name: "benchmark_meter"
counter_type: "gauge"
counter_unit: "%"
counter_volume: 100
resources_per_tenant: 100
samples_per_resource: 100
timestamp_interval: 10
metadata_list:
-
status: "active"
name: "rally benchmark on"
deleted: "false"
-
status: "terminated"
name: "rally benchmark off"
deleted: "true"
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,43 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerSamples.list_matched_samples:
-
args:
limit: 50
filter_by_user_id: true
filter_by_project_id: true
filter_by_resource_id: true
metadata_query:
status: "not_active"
context:
ceilometer:
counter_name: "cpu_util"
counter_type: "gauge"
counter_unit: "instance"
counter_volume: 1.0
resources_per_tenant: 100
samples_per_resource: 100
timestamp_interval: 60
metadata_list:
- status: "active"
name: "fake_resource"
deleted: "False"
created_at: "2015-09-04T12:34:19.000000"
- status: "not_active"
name: "fake_resource_1"
deleted: "False"
created_at: "2015-09-10T06:55:12.000000"
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,41 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerSamples.list_samples:
-
args:
limit: 50
metadata_query:
status: "not_active"
context:
ceilometer:
counter_name: "cpu_util"
counter_type: "gauge"
counter_unit: "instance"
counter_volume: 1.0
resources_per_tenant: 100
samples_per_resource: 100
timestamp_interval: 60
metadata_list:
- status: "active"
name: "fake_resource"
deleted: "False"
created_at: "2015-09-04T12:34:19.000000"
- status: "not_active"
name: "fake_resource_1"
deleted: "False"
created_at: "2015-09-10T06:55:12.000000"
batch_size: 5
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,25 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerStats.create_meter_and_get_stats:
-
args:
user_id: "user-id"
resource_id: "resource-id"
counter_volume: 1.0
counter_unit: ""
counter_type: "cumulative"
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,45 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerStats.get_stats:
-
args:
meter_name: "benchmark_meter"
filter_by_user_id: true
filter_by_project_id: true
filter_by_resource_id: true
metadata_query:
status: "terminated"
period: 300
groupby: "resource_id"
context:
ceilometer:
counter_name: "benchmark_meter"
counter_type: "gauge"
counter_unit: "%"
counter_volume: 100
resources_per_tenant: 100
samples_per_resource: 100
timestamp_interval: 10
metadata_list:
-
status: "active"
name: "rally benchmark on"
deleted: "false"
-
status: "terminated"
name: "rally benchmark off"
deleted: "true"
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,20 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerTraits.create_user_and_list_trait_descriptions:
-
args: {}
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,20 @@
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
CeilometerTraits.create_user_and_list_traits:
-
args: {}
context:
users:
tenants: 2
users_per_tenant: 2
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}

View File

@ -0,0 +1,27 @@
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from rally.plugins.openstack import scenario
from rally.plugins.openstack.scenarios.nova import utils as nova_utils
from rally.task import types
from rally.task import validation
class BrowbeatPlugin(nova_utils.NovaScenario, scenario.OpenStackScenario):
@types.convert(image={"type": "glance_image"},
flavor={"type": "nova_flavor"})
@validation.image_valid_on_flavor("flavor", "image")
@validation.required_openstack(users=True)
@scenario.configure(context={})
def nova_boot_persist(self, image, flavor, **kwargs):
self._boot_server(image, flavor)

View File

@ -0,0 +1,31 @@
{% set image_name = image_name or "cirros" %}
{% set flavor_name = flavor_name or "m1.xtiny" %}
{% set sla_max_avg_duration = sla_max_avg_duration or 60 %}
{% set sla_max_failure = sla_max_failure or 0 %}
{% set sla_max_seconds = sla_max_seconds or 60 %}
---
BrowbeatPlugin.nova_boot_persist:
-
args:
flavor:
name: '{{flavor_name}}'
image:
name: '{{image_name}}'
runner:
concurrency: {{concurrency}}
times: {{times}}
type: "constant"
context:
users:
tenants: 1
users_per_tenant: 8
quotas:
nova:
instances: -1
cores: -1
ram: -1
sla:
max_avg_duration: {{sla_max_avg_duration}}
max_seconds_per_iteration: {{sla_max_seconds}}
failure_rate:
max: {{sla_max_failure}}