Merge "Add functional test for octavia lbaas"
diff --git a/.zuul.yaml b/.zuul.yaml
index 61c94c3..c9aea1b 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -1,3 +1,20 @@
+- job:
+ name: heat-functional-convg-queens
+ parent: heat-functional-convg-mysql-lbaasv2
+ override-checkout: stable/queens
+
+- job:
+ name: heat-functional-orig-queens
+ parent: heat-functional-orig-mysql-lbaasv2
+ override-checkout: stable/queens
+
+- job:
+ name: heat-functional-convg-queens-py35
+ parent: heat-functional-convg-mysql-lbaasv2-py35
+ override-checkout: stable/queens
+
+
+
- project:
check:
jobs:
@@ -5,6 +22,9 @@
- heat-functional-convg-mysql-lbaasv2
- heat-functional-convg-mysql-lbaasv2-non-apache
- heat-functional-convg-mysql-lbaasv2-py35
+ - heat-functional-convg-queens
+ - heat-functional-convg-queens-py35
+ - heat-functional-orig-queens
gate:
jobs:
- heat-functional-orig-mysql-lbaasv2
diff --git a/heat_tempest_plugin/common/test.py b/heat_tempest_plugin/common/test.py
index f75385f..a4c0edf 100644
--- a/heat_tempest_plugin/common/test.py
+++ b/heat_tempest_plugin/common/test.py
@@ -110,6 +110,22 @@
return decorator
+def requires_feature(feature):
+ '''Decorator for tests requring specific feature.
+
+ The decorated test will be skipped when a specific feature is disabled.
+ '''
+ def decorator(test_method):
+ features_group = getattr(config.CONF, 'heat_features_enabled', None)
+ if not features_group:
+ return test_method
+ feature_enabled = config.CONF.heat_features_enabled.get(feature, False)
+ skipper = testtools.skipUnless(feature_enabled,
+ "%s - Feature not enabled." % feature)
+ return skipper(test_method)
+ return decorator
+
+
class HeatIntegrationTest(testtools.testcase.WithAttributes,
testscenarios.WithScenarios,
testtools.TestCase):
diff --git a/heat_tempest_plugin/config.py b/heat_tempest_plugin/config.py
index d658a98..e4c7b47 100644
--- a/heat_tempest_plugin/config.py
+++ b/heat_tempest_plugin/config.py
@@ -156,7 +156,18 @@
]
+heat_features_group = cfg.OptGroup(
+ name='heat_features_enabled',
+ title="Enabled Orchestration Service Features")
+
+HeatFeaturesGroup = [
+ cfg.BoolOpt('stack_cancel',
+ default=False,
+ help="If false, skip stack cancel tests")
+]
+
def list_opts():
yield heat_group.name, HeatGroup
+ yield heat_features_group.name, HeatFeaturesGroup
yield service_available_group.name, ServiceAvailableGroup
diff --git a/heat_tempest_plugin/plugin.py b/heat_tempest_plugin/plugin.py
index acf4fc7..6926691 100644
--- a/heat_tempest_plugin/plugin.py
+++ b/heat_tempest_plugin/plugin.py
@@ -34,7 +34,11 @@
heat_config.ServiceAvailableGroup)
config.register_opt_group(conf, heat_config.heat_group,
heat_config.HeatGroup)
+ config.register_opt_group(conf, heat_config.heat_features_group,
+ heat_config.HeatFeaturesGroup)
def get_opt_lists(self):
return [(heat_config.heat_group.name,
- heat_config.HeatGroup)]
+ heat_config.HeatGroup),
+ (heat_config.heat_features_group.name,
+ heat_config.HeatFeaturesGroup)]
diff --git a/heat_tempest_plugin/tests/functional/test_os_wait_condition.py b/heat_tempest_plugin/tests/functional/test_os_wait_condition.py
index dc78341..603b5e5 100644
--- a/heat_tempest_plugin/tests/functional/test_os_wait_condition.py
+++ b/heat_tempest_plugin/tests/functional/test_os_wait_condition.py
@@ -57,11 +57,11 @@
wc_notify --data-binary ''{"status": "SUCCESS", "reason":
"signal4", "data": "data4"}''
- # check signals with the same number
+ # check signals with the same ID
- wc_notify --data-binary ''{"status": "SUCCESS", "id": "5"}''
+ wc_notify --data-binary ''{"status": "SUCCESS", "id": "test5"}''
- wc_notify --data-binary ''{"status": "SUCCESS", "id": "5"}''
+ wc_notify --data-binary ''{"status": "SUCCESS", "id": "test5"}''
# loop for 20 signals without reasons and data
diff --git a/heat_tempest_plugin/tests/scenario/test_server_signal.py b/heat_tempest_plugin/tests/scenario/test_server_signal.py
index a43c74a..1823087 100644
--- a/heat_tempest_plugin/tests/scenario/test_server_signal.py
+++ b/heat_tempest_plugin/tests/scenario/test_server_signal.py
@@ -29,6 +29,7 @@
'key_name': self.keypair_name,
'flavor': flavor,
'image': image,
+ 'public_net': self.conf.floating_network_name,
'timeout': self.conf.build_timeout,
'user_data_format': user_data_format
}
diff --git a/requirements.txt b/requirements.txt
index d5dbc36..b7486d6 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,9 +1,8 @@
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-eventlet!=0.18.3,!=0.20.1,<0.21.0,>=0.18.2 # MIT
keystoneauth1>=3.4.0 # Apache-2.0
-oslo.config>=5.1.0 # Apache-2.0
+oslo.config>=5.2.0 # Apache-2.0
oslo.log>=3.36.0 # Apache-2.0
oslo.messaging>=5.29.0 # Apache-2.0
os-collect-config>=5.0.0 # Apache-2.0
diff --git a/test-requirements.txt b/test-requirements.txt
index 90882be..f6c0a00 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -5,4 +5,4 @@
# Hacking already pins down pep8, pyflakes and flake8
hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
openstackdocstheme>=1.18.1 # Apache-2.0
-sphinx!=1.6.6,>=1.6.2 # BSD
+sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD