def test_count_calls_decorator(self): @count_calls def test(): pass for i in xrange(10): test() self.assertEqual(counter("test_calls").get_count(), 10)
def get_snapshot(self): """ Creates a statistical snapshot from the current set of values. """ copy = [] for i in xrange(self.size()): copy.append(self.values[i]) return Snapshot(copy)
def test_mean_rate_one_per_second(self, time_mock): time_mock.return_value = 0.0 self.meter = Meter("test") for i in xrange(10): self.meter.mark() time_mock.return_value += 1 self.meter._tick() self.assertAlmostEqual(self.meter.get_mean_rate(), 1)
def __init__(self, reservoir_size): """ Create a new L{UniformSample}. @type reservoir_size: C{int} @param reservoir_size: the number of params to keep in the sampling reservoir """ self.values = [0 for x in xrange(reservoir_size)] self.clear()
def test_meter_calls_decorator(self, time_mock): time_mock.return_value = 0 @meter_calls def test(): pass for i in xrange(10): test() time_mock.return_value = 10 self.assertAlmostEqual(meter("test_calls").get_mean_rate(), 1.0)
def test_a_sample_of_100_out_of_1000_elements(self): sample = UniformSample(100) for i in xrange(1000): sample.update(i) snapshot = sample.get_snapshot() self.assertEqual(sample.size(), 100) self.assertEqual(snapshot.size(), 100) for i in snapshot.get_values(): self.assertTrue(i < 1000 and i >= 0)
def test_a_heavily_biased_sample_of_100_out_of_1000_elements(self): sample = ExponentiallyDecayingSample(1000, 0.01) for i in xrange(100): sample.update(i) snapshot = sample.get_snapshot() self.assertEqual(sample.size(), 100) self.assertEqual(snapshot.size(), 100) for i in snapshot.get_values(): self.assertTrue(i < 100 and i >= 0)
def test_a_sample_of_100_out_of_10_elements(self): sample = ExponentiallyDecayingSample(100, 0.99) for i in xrange(10): sample.update(i) snapshot = sample.get_snapshot() self.assertEqual(sample.size(), 10) self.assertEqual(snapshot.size(), 10) self.assertAlmostEqual(snapshot.get_median(), 4.5) for i in snapshot.get_values(): self.assertTrue(i < 10 and i >= 0)
def test_long_period_of_inactivity_should_not_corrupt_sampling_state(self): twisted_clock = Clock() sample = ExponentiallyDecayingSample(10, 0.015, twisted_clock.seconds) for i in xrange(1000): sample.update(1000 + i) twisted_clock.advance(0.1) self.assertTrue(sample.get_snapshot().size() == 10) self._assert_all_values_between(sample, 1000, 2000) twisted_clock.advance(15*3600) sample.update(2000) self.assertTrue(sample.get_snapshot().size() == 2) self._assert_all_values_between(sample, 1000, 3000) for i in xrange(1000): sample.update(3000 + i) twisted_clock.advance(0.1) self.assertTrue(sample.get_snapshot().size() == 10) self._assert_all_values_between(sample, 3000, 4000)
def test_long_period_of_inactivity_should_not_corrupt_sampling_state(self): twisted_clock = Clock() sample = ExponentiallyDecayingSample(10, 0.015, twisted_clock.seconds) for i in xrange(1000): sample.update(1000 + i) twisted_clock.advance(0.1) self.assertTrue(sample.get_snapshot().size() == 10) self._assert_all_values_between(sample, 1000, 2000) twisted_clock.advance(15 * 3600) sample.update(2000) self.assertTrue(sample.get_snapshot().size() == 2) self._assert_all_values_between(sample, 1000, 3000) for i in xrange(1000): sample.update(3000 + i) twisted_clock.advance(0.1) self.assertTrue(sample.get_snapshot().size() == 10) self._assert_all_values_between(sample, 3000, 4000)
def test_histogram_with_1000_elements(self): for histogram in self.histogram_b, self.histogram_u: histogram.clear() for i in xrange(1, 1001): histogram.update(i) self.assertEqual(histogram.get_count(), 1000) self.assertAlmostEqual(histogram.get_max(), 1000) self.assertAlmostEqual(histogram.get_min(), 1) self.assertAlmostEqual(histogram.get_mean(), 500.5) self.assertAlmostEqual(histogram.get_std_dev(), 288.8194360957494, places=3) self.assertAlmostEqual(histogram.get_sum(), 500500) snapshot = histogram.get_snapshot() self.assertAlmostEqual(snapshot.get_median(), 500.5) self.assertAlmostEqual(snapshot.get_75th_percentile(), 750.75) self.assertAlmostEqual(snapshot.get_99th_percentile(), 990.99) self.assertAlmostEqual(snapshot.size(), 1000)
def test_time_calls_decorator(self, time_mock): time_mock.return_value = 0.0 @time_calls def test(): time_mock.return_value += 1.0 for i in xrange(10): test() _timer = timer("test_calls") snapshot = _timer.get_snapshot() self.assertEqual(_timer.get_count(), 10) self.assertEqual(_timer.get_max(), 1) self.assertEqual(_timer.get_min(), 1) self.assertAlmostEqual(_timer.get_std_dev(), 0) self.assertAlmostEqual(snapshot.get_75th_percentile(), 1.0) self.assertAlmostEqual(snapshot.get_98th_percentile(), 1.0) self.assertAlmostEqual(snapshot.get_99th_percentile(), 1.0) self.assertAlmostEqual(snapshot.get_999th_percentile(), 1.0)
def test_hist_calls_decorator(self): @hist_calls def test(n): return n for i in xrange(1, 11): test(i) _histogram = histogram("test_calls") snapshot = _histogram.get_snapshot() self.assertAlmostEqual(_histogram.get_mean(), 5.5) self.assertEqual(_histogram.get_max(), 10) self.assertEqual(_histogram.get_min(), 1) self.assertAlmostEqual(_histogram.get_std_dev(), 3.02765, places=5) self.assertAlmostEqual(_histogram.get_variance(), 9.16667, places=5) self.assertAlmostEqual(snapshot.get_75th_percentile(), 8.25) self.assertAlmostEqual(snapshot.get_98th_percentile(), 10.0) self.assertAlmostEqual(snapshot.get_99th_percentile(), 10.0) self.assertAlmostEqual(snapshot.get_999th_percentile(), 10.0)
def clear(self): """ Clears the sample, setting all values to zero. """ self.values = [0 for x in xrange(len(self.values))] self.count = 0
def elapse_minute(self, time_mock): for i in xrange(0, 12): time_mock.return_value += 5 self.ewma.tick()