Use Ocata Tempest rpm with new tempest workflow

* From ocata release, In RDO, the tempest rpm has changed it's
  source from redhat-openstack/tempest to upstream tempest as
  well as config_tempest script is moved to
  redhat-openstack/python-tempestconf.

* Remove tempest_source = rdo or upstream as it does not make
  sense since we are using tempest_format = venv or packages,
  As we select venv, for older release till newton upstream will
  be redhat-openstack/tempest and for ocata will be upstream
  tempest. If we select packages it will directly installs
  from RDO packages.

* Use tempest_format to packages

* Use ostestr for running tempest tests as upstream tempest
  run interface is currently unstable.

Change-Id: I177b32622500dab54896fda740080d07f5f65261
This commit is contained in:
Chandan Kumar 2017-02-22 16:01:18 +05:30
parent 77b5f1f582
commit a1aab3eacc
9 changed files with 181 additions and 87 deletions

View File

@ -114,7 +114,7 @@ prepare_tempest: false
# If `test_tempest` is `true`, run tempests tests, otherwise do not
# run them.
test_tempest: false
tempest_regex: ".*smoke"
tempest_regex: smoke
tempest_workers: 2
# If `test_ping` is `true`, run a simple ping test to validate the

View File

@ -14,11 +14,10 @@ Role Variables
* `tempest_undercloud`: false/true - whether to run tempest on installed undercloud
* `tempest_overcloud`: false/true - whether to run tempest on installed overcloud
* `tempest_source`: rdo/upstream - Where to take tempest sources from - RDO package or upstream git repo
* `tempest_format`: venv/packages - Which tempest installation to use - either install python virtual environment
with installed there python modules from requirements file, or to use installed with RDO RPM packages
* `tempest_log_file` - name of log file for tempest run
* `test_regex` - tests regular expression for testr run, i.e. ".*smoke"
* `test_regex` - tests regular expression for testr run, i.e. smoke
* `run_tempest`: false/true - to run tempest or not
* `skip_file_src`: path to skip tests file, set it empty if running without skip list: `skip_file_src=''`
* `tempest_workers`: int - how many parallel workers to run (default is number of cores)

View File

@ -6,7 +6,7 @@ public_net_pool_start: "{{ floating_ip_cidr|nthhost(100) }}"
public_net_pool_end: "{{ floating_ip_cidr|nthhost(120) }}"
public_net_gateway: "{{ floating_ip_cidr|nthhost(1) }}"
tempest_log_file: 'tempest_output.log'
test_regex: '.*smoke'
test_regex: smoke
public_net_name: public
public_network_type: flat
@ -22,8 +22,7 @@ tempest_config: true
tempest_overcloud: true
run_tempest: true
post_tempest: true
tempest_source: rdo # rdo or upstream
tempest_format: venv # venv or packages
tempest_format: packages # venv or packages
skip_file_src: "{{ release }}_skip_file.j2"
skip_file: skip_file
tempest_isolated: false

View File

