summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruce Ashfield <bruce.ashfield@windriver.com>2013-11-14 23:10:02 -0500
committerBruce Ashfield <bruce.ashfield@windriver.com>2013-11-25 15:25:38 -0500
commit0f736029c73ae9b921ef67490d2086520e2e2c28 (patch)
tree7ba8d2815c2084bebc99f61d593600ccbd056d38
parentd36d9a4408b2432175ce824b39952f732ac156d1 (diff)
downloadmeta-cloud-services-0f736029c73ae9b921ef67490d2086520e2e2c28.tar.gz
tempest: introduce the openstack unit test framework
Introduce the OpenStack test framework "tempest". This initial integration makes the framework available, but does not enable it in any images by default, nor does it stage the tests for execution. Subsequent updates will modify this baseline for test execution and reporting. Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
-rw-r--r--meta-openstack/recipes-extended/tempest/tempest/logging.conf46
-rw-r--r--meta-openstack/recipes-extended/tempest/tempest/tempest.conf438
-rw-r--r--meta-openstack/recipes-extended/tempest/tempest_git.bb93
3 files changed, 577 insertions, 0 deletions
diff --git a/meta-openstack/recipes-extended/tempest/tempest/logging.conf b/meta-openstack/recipes-extended/tempest/tempest/logging.conf
new file mode 100644
index 0000000..3b468f1
--- /dev/null
+++ b/meta-openstack/recipes-extended/tempest/tempest/logging.conf
@@ -0,0 +1,46 @@
1[loggers]
2keys=root,tempest,tempest_stress
3
4[handlers]
5keys=file,syslog,devel
6
7[formatters]
8keys=default,tests
9
10[logger_root]
11level=NOTSET
12handlers=syslog
13
14[logger_tempest]
15level=DEBUG
16handlers=file
17qualname=tempest
18
19[logger_tempest_stress]
20level=INFO
21handlers=file,devel
22qualname=tempest.stress
23
24[handler_file]
25class=FileHandler
26level=DEBUG
27formatter=tests
28args=('tempest.log', 'w')
29
30[handler_syslog]
31class=handlers.SysLogHandler
32level=ERROR
33formatter = default
34args = ('/dev/log', handlers.SysLogHandler.LOG_USER)
35
36[handler_devel]
37class=StreamHandler
38level=DEBUG
39formatter=default
40args=(sys.stdout,)
41
42[formatter_default]
43format=%(name)s: %(levelname)s: %(message)s
44
45[formatter_tests]
46class = tempest.common.log.TestsFormatter
diff --git a/meta-openstack/recipes-extended/tempest/tempest/tempest.conf b/meta-openstack/recipes-extended/tempest/tempest/tempest.conf
new file mode 100644
index 0000000..aebda69
--- /dev/null
+++ b/meta-openstack/recipes-extended/tempest/tempest/tempest.conf
@@ -0,0 +1,438 @@
1[DEFAULT]
2log_config = /etc/tempest/logging.conf
3
4# disable logging to the stderr
5use_stderr = False
6
7# log file
8log_file = tempest.log
9
10# lock/semaphore base directory
11lock_path=/tmp
12
13default_log_levels=tempest.stress=INFO,amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,keystone=INFO,eventlet.wsgi.server=WARN
14
15[identity]
16# This section contains configuration options that a variety of Tempest
17# test clients use when authenticating with different user/tenant
18# combinations
19
20# The type of endpoint for a Identity service. Unless you have a
21# custom Keystone service catalog implementation, you probably want to leave
22# this value as "identity"
23catalog_type = identity
24# Ignore SSL certificate validation failures? Use when in testing
25# environments that have self-signed SSL certs.
26disable_ssl_certificate_validation = False
27# URL for where to find the OpenStack Identity API endpoint (Keystone)
28uri = http://127.0.0.1:5000/v2.0/
29# URL for where to find the OpenStack V3 Identity API endpoint (Keystone)
30uri_v3 = http://127.0.0.1:5000/v3/
31# The identity region. Also used as the other services' region name unless
32# they are set explicitly.
33region = RegionOne
34
35# This should be the username of a user WITHOUT administrative privileges
36username = demo
37# The above non-administrative user's password
38password = secret
39# The above non-administrative user's tenant name
40tenant_name = demo
41
42# This should be the username of an alternate user WITHOUT
43# administrative privileges
44alt_username = alt_demo
45# The above non-administrative user's password
46alt_password = secret
47# The above non-administrative user's tenant name
48alt_tenant_name = alt_demo
49
50# This should be the username of a user WITH administrative privileges
51admin_username = admin
52# The above administrative user's password
53admin_password = secret
54# The above administrative user's tenant name
55admin_tenant_name = admin
56
57# The role that is required to administrate keystone.
58admin_role = admin
59
60[compute]
61# This section contains configuration options used when executing tests
62# against the OpenStack Compute API.
63
64# Allows test cases to create/destroy tenants and users. This option
65# enables isolated test cases and better parallel execution,
66# but also requires that OpenStack Identity API admin credentials
67# are known.
68allow_tenant_isolation = true
69
70# Allows test cases to create/destroy tenants and users. This option
71# enables isolated test cases and better parallel execution,
72# but also requires that OpenStack Identity API admin credentials
73# are known.
74allow_tenant_reuse = true
75
76# Reference data for tests. The ref and ref_alt should be
77# distinct images/flavors.
78image_ref = {$IMAGE_ID}
79image_ref_alt = {$IMAGE_ID_ALT}
80flavor_ref = 1
81flavor_ref_alt = 2
82
83# User name used to authenticate to an instance
84image_ssh_user = root
85
86# Password used to authenticate to an instance
87image_ssh_password = password
88
89# User name used to authenticate to an instance using the alternate image
90image_alt_ssh_user = root
91
92# Password used to authenticate to an instance using the alternate image
93image_alt_ssh_password = password
94
95# Number of seconds to wait while looping to check the status of an
96# instance that is building.
97build_interval = 10
98
99# Number of seconds to time out on waiting for an instance
100# to build or reach an expected status
101build_timeout = 600
102
103# Run additional tests that use SSH for instance validation?
104# This requires the instances be routable from the host
105# executing the tests
106run_ssh = false
107
108# Name of a user used to authenticate to an instance.
109ssh_user = cirros
110
111# Visible fixed network name
112fixed_network_name = private
113
114# Network id used for SSH (public, private, etc)
115network_for_ssh = public
116
117# IP version of the address used for SSH
118ip_version_for_ssh = 4
119
120# Number of seconds to wait to ping to an instance
121ping_timeout = 60
122
123# Number of seconds to wait to authenticate to an instance
124ssh_timeout = 300
125
126# Additinal wait time for clean state, when there is
127# no OS-EXT-STS extension availiable
128ready_wait = 0
129
130# Number of seconds to wait for output from ssh channel
131ssh_channel_timeout = 60
132
133# Dose the SSH uses Floating IP?
134use_floatingip_for_ssh = True
135
136# The type of endpoint for a Compute API service. Unless you have a
137# custom Keystone service catalog implementation, you probably want to leave
138# this value as "compute"
139catalog_type = compute
140
141# The name of a region for compute. If empty or commented-out, the value of
142# identity.region is used instead. If no such region is found in the service
143# catalog, the first found one is used.
144#region = RegionOne
145
146# Does the Compute API support creation of images?
147create_image_enabled = true
148
149# For resize to work with libvirt/kvm, one of the following must be true:
150# Single node: allow_resize_to_same_host=True must be set in nova.conf
151# Cluster: the 'nova' user must have scp access between cluster nodes
152resize_available = true
153
154# Does the compute API support changing the admin password?
155change_password_available=true
156
157# Run live migration tests (requires 2 hosts)
158live_migration_available = false
159
160# Use block live migration (Otherwise, non-block migration will be
161# performed, which requires XenServer pools in case of using XS)
162use_block_migration_for_live_migration = false
163
164# Supports iSCSI block migration - depends on a XAPI supporting
165# relax-xsm-sr-check
166block_migrate_supports_cinder_iscsi = false
167
168# When set to false, disk config tests are forced to skip
169disk_config_enabled = true
170
171# When set to false, flavor extra data tests are forced to skip
172flavor_extra_enabled = true
173
174# Expected first device name when a volume is attached to an instance
175volume_device_name = vdb
176
177[compute-admin]
178# This should be the username of a user WITH administrative privileges
179# If not defined the admin user from the identity section will be used
180username =
181# The above administrative user's password
182password =
183# The above administrative user's tenant name
184tenant_name =
185
186[image]
187# This section contains configuration options used when executing tests
188# against the OpenStack Images API
189
190# The type of endpoint for an Image API service. Unless you have a
191# custom Keystone service catalog implementation, you probably want to leave
192# this value as "image"
193catalog_type = image
194
195# The name of a region for image. If empty or commented-out, the value of
196# identity.region is used instead. If no such region is found in the service
197# catalog, the first found one is used.
198#region = RegionOne
199
200# The version of the OpenStack Images API to use
201api_version = 1
202
203# HTTP image to use for glance http image testing
204http_image = http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz
205
206[network]
207# This section contains configuration options used when executing tests
208# against the OpenStack Network API.
209
210# Version of the Neutron API
211api_version = v1.1
212# Catalog type of the Neutron Service
213catalog_type = network
214
215# The name of a region for network. If empty or commented-out, the value of
216# identity.region is used instead. If no such region is found in the service
217# catalog, the first found one is used.
218#region = RegionOne
219
220# A large private cidr block from which to allocate smaller blocks for
221# tenant networks.
222tenant_network_cidr = 10.100.0.0/16
223
224# The mask bits used to partition the tenant block.
225tenant_network_mask_bits = 24
226
227# If tenant networks are reachable, connectivity checks will be
228# performed directly against addresses on those networks.
229tenant_networks_reachable = false
230
231# Id of the public network that provides external connectivity.
232public_network_id = {$PUBLIC_NETWORK_ID}
233
234# Id of a shared public router that provides external connectivity.
235# A shared public router would commonly be used where IP namespaces
236# were disabled. If namespaces are enabled, it would be preferable
237# for each tenant to have their own router.
238public_router_id = {$PUBLIC_ROUTER_ID}
239
240
241[volume]
242# This section contains the configuration options used when executing tests
243# against the OpenStack Block Storage API service
244
245# The type of endpoint for a Cinder or Block Storage API service.
246# Unless you have a custom Keystone service catalog implementation, you
247# probably want to leave this value as "volume"
248catalog_type = volume
249# The name of a region for volume. If empty or commented-out, the value of
250# identity.region is used instead. If no such region is found in the service
251# catalog, the first found one is used.
252#region = RegionOne
253# The disk format to use when copying a volume to image
254disk_format = raw
255# Number of seconds to wait while looping to check the status of a
256# volume that is being made available
257build_interval = 10
258# Number of seconds to time out on waiting for a volume
259# to be available or reach an expected status
260build_timeout = 300
261# Runs Cinder multi-backend tests (requires 2 backends declared in cinder.conf)
262# They must have different volume_backend_name (backend1_name and backend2_name
263# have to be different)
264multi_backend_enabled = false
265backend1_name = BACKEND_1
266backend2_name = BACKEND_2
267# Protocol and vendor of volume backend to target when testing volume-types.
268# You should update to reflect those exported by configured backend driver.
269storage_protocol = iSCSI
270vendor_name = Open Source
271
272[object-storage]
273# This section contains configuration options used when executing tests
274# against the OpenStack Object Storage API.
275
276# You can configure the credentials in the compute section
277
278# The type of endpoint for an Object Storage API service. Unless you have a
279# custom Keystone service catalog implementation, you probably want to leave
280# this value as "object-store"
281catalog_type = object-store
282
283# The name of a region for object storage. If empty or commented-out, the
284# value of identity.region is used instead. If no such region is found in
285# the service catalog, the first found one is used.
286#region = RegionOne
287
288# Number of seconds to time on waiting for a container to container
289# synchronization complete
290container_sync_timeout = 120
291# Number of seconds to wait while looping to check the status of a
292# container to container synchronization
293container_sync_interval = 5
294# Set to True if the Account Quota middleware is enabled
295accounts_quotas_available = True
296# Set to True if the Container Quota middleware is enabled
297container_quotas_available = True
298
299# Set operator role for tests that require creating a container
300operator_role = Member
301
302[boto]
303# This section contains configuration options used when executing tests
304# with boto.
305
306# EC2 URL
307ec2_url = http://localhost:8773/services/Cloud
308# S3 URL
309s3_url = http://localhost:3333
310
311# Use keystone ec2-* command to get those values for your test user and tenant
312aws_access =
313aws_secret =
314
315# Image materials for S3 upload
316# ALL content of the specified directory will be uploaded to S3
317s3_materials_path = /opt/stack/devstack/files/images/s3-materials/cirros-0.3.1
318
319# The manifest.xml files, must be in the s3_materials_path directory
320# Subdirectories not allowed!
321# The filenames will be used as a Keys in the S3 Buckets
322
323# ARI Ramdisk manifest. Must be in the above s3_materials_path
324ari_manifest = cirros-0.3.1-x86_64-initrd.manifest.xml
325
326# AMI Machine Image manifest. Must be in the above s3_materials_path
327ami_manifest = cirros-0.3.1-x86_64-blank.img.manifest.xml
328
329# AKI Kernel Image manifest, Must be in the above s3_materials_path
330aki_manifest = cirros-0.3.1-x86_64-vmlinuz.manifest.xml
331
332# Instance type
333instance_type = m1.tiny
334
335# TCP/IP connection timeout
336http_socket_timeout = 5
337
338# Number of retries actions on connection or 5xx error
339num_retries = 1
340
341# Status change wait timout
342build_timeout = 120
343
344# Status change wait interval
345build_interval = 1
346
347[orchestration]
348# The type of endpoint for an Orchestration API service. Unless you have a
349# custom Keystone service catalog implementation, you probably want to leave
350# this value as "orchestration"
351catalog_type = orchestration
352
353# The name of a region for orchestration. If empty or commented-out, the value
354# of identity.region is used instead. If no such region is found in the service
355# catalog, the first found one is used.
356#region = RegionOne
357
358# Status change wait interval
359build_interval = 1
360
361# Status change wait timout. This may vary across environments as some some
362# tests spawn full VMs, which could be slow if the test is already in a VM.
363build_timeout = 300
364
365# Instance type for tests. Needs to be big enough for a
366# full OS plus the test workload
367instance_type = m1.micro
368
369# Name of heat-cfntools enabled image to use when launching test instances
370# If not specified, tests that spawn instances will not run
371#image_ref = ubuntu-vm-heat-cfntools
372
373# Name of existing keypair to launch servers with. The default is not to specify
374# any key, which will generate a keypair for each test class
375#keypair_name = heat_key
376
377[dashboard]
378# URL where to find the dashboard home page
379dashboard_url = 'http://localhost/'
380
381# URL where to submit the login form
382login_url = 'http://localhost/auth/login/'
383
384[scenario]
385# Directory containing image files
386img_dir = /opt/stack/new/devstack/files/images/cirros-0.3.1-x86_64-uec
387
388# AMI image file name
389ami_img_file = cirros-0.3.1-x86_64-blank.img
390
391# ARI image file name
392ari_img_file = cirros-0.3.1-x86_64-initrd
393
394# AKI image file name
395aki_img_file = cirros-0.3.1-x86_64-vmlinuz
396
397# ssh username for the image file
398ssh_user = cirros
399
400# specifies how many resources to request at once. Used for large operations
401# testing."
402large_ops_number = 0
403
404[cli]
405# Enable cli tests
406enabled = True
407# directory where python client binaries are located
408cli_dir = /usr/local/bin
409# Number of seconds to wait on a CLI timeout
410timeout = 15
411
412[service_available]
413# Whether or not cinder is expected to be available
414cinder = True
415# Whether or not neutron is expected to be available
416neutron = false
417# Whether or not glance is expected to be available
418glance = True
419# Whether or not swift is expected to be available
420swift = True
421# Whether or not nova is expected to be available
422nova = True
423# Whether or not Heat is expected to be available
424heat = false
425# Whether or not horizon is expected to be available
426horizon = True
427
428[stress]
429# Maximum number of instances to create during test
430max_instances = 32
431# Time (in seconds) between log file error checks
432log_check_interval = 60
433# The default number of threads created while stress test
434default_thread_number_per_action=4
435
436[debug]
437# Enable diagnostic commands
438enable = True
diff --git a/meta-openstack/recipes-extended/tempest/tempest_git.bb b/meta-openstack/recipes-extended/tempest/tempest_git.bb
new file mode 100644
index 0000000..250e541
--- /dev/null
+++ b/meta-openstack/recipes-extended/tempest/tempest_git.bb
@@ -0,0 +1,93 @@
1DESCRIPTION = "The OpenStack Integration Test Suite"
2HOMEPAGE = "https://launchpad.net/tempest"
3SECTION = "devel/python"
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=1dece7821bf3fd70fe1309eaa37d52a2"
6
7PR = "r0"
8SRCNAME = "tempest"
9
10SRC_URI = "git://github.com/openstack/${SRCNAME}.git;branch=stable/havana \
11 file://tempest.conf \
12 file://logging.conf \
13"
14
15SRCREV="6273339e2da725b01560b6a2db11a3bf7a6659d7"
16PV="2013.2+git${SRCPV}"
17S = "${WORKDIR}/git"
18
19do_install_append() {
20 TEMPLATE_CONF_DIR=${S}${sysconfdir}/
21 TEMPEST_CONF_DIR=${D}${sysconfdir}/${SRCNAME}
22
23 sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" -i ${WORKDIR}/tempest.conf
24 sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${WORKDIR}/tempest.conf
25 sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" -i ${WORKDIR}/tempest.conf
26
27 sed -e "s:%DB_USER%:${DB_USER}:g" -i ${WORKDIR}/tempest.conf
28 sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${WORKDIR}/tempest.conf
29
30 sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${WORKDIR}/tempest.conf
31 sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${WORKDIR}/tempest.conf
32
33 sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${WORKDIR}/tempest.conf
34 sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${WORKDIR}/tempest.conf
35
36 sed -e "s:%ADMIN_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${WORKDIR}/tempest.conf
37 sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" -i ${WORKDIR}/tempest.conf
38
39 install -d ${TEMPEST_CONF_DIR}
40 install -m 600 ${WORKDIR}/tempest.conf ${TEMPEST_CONF_DIR}
41 install -m 600 ${WORKDIR}/logging.conf ${TEMPEST_CONF_DIR}
42 install -m 600 ${TEMPLATE_CONF_DIR}/*.yaml ${TEMPEST_CONF_DIR}
43}
44
45pkg_postinst_${SRCNAME}() {
46 if [ "x$D" != "x" ]; then
47 exit 1
48 fi
49
50 # This is to make sure postgres is configured and running
51 if ! pidof postmaster > /dev/null; then
52 /etc/init.d/postgresql-init
53 /etc/init.d/postgresql start
54 sleep 5
55 fi
56}
57
58inherit setuptools identity hosts
59
60# PACKAGES += "${SRCNAME}-common ${SRCNAME}-api ${SRCNAME}-api-cfn ${SRCNAME}-engine"
61
62FILES_${PN} = "${libdir}/* \
63 ${sysconfdir}/* \
64"
65
66RDEPENDS_${PN} += " \
67 python-testrepository \
68 python-fixtures \
69 python-keyring \
70 python-glanceclient \
71 python-keystoneclient \
72 python-swiftclient \
73 python-novaclient \
74 python-cinderclient \
75 python-heatclient \
76 python-pbr \
77 python-anyjson \
78 python-nose \
79 python-httplib2 \
80 python-jsonschema \
81 python-testtools \
82 python-lxml \
83 python-boto \
84 python-paramiko \
85 python-netaddr \
86 python-testresources \
87 python-oslo.config \
88 python-eventlet \
89 python-six \
90 python-iso8601 \
91 python-mimeparse \
92 "
93