diff --git a/common/config.py b/common/config.py
index f07ee86..5ced77b 100644
--- a/common/config.py
+++ b/common/config.py
@@ -38,6 +38,8 @@
     cfg.StrOpt('instance_type',
                help="Instance type for tests. Needs to be big enough for a "
                     "full OS plus the test workload"),
+    cfg.StrOpt('minimal_instance_type',
+               help="Instance type enough for simplest cases."),
     cfg.StrOpt('image_ref',
                help="Name of image to use for tests which boot servers."),
     cfg.StrOpt('keypair_name',
@@ -65,6 +67,9 @@
     cfg.StrOpt('fixed_network_name',
                default='private',
                help="Visible fixed network name "),
+    cfg.StrOpt('floating_network_name',
+               default='public',
+               help="Visible floating network name "),
     cfg.StrOpt('boot_config_env',
                default=('heat_integrationtests/scenario/templates'
                         '/boot_config_none_env.yaml'),
diff --git a/common/remote_client.py b/common/remote_client.py
index 2955418..f0405b8 100644
--- a/common/remote_client.py
+++ b/common/remote_client.py
@@ -143,7 +143,7 @@
         connection.close()
 
 
-class RemoteClient():
+class RemoteClient(object):
 
     # NOTE(afazekas): It should always get an address instead of server
     def __init__(self, server, username, password=None, pkey=None,
diff --git a/functional/test_autoscaling.py b/functional/test_autoscaling.py
index d640915..cbb0fec 100644
--- a/functional/test_autoscaling.py
+++ b/functional/test_autoscaling.py
@@ -720,3 +720,31 @@
         self.assertTrue(test.call_until_true(
             self.build_timeout, self.build_interval,
             self.check_instance_count, stack_identifier, 5))
+
+    def test_signal_during_suspend(self):
+        """Prove that a signal will fail when the stack is in suspend."""
+
+        stack_identifier = self.stack_create(template=self.template,
+                                             files=self.files,
+                                             environment=self.env)
+
+        self.assertTrue(test.call_until_true(
+            self.build_timeout, self.build_interval,
+            self.check_instance_count, stack_identifier, 2))
+
+        nested_ident = self.assert_resource_is_a_stack(stack_identifier,
+                                                       'JobServerGroup')
+
+        # suspend the top level stack.
+        self.client.actions.suspend(stack_id=stack_identifier)
+        self._wait_for_resource_status(
+            stack_identifier, 'JobServerGroup', 'SUSPEND_COMPLETE')
+
+        # Send a signal and confirm nothing happened.
+        self.client.resources.signal(stack_identifier, 'ScaleUpPolicy')
+        # still SUSPEND_COMPLETE (not gone to UPDATE_COMPLETE)
+        self._wait_for_stack_status(nested_ident, 'SUSPEND_COMPLETE')
+        # still 2 instances.
+        self.assertTrue(test.call_until_true(
+            self.build_timeout, self.build_interval,
+            self.check_instance_count, stack_identifier, 2))
diff --git a/functional/test_hooks.py b/functional/test_hooks.py
index f7d455a..5c6f6bd 100644
--- a/functional/test_hooks.py
+++ b/functional/test_hooks.py
@@ -191,8 +191,6 @@
             reason='Hook pre-update is cleared',
             rsrc_name='rg')
         self.assertEqual('CREATE_COMPLETE', ev[0].resource_status)
-        self._wait_for_resource_status(
-            stack_identifier, 'rg', 'CREATE_COMPLETE')
         self._wait_for_stack_status(stack_identifier, 'UPDATE_COMPLETE')
         res_after = self.client.resources.get(stack_identifier, 'rg')
         self.assertEqual(res_before.physical_resource_id,
diff --git a/functional/test_validation.py b/functional/test_validation.py
index 2df6356..6a65091 100644
--- a/functional/test_validation.py
+++ b/functional/test_validation.py
@@ -22,8 +22,9 @@
         if not self.conf.minimal_image_ref:
             raise self.skipException("No image configured to test")
 
-        if not self.conf.instance_type:
-            raise self.skipException("No instance_type configured to test")
+        if not self.conf.minimal_instance_type:
+            raise self.skipException(
+                "No minimal_instance_type configured to test")
 
         self.assign_keypair()
 
@@ -72,7 +73,7 @@
         env = {'resource_registry':
                {'My::Config': 'provider.yaml'}}
         parameters = {'keyname': self.keypair_name,
-                      'flavor': self.conf.instance_type,
+                      'flavor': self.conf.minimal_instance_type,
                       'image': self.conf.minimal_image_ref}
         # Note we don't wait for CREATE_COMPLETE, because we're using a
         # minimal image without the tools to apply the config.
diff --git a/scenario/scenario_base.py b/scenario/scenario_base.py
index 77c3624..dd25b89 100644
--- a/scenario/scenario_base.py
+++ b/scenario/scenario_base.py
@@ -31,6 +31,11 @@
         if not self.conf.instance_type:
             raise self.skipException("No flavor configured to test")
 
+        if not self.conf.minimal_image_ref:
+            raise self.skipException("No minimal image configured to test")
+        if not self.conf.minimal_instance_type:
+            raise self.skipException("No minimal flavor configured to test")
+
     def launch_stack(self, template_name, expected_status='CREATE_COMPLETE',
                      parameters=None, **kwargs):
         template = self._load_template(__file__, template_name, self.sub_dir)
diff --git a/scenario/test_neutron_autoscaling.py b/scenario/test_neutron_autoscaling.py
index 2ba085b..9bbfbab 100644
--- a/scenario/test_neutron_autoscaling.py
+++ b/scenario/test_neutron_autoscaling.py
@@ -20,8 +20,6 @@
 
     def setUp(self):
         super(NeutronAutoscalingTest, self).setUp()
-        if not self.conf.minimal_image_ref:
-            raise self.skipException("No minimal image configured to test")
         if not self.conf.fixed_subnet_name:
             raise self.skipException("No sub-network configured to test")
         self.template_name = 'test_neutron_autoscaling.yaml'
@@ -41,7 +39,7 @@
         parameters = {
             "image_id": self.conf.minimal_image_ref,
             "capacity": "1",
-            "instance_type": self.conf.instance_type,
+            "instance_type": self.conf.minimal_instance_type,
             "fixed_subnet_name": self.conf.fixed_subnet_name,
         }
 
diff --git a/scenario/test_neutron_loadbalancer.py b/scenario/test_neutron_loadbalancer.py
index 3f49251..bbe85bc 100644
--- a/scenario/test_neutron_loadbalancer.py
+++ b/scenario/test_neutron_loadbalancer.py
@@ -24,7 +24,7 @@
 
     def setUp(self):
         super(NeutronLoadBalancerTest, self).setUp()
-        self.public_net = self._get_network('public')
+        self.public_net = self._get_network(self.conf.floating_network_name)
         self.template_name = 'test_neutron_loadbalancer.yaml'
 
     def collect_responses(self, ip, expected_resp):
@@ -52,7 +52,7 @@
 
         parameters = {
             'key_name': self.keypair_name,
-            'flavor': self.conf.instance_type,
+            'flavor': self.conf.minimal_instance_type,
             'image': self.conf.image_ref,
             'private_subnet_id': self.net['subnets'][0],
             'external_network_id': self.public_net['id']
diff --git a/scenario/test_volumes.py b/scenario/test_volumes.py
index 9b12a9c..79d4931 100644
--- a/scenario/test_volumes.py
+++ b/scenario/test_volumes.py
@@ -119,7 +119,7 @@
         """
         parameters = {
             'key_name': self.keypair_name,
-            'instance_type': self.conf.instance_type,
+            'instance_type': self.conf.minimal_instance_type,
             'image_id': self.conf.minimal_image_ref,
             'volume_description': self.volume_description,
             'timeout': self.conf.build_timeout,
