def test_compute_shard_distribution(self): # Check that shard distribution isn't obviously broken. nshards = 7 mean_samples_per_shard = 10000 nsamples = nshards * mean_samples_per_shard distribution = [0] * nshards for n in range(0, nsamples): shard = Sharder.compute_shard(str(n), nshards) distribution[shard] += 1 variance = sum([(x - mean_samples_per_shard) ** 2 for x in distribution]) / nshards stddev = math.sqrt(variance) # We arbitrarily assert that a stddev of less than 1% of the mean is good enough # for sanity-checking purposes. self.assertLess(stddev, 100)
def test_compute_shard(self): # Spot-check a couple of values, to make sure compute_shard doesn't do something # completely degenerate. self.assertEqual(31, Sharder.compute_shard('', 42)) self.assertEqual(35, Sharder.compute_shard('foo', 42)) self.assertEqual(5, Sharder.compute_shard('bar', 42))