def test_should_raise_exception_on_timeout_when_creating_a_new_cluster(self):
        instances = [
            NEW_NODES
        ]
        senza_mock = SenzaWrapper(CONFIG)
        senza_create_mock = senza_mock.create_stack = MagicMock()
        senza_passive_versions_mock = senza_mock.get_passive_stack_version = MagicMock(return_value='test-version')
        senza_instances_mock = senza_mock.get_stack_instances = MagicMock(side_effect=instances)

        http_calls = [
            self.__side_effect_return_cluster_state_old_nodes(None),
            self.__side_effect_return_cluster_state_old_nodes(None),
        ]

        urlopen_mock = MagicMock(side_effect=http_calls)
        urllib.request.urlopen = urlopen_mock

        controller = ClusterDeploymentController(base_url=BASE_URL, stack_name=STACK_NAME,
                                                 image_version=IMAGE_VERSION, oauth_token=OAUTH_TOKEN,
                                                 senza_wrapper=senza_mock)
        controller.set_create_cluster_retry_wait(0)
        controller.set_create_cluster_timeout(0)
        with self.assertRaisesRegex(Exception, 'Timeout while creating new cluster, not all new nodes have been '
                                               'registered in time'):
            controller.create_cluster()

        senza_passive_versions_mock.assert_called_with(STACK_NAME)
        self.assertEquals(2, len(senza_passive_versions_mock.call_args_list))
        senza_create_mock.assert_called_once_with(STACK_NAME, 'test-version', IMAGE_VERSION)
        senza_instances_mock.assert_called_once_with(STACK_NAME, 'test-version')
    def test_should_not_raise_any_exception_when_creating_a_new_cluster(self):
        instances = [
            NEW_NODES
        ]
        senza_mock = SenzaWrapper(CONFIG)
        senza_create_mock = senza_mock.create_stack = MagicMock()
        senza_passive_versions_mock = senza_mock.get_passive_stack_version = MagicMock(return_value='test-version')
        senza_instances_mock = senza_mock.get_stack_instances = MagicMock(side_effect=instances)

        http_calls = self.__side_effect_return_cluster_state_all_registered_nodes

        urlopen_mock = MagicMock(side_effect=http_calls)
        urllib.request.urlopen = urlopen_mock

        controller = ClusterDeploymentController(base_url=BASE_URL, stack_name=STACK_NAME,
                                                 image_version=IMAGE_VERSION, oauth_token=OAUTH_TOKEN,
                                                 senza_wrapper=senza_mock)
        controller.create_cluster()

        senza_passive_versions_mock.assert_called_with(STACK_NAME)
        self.assertEquals(2, len(senza_passive_versions_mock.call_args_list))
        senza_create_mock.assert_called_once_with(STACK_NAME, 'test-version', IMAGE_VERSION)
        senza_instances_mock.assert_called_once_with(STACK_NAME, 'test-version')