@ -11,6 +11,13 @@ source {{ working_dir }}/overcloudrc
## ::
rm -rf {{ working_dir }}/tempest
# On doing tempest init workspace, it will create workspace directory
# as well as .workspace directory to store workspace information
# We need to delete .workspace directory otherwise tempest init failed
# to create tempest directory.
rm -rf {{ working_dir }}/.tempest
rm -rf {{ working_dir }}/tempest_git
rm -rf {{ working_dir }}/python-tempestconf
## * Clean up network if it exists from previous run
## ::
@ -57,53 +64,75 @@ openstack role show heat_stack_owner > /dev/null || openstack role create heat_s
## * Generate a tempest configuration
## ::
sudo yum install -y libffi-devel openssl-devel python-virtualenv gcc
{% if tempest_source == "rdo" %}
{% if tempest_format == "packages" %}
mkdir {{ working_dir }}/tempest
{% if tempest_format == "venv" %}
{% if release in ['mitaka','newton'] %}
# Clone all the git related stuff in a seperate directory
git clone https://github.com/redhat-openstack/tempest {{ working_dir }}/tempest_git
{% else %}
git clone https://github.com/openstack/tempest {{ working_dir }}/tempest_git
{% endif %}
# Install required dependency for creating venv
sudo yum install -y libffi-devel openssl-devel python-virtualenv gcc
# Create .venv in tempest_git directory with --system-site-packages to access tempest plugins
virtualenv --system-site-packages {{ working_dir }}/tempest_git/.venv
{{ working_dir }}/tempest_git/tools/with_venv.sh pip install -U pip
{{ working_dir }}/tempest_git/tools/with_venv.sh pip install -U setuptools
{{ working_dir }}/tempest_git/tools/with_venv.sh pip install {{ working_dir }}/tempest_git
# Create Tempest Workspace
cd {{ working_dir }}/tempest
{% if release in ['mitaka','newton'] %}
{{ working_dir }}/tempest_git/tools/configure-tempest-directory
{% else %}
{{ working_dir }}/tempest_git/tools/with_venv.sh tempest init {{ working_dir }}/tempest
{% endif %}
# Create Tempest Workspace from tempest rdo package
{% elif tempest_format == "packages" %}
# Install Tempest Package
sudo yum -y install openstack-tempest
{% if release in ['mitaka','newton'] %}
cd {{ working_dir }}/tempest
/usr/share/openstack-tempest-*/tools/configure-tempest-directory
{% elif tempest_format == "venv" %}
git clone https://github.com/redhat-openstack/tempest {{ working_dir }}/tempest
{% else %}
tempest init {{ working_dir }}/tempest
{% endif %}
{% endif %}
# Install OpenStack Services Tempest plugin
{% if release != "mitaka" %}
# FIXME(chkumar246): Install tempest plugin from package currently then switch to install_test_packages script
sudo yum -y install python-ceilometer-tests python-zaqar-tests python-ironic-inspector-tests python-gnocchi-tests \
python-aodh-tests python-nova-tests python-mistral-tests python-heat-tests python-keystone-tests \
python-ironic-tests python-glance-tests python-swift-tests python-neutron-tests python-cinder-tests \
{% endif %}
# Generate tempest configuration files
{% if release in ['mitaka','newton'] %}
export TEMPESTCONF="{{ working_dir }}/tempest/tools/config_tempest.py"
{% else %}
{% if tempest_format == "venv" %}
# Install python-tempestconf
git clone https://github.com/redhat-openstack/python-tempestconf {{ working_dir }}/python-tempestconf
{{ working_dir }}/tempest_git/tools/with_venv.sh pip install {{ working_dir }}/python-tempestconf
export TEMPESTCONF="{{ working_dir }}/tempest_git/tools/with_venv.sh discover-tempest-config"
{% elif tempest_format == "packages" %}
# Install python-tempestconf if not installed
sudo yum -y install python-tempestconf
export TEMPESTCONF="/usr/bin/discover-tempest-config"
{% endif %}
{% endif %}
# Go to Tempest Workspace
cd {{ working_dir }}/tempest
virtualenv --no-site-packages .venv
# Fix version for setuptools due https://github.com/pypa/setuptools/issues/945
./tools/with_venv.sh pip install -U pip setuptools==33.1.1
./tools/with_venv.sh pip install junitxml httplib2 -r test-requirements.txt -r requirements.txt
{% endif %}
{% elif tempest_source == "upstream" %}
git clone https://github.com/openstack/tempest {{ working_dir }}/tempest
cd {{ working_dir }}/tempest
virtualenv --no-site-packages .venv
# Fix version for setuptools due https://github.com/pypa/setuptools/issues/945
./tools/with_venv.sh pip install -U pip setuptools==33.1.1
./tools/with_venv.sh pip install junitxml httplib2 -r test-requirements.txt -r requirements.txt
cp /usr/share/openstack-tempest-*/tools/config_tempest.py ./tools/
cp /usr/share/openstack-tempest-*/tools/run-tests.sh ./tools/
cp /usr/share/openstack-tempest-*/tools/tests2skip.py ./tools/
cp /usr/share/openstack-tempest-*/tempest/common/api_discovery.py ./tempest/common/
cp /usr/share/openstack-tempest-*/etc/default-overrides.conf ./etc/
{% endif %}
{% if tempest_undercloud %}
## .. note:: config_tempest assumes that Cinder is installed and accessible. Cinder is
## not installed on the undercloud. Remove unneeded lines to prevent the tool
## from bawking upon execution
## ::
sed --in-place "/'volume'\: 'cinder',/d" tools/config_tempest.py
sed --in-place "/'volume'\: \['v1', 'v2'\]/d" tools/config_tempest.py
{% endif %}
{% if tempest_format == "venv" %}./tools/with_venv.sh {% endif %}./tools/config_tempest.py --out etc/tempest.conf \
# Generate Tempest Config file using python-tempestconf
${TEMPESTCONF} --out etc/tempest.conf \
--network-id $public_net_id \
--deployer-input ~/{{ tempest_deployer_input_file }} \
--debug --create \
identity.uri $OS_AUTH_URL \
identity.admin_password $OS_PASSWORD \
identity.admin_username $OS_USERNAME \
network.tenant_network_cidr {{ tenant_network_cidr }} \
object-storage.operator_role swiftoperator \
compute.allow_tenant_isolation true \

