def test_grow_cluster_exception(self): cluster = self.trove_clusters.first() self.mock_cluster_get.return_value = cluster cluster_volume = 1 flavor = self.flavors.first() cluster_flavor = flavor.id cluster_flavor_name = flavor.name instances = [ cluster_manager.ClusterInstance("id1", "name1", cluster_flavor, cluster_flavor_name, cluster_volume, "master", None, None), cluster_manager.ClusterInstance("id2", "name2", cluster_flavor, cluster_flavor_name, cluster_volume, "slave", "master", None), cluster_manager.ClusterInstance("id3", None, cluster_flavor, cluster_flavor_name, cluster_volume, None, None, None), ] manager = cluster_manager.ClusterInstanceManager(cluster.id) manager.instances = instances self.mock_get.return_value = manager self.mock_cluster_grow.side_effect = self.exceptions.trove url = reverse('horizon:project:database_clusters:cluster_grow_details', args=[cluster.id]) res = self.client.get(url) self.assertTemplateUsed( res, 'project/database_clusters/cluster_grow_details.html') toSuppress = ["trove_dashboard.content.database_clusters.tables"] # Suppress expected log messages in the test output loggers = [] for cls in toSuppress: logger = logging.getLogger(cls) loggers.append((logger, logger.getEffectiveLevel())) logger.setLevel(logging.CRITICAL) try: action = "".join([ tables.ClusterGrowInstancesTable.Meta.name, '__', tables.ClusterGrowAction.name, '__', cluster.id ]) res = self.client.post(url, {'action': action}) self.mock_cluster_get.assert_called_once_with( test.IsHttpRequest(), cluster.id) self.assert_mock_multiple_calls_with_same_arguments( self.mock_get, 3, mock.call(cluster.id)) self.mock_cluster_grow.assert_called_once_with( test.IsHttpRequest(), cluster.id, instances) self.assertMessageCount(error=1) self.assertRedirectsNoFollow(res, INDEX_URL) finally: # Restore the previous log levels for (log, level) in loggers: log.setLevel(level)
def test_grow_cluster_exception(self): cluster = self.trove_clusters.first() trove_api.trove.cluster_get(IsA(http.HttpRequest), cluster.id)\ .AndReturn(cluster) cluster_volume = 1 flavor = self.flavors.first() cluster_flavor = flavor.id cluster_flavor_name = flavor.name instances = [ cluster_manager.ClusterInstance("id1", "name1", cluster_flavor, cluster_flavor_name, cluster_volume, "master", None, None), cluster_manager.ClusterInstance("id2", "name2", cluster_flavor, cluster_flavor_name, cluster_volume, "slave", "master", None), cluster_manager.ClusterInstance("id3", None, cluster_flavor, cluster_flavor_name, cluster_volume, None, None, None), ] manager = cluster_manager.ClusterInstanceManager(cluster.id) manager.instances = instances cluster_manager.get(cluster.id).MultipleTimes().AndReturn(manager) trove_api.trove.cluster_grow(IsA(http.HttpRequest), cluster.id, instances).AndRaise(self.exceptions.trove) self.mox.ReplayAll() url = reverse('horizon:project:database_clusters:cluster_grow_details', args=[cluster.id]) res = self.client.get(url) self.assertTemplateUsed( res, 'project/database_clusters/cluster_grow_details.html') toSuppress = ["trove_dashboard.content.database_clusters.tables"] # Suppress expected log messages in the test output loggers = [] for cls in toSuppress: logger = logging.getLogger(cls) loggers.append((logger, logger.getEffectiveLevel())) logger.setLevel(logging.CRITICAL) try: action = "".join([ tables.ClusterGrowInstancesTable.Meta.name, '__', tables.ClusterGrowAction.name, '__', cluster.id ]) res = self.client.post(url, {'action': action}) self.assertMessageCount(error=1) self.assertRedirectsNoFollow(res, INDEX_URL) finally: # Restore the previous log levels for (log, level) in loggers: log.setLevel(level)
def test_grow_cluster(self): cluster = self.trove_clusters.first() self.mock_cluster_get.return_value = cluster cluster_volume = 1 flavor = self.flavors.first() cluster_flavor = flavor.id cluster_flavor_name = flavor.name instances = [ cluster_manager.ClusterInstance("id1", "name1", cluster_flavor, cluster_flavor_name, cluster_volume, "master", None, None), cluster_manager.ClusterInstance("id2", "name2", cluster_flavor, cluster_flavor_name, cluster_volume, "slave", "master", None), cluster_manager.ClusterInstance("id3", None, cluster_flavor, cluster_flavor_name, cluster_volume, None, None, None), ] manager = cluster_manager.ClusterInstanceManager(cluster.id) manager.instances = instances self.mock_get.return_value = manager url = reverse('horizon:project:database_clusters:cluster_grow_details', args=[cluster.id]) res = self.client.get(url) self.assertTemplateUsed( res, 'project/database_clusters/cluster_grow_details.html') table = res.context_data["".join( [tables.ClusterGrowInstancesTable.Meta.name, '_table'])] self.assertEqual(len(cluster.instances), len(table.data)) action = "".join([ tables.ClusterGrowInstancesTable.Meta.name, '__', tables.ClusterGrowRemoveInstance.name, '__', 'id1' ]) self.client.post(url, {'action': action}) self.assertEqual(len(cluster.instances) - 1, len(table.data)) action = "".join([ tables.ClusterGrowInstancesTable.Meta.name, '__', tables.ClusterGrowAction.name, '__', cluster.id ]) res = self.client.post(url, {'action': action}) self.mock_cluster_get.assert_called_once_with(test.IsHttpRequest(), cluster.id) self.assert_mock_multiple_calls_with_same_arguments( self.mock_get, 5, mock.call(cluster.id)) self.mock_cluster_grow.assert_called_once_with(test.IsHttpRequest(), cluster.id, instances) self.assertMessageCount(success=1) self.assertRedirectsNoFollow(res, INDEX_URL)
def test_grow_cluster(self): cluster = self.trove_clusters.first() trove_api.trove.cluster_get(IsA(http.HttpRequest), cluster.id)\ .AndReturn(cluster) cluster_volume = 1 flavor = self.flavors.first() cluster_flavor = flavor.id cluster_flavor_name = flavor.name instances = [ cluster_manager.ClusterInstance("id1", "name1", cluster_flavor, cluster_flavor_name, cluster_volume, "master", None, None), cluster_manager.ClusterInstance("id2", "name2", cluster_flavor, cluster_flavor_name, cluster_volume, "slave", "master", None), cluster_manager.ClusterInstance("id3", None, cluster_flavor, cluster_flavor_name, cluster_volume, None, None, None), ] manager = cluster_manager.ClusterInstanceManager(cluster.id) manager.instances = instances cluster_manager.get(cluster.id).MultipleTimes().AndReturn(manager) trove_api.trove.cluster_grow(IsA(http.HttpRequest), cluster.id, instances) self.mox.ReplayAll() url = reverse('horizon:project:database_clusters:cluster_grow_details', args=[cluster.id]) res = self.client.get(url) self.assertTemplateUsed( res, 'project/database_clusters/cluster_grow_details.html') table = res.context_data["".join( [tables.ClusterGrowInstancesTable.Meta.name, '_table'])] self.assertEqual(len(cluster.instances), len(table.data)) action = "".join([ tables.ClusterGrowInstancesTable.Meta.name, '__', tables.ClusterGrowRemoveInstance.name, '__', 'id1' ]) self.client.post(url, {'action': action}) self.assertEqual(len(cluster.instances) - 1, len(table.data)) action = "".join([ tables.ClusterGrowInstancesTable.Meta.name, '__', tables.ClusterGrowAction.name, '__', cluster.id ]) res = self.client.post(url, {'action': action}) self.assertMessageCount(success=1) self.assertRedirectsNoFollow(res, INDEX_URL)