def testGetStatisticsNoData(self, ec2InstanceMetricGetterMock, repositoryMock): metricID = "abc" class MetricRowSpec(object): uid = None datasource = None metricRowMock = Mock( spec_set=MetricRowSpec, uid=metricID, datasource="autostack") autostackMock = Mock() repositoryMock.getAutostackFromMetric = Mock(return_value=autostackMock) repositoryMock.getMetricStats.side_effect = MetricStatisticsNotReadyError() metricGetterMock = Mock() ec2InstanceMetricGetterMock.return_value = metricGetterMock metricGetterMock.collectMetricStatistics.return_value = [] # Call the function under test with self.assertRaises(MetricStatisticsNotReadyError): aggregation.getStatistics(metricRowMock) self.assertEqual(repositoryMock.getAutostackFromMetric.call_args[0][1], metricID) metricGetterMock.collectMetricStatistics.assert_called_once_with( autostackMock, metricRowMock) metricGetterMock.close.assert_called_once()
def testGetStatisticsNoData(self, ec2InstanceMetricGetterMock, repositoryMock): metricID = "abc" class MetricRowSpec(object): uid = None datasource = None metricRowMock = Mock(spec_set=MetricRowSpec, uid=metricID, datasource="autostack") autostackMock = Mock() repositoryMock.getAutostackFromMetric = Mock( return_value=autostackMock) repositoryMock.getMetricStats.side_effect = MetricStatisticsNotReadyError( ) metricGetterMock = Mock() ec2InstanceMetricGetterMock.return_value = metricGetterMock metricGetterMock.collectMetricStatistics.return_value = [] # Call the function under test with self.assertRaises(MetricStatisticsNotReadyError): aggregation.getStatistics(metricRowMock) self.assertEqual(repositoryMock.getAutostackFromMetric.call_args[0][1], metricID) metricGetterMock.collectMetricStatistics.assert_called_once_with( autostackMock, metricRowMock) metricGetterMock.close.assert_called_once()
def testGetStatisticsMultpleInstances(self, ec2InstanceMetricGetterMock, getAutostackFromMetricMock, _engineFactoryMock): metricID = "abc" class MetricRowSpec(object): uid = None datasource = None metricRowMock = Mock(spec_set=MetricRowSpec, uid=metricID, datasource="autostack") autostackMock = Mock() getAutostackFromMetricMock.return_value = autostackMock metricGetterMock = Mock() ec2InstanceMetricGetterMock.return_value = metricGetterMock metricGetterMock.collectMetricStatistics.return_value = [ InstanceMetricData(instanceID="tempID1", records=[ MetricRecord(timestamp=None, value={ "min": 5.0, "max": 20.0 }) ]), InstanceMetricData(instanceID="tempID2", records=[ MetricRecord(timestamp=None, value={ "min": 15.0, "max": 30.0 }) ]), ] # Call the function under test stats = aggregation.getStatistics(metricRowMock) # Validate stats self.assertSetEqual(set(stats.keys()), set(("min", "max"))) # Make sure to include 20% buffer on range self.assertAlmostEqual(stats["min"], 7.0) self.assertAlmostEqual(stats["max"], 28.0) # Validate mocks were called correctly self.assertEqual(getAutostackFromMetricMock.call_args[0][1], metricID) metricGetterMock.collectMetricStatistics.assert_called_once_with( autostackMock, metricRowMock) metricGetterMock.close.assert_called_once()
def testGetStatisticsMultpleInstances(self, ec2InstanceMetricGetterMock, getAutostackFromMetricMock, _engineFactoryMock): metricID = "abc" class MetricRowSpec(object): uid = None datasource = None metricRowMock = Mock( spec_set=MetricRowSpec, uid=metricID, datasource="autostack") autostackMock = Mock() getAutostackFromMetricMock.return_value = autostackMock metricGetterMock = Mock() ec2InstanceMetricGetterMock.return_value = metricGetterMock metricGetterMock.collectMetricStatistics.return_value = [ InstanceMetricData( instanceID="tempID1", records=[MetricRecord(timestamp=None, value={"min": 5.0, "max": 20.0})]), InstanceMetricData( instanceID="tempID2", records=[MetricRecord(timestamp=None, value={"min": 15.0, "max": 30.0})]), ] # Call the function under test stats = aggregation.getStatistics(metricRowMock) # Validate stats self.assertSetEqual(set(stats.keys()), set(("min", "max"))) # Make sure to include 20% buffer on range self.assertAlmostEqual(stats["min"], 7.0) self.assertAlmostEqual(stats["max"], 28.0) # Validate mocks were called correctly self.assertEqual(getAutostackFromMetricMock.call_args[0][1], metricID) metricGetterMock.collectMetricStatistics.assert_called_once_with( autostackMock, metricRowMock) metricGetterMock.close.assert_called_once()