View File

@ -1,38 +1,44 @@
# rhbz1304933
-tempest.api.telemetry.test_telemetry_notification_api
tempest.api.telemetry.test_telemetry_notification_api
# rhbz1266947
-tempest.api.identity.*v3
tempest.api.identity.*v3
# rhbz1357667
-tempest.api.data_processing
tempest.api.data_processing
# lpbug 1605654
-tempest.scenario.test_network_basic_ops.TestNetworkBasicOps
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps
# rhbz1378989
-tempest.api.network.test_ports.PortsIpV6TestJSON
-tempest.api.network.test_ports.PortsTestJSON
tempest.api.network.test_ports.PortsIpV6TestJSON
tempest.api.network.test_ports.PortsTestJSON
# rhbz1379829
-tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON
tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON
#rhbz1380146
-tempest.api.orchestration.stacks.test_resource_types.ResourceTypesTest
tempest.api.orchestration.stacks.test_resource_types.ResourceTypesTest
#rhbz1380145
-tempest.api.identity.admin.v2.test_services.ServicesTestJSON
tempest.api.identity.admin.v2.test_services.ServicesTestJSON
#rhbz1380187
-tempest.api.network.test_routers.RoutersIpV6Test.test_add_multiple_router_interfaces
tempest.api.network.test_routers.RoutersIpV6Test.test_add_multiple_router_interfaces
# TripleO does not deploy Barbican by default, which is needed for this test to pass
-tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_cryptsetup
-tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_luks
tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_cryptsetup
tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_luks
#rhbz1411690
-tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_cross_tenant_traffic
-tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_multiple_security_groups
tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_cross_tenant_traffic
tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_multiple_security_groups
{% if not enable_cinder_backup|default(false)|bool %}
# Cinder backup is not enabled by default in tripleo only in particular
# scenarios
-tempest.api.volume.admin.test_volumes_backup.VolumesBackupsAdminV1Test
-tempest.api.volume.admin.test_volumes_backup.VolumesBackupsAdminV2Test
-tempest.api.volume.test_volumes_backup.VolumesBackupsV1Test
-tempest.api.volume.test_volumes_backup.VolumesBackupsV2Test
tempest.api.volume.admin.test_volumes_backup.VolumesBackupsAdminV1Test
tempest.api.volume.admin.test_volumes_backup.VolumesBackupsAdminV2Test
tempest.api.volume.test_volumes_backup.VolumesBackupsV1Test
tempest.api.volume.test_volumes_backup.VolumesBackupsV2Test
{% endif %}
# Glance isn't populating metadata definition database LP1664995
-tempest.api.image.v2.test_images_metadefs_namespaces.MetadataNamespacesTest.test_basic_metadata_definition_namespaces
-tempest.api.image.v2.test_images_metadefs_resource_types.MetadataResourceTypesTest.test_basic_meta_def_resource_type_association
-tempest.api.image.v2.test_images_metadefs_namespace_properties.MetadataNamespacePropertiesTest.test_basic_meta_def_namespace_property
tempest.api.image.v2.test_images_metadefs_namespaces.MetadataNamespacesTest.test_basic_metadata_definition_namespaces
tempest.api.image.v2.test_images_metadefs_resource_types.MetadataResourceTypesTest.test_basic_meta_def_resource_type_association
tempest.api.image.v2.test_images_metadefs_namespace_properties.MetadataNamespacePropertiesTest.test_basic_meta_def_namespace_property
# Skip Mistral tests as it needs to use mistral v2 endpoints
# FIXME(chkumar246): It needs to be fixed in a new patch
mistral_tempest_tests.tests
# Skip Ceilometer tests as it required gnocchi to be configured
# FIXME(chkumar246): It needs to be fixed in a new patch
ceilometer.tests.tempest.api.test_telemetry_notification_api.TelemetryNotificationAPITest.test_check_glance_v1_notifications
ceilometer.tests.tempest.api.test_telemetry_notification_api.TelemetryNotificationAPITest.test_check_glance_v2_notifications

View File

@ -1,12 +1,12 @@
# old bug rhbz1272289
-tempest.scenario.test_volume_boot_pattern
-tempest.api.volume.test_volumes_get
tempest.scenario.test_volume_boot_pattern
tempest.api.volume.test_volumes_get
# rhbz1266947
-tempest.api.identity.*v3
tempest.api.identity.*v3
#NEED BUGS or RETEST or RECONFIG
-tempest.api.compute.servers.test_attach_interfaces.AttachInterfacesTestJSON.test_add_remove_fixed_ip
-tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_subnet_id
-tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops
tempest.api.compute.servers.test_attach_interfaces.AttachInterfacesTestJSON.test_add_remove_fixed_ip
tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_subnet_id
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops
# TripleO does not deploy Barbican by default, which is needed for this test to pass
-tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_cryptsetup
-tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_luks
tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_cryptsetup
tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_luks

View File

@ -1,19 +1,25 @@
# rhbz1304933
-tempest.api.telemetry.test_telemetry_notification_api
tempest.api.telemetry.test_telemetry_notification_api
# old bug rhbz1272289
-tempest.scenario.test_volume_boot_pattern
-tempest.api.volume.test_volumes_get
tempest.scenario.test_volume_boot_pattern
tempest.api.volume.test_volumes_get
# rhbz1266947
-tempest.api.identity.*v3
tempest.api.identity.*v3
# rhbz1357667
-tempest.api.data_processing
tempest.api.data_processing
# lpbug 1605654
-tempest.scenario.test_network_basic_ops.TestNetworkBasicOps
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps
# rhbz1386421
-tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON
tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON
# TripleO does not deploy Barbican by default, which is needed for this test to pass
-tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_cryptsetup
-tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_luks
tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_cryptsetup
tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_luks
# rhbz1411690
-tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_cross_tenant_traffic
-tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_multiple_security_groups
tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_cross_tenant_traffic
tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_multiple_security_groups
# Skip Mistral tests as Mistral is not configured on Newton
mistral_tempest_tests.tests
# Skip Ceilometer tests as it required gnocchi to be configured
# FIXME(chkumar246): It needs to be fixed in a new patch
ceilometer.tests.tempest.api.test_telemetry_notification_api.TelemetryNotificationAPITest.test_check_glance_v1_notifications
ceilometer.tests.tempest.api.test_telemetry_notification_api.TelemetryNotificationAPITest.test_check_glance_v2_notifications

View File

@ -0,0 +1,44 @@
# rhbz1304933
tempest.api.telemetry.test_telemetry_notification_api
# rhbz1266947
tempest.api.identity.*v3
# rhbz1357667
tempest.api.data_processing
# lpbug 1605654
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps
# rhbz1378989
tempest.api.network.test_ports.PortsIpV6TestJSON
tempest.api.network.test_ports.PortsTestJSON
# rhbz1379829
tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON
#rhbz1380146
tempest.api.orchestration.stacks.test_resource_types.ResourceTypesTest
#rhbz1380145
tempest.api.identity.admin.v2.test_services.ServicesTestJSON
#rhbz1380187
tempest.api.network.test_routers.RoutersIpV6Test.test_add_multiple_router_interfaces
# TripleO does not deploy Barbican by default, which is needed for this test to pass
tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_cryptsetup
tempest.scenario.test_encrypted_cinder_volumes.TestEncryptedCinderVolumes.test_encrypted_cinder_volumes_luks
#rhbz1411690
tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_cross_tenant_traffic
tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_multiple_security_groups
{% if not enable_cinder_backup|default(false)|bool %}
# Cinder backup is not enabled by default in tripleo only in particular
# scenarios
tempest.api.volume.admin.test_volumes_backup.VolumesBackupsAdminV1Test
tempest.api.volume.admin.test_volumes_backup.VolumesBackupsAdminV2Test
tempest.api.volume.test_volumes_backup.VolumesBackupsV1Test
tempest.api.volume.test_volumes_backup.VolumesBackupsV2Test
{% endif %}
# Glance isn't populating metadata definition database LP1664995
tempest.api.image.v2.test_images_metadefs_namespaces.MetadataNamespacesTest.test_basic_metadata_definition_namespaces
tempest.api.image.v2.test_images_metadefs_resource_types.MetadataResourceTypesTest.test_basic_meta_def_resource_type_association
tempest.api.image.v2.test_images_metadefs_namespace_properties.MetadataNamespacePropertiesTest.test_basic_meta_def_namespace_property
# Skip Mistral tests as it needs to use mistral v2 endpoints
# FIXME(chkumar246): It needs to be fixed in a new patch
mistral_tempest_tests.tests
# Skip Ceilometer tests as it required gnocchi to be configured
# FIXME(chkumar246): It needs to be fixed in a new patch
ceilometer.tests.tempest.api.test_telemetry_notification_api.TelemetryNotificationAPITest.test_check_glance_v1_notifications
ceilometer.tests.tempest.api.test_telemetry_notification_api.TelemetryNotificationAPITest.test_check_glance_v2_notifications

View File

@ -5,9 +5,20 @@
## ::
{% if tempest_format == "venv" %}./tools/with_venv.sh {% endif %}
./tools/run-tests.sh {{ test_regex }} {% if skip_file_src != '' %}--skip-file {{ working_dir }}/{{ skip_file }}{% endif %}
{% if tempest_workers is defined %} --concurrency={{ tempest_workers }} {% endif %}
# FIXME(chkumar246): Tempest run interface is unstable till that use ostestr for
# running tests: https://bugs.launchpad.net/tempest/+bug/1669455
{% if tempest_format == "venv" %}
export OSTESTR='{{ working_dir }}/tempest_git/tools/with_venv.sh ostestr --regex'
#List Tests
{{ working_dir }}/tempest_git/tools/with_venv.sh ostestr -l
{% elif tempest_format == "packages" %}
export OSTESTR='ostestr --regex'
ostestr -l
{% endif %}
$OSTESTR '\[.*\b{{ test_regex }}\b.*\]' {% if skip_file_src != '' %}--blacklist_file={{ working_dir }}/{{ skip_file }}{% endif %}
{% if tempest_workers is defined %} --concurrency {{ tempest_workers }} {% endif %}
{% if tempest_isolated|bool %} --isolated {% endif %}
{% if tempest_tests_file is defined %} --load-list={{ tempest_tests_file }} {% endif %}
{% if tempest_until_failure|bool %} --until-failure {% endif %}