def test_update3(self): f = tempfile.TemporaryFile() m = 16384 flen = (m * 3) + mmap.PAGESIZE - (m * 3) % mmap.PAGESIZE self.assertGreater(flen, m * 3) f.write(''.join(['\x00' for i in range(flen)])) fmap = mmap.mmap(f.fileno(), m * 3) self.assertEqual(len(fmap), m * 3) mslice1 = MmapSlice(fmap, m, 0) mslice2 = MmapSlice(fmap, m, m) mslice3 = MmapSlice(fmap, m, m * 2) hll1 = HyperLogLog(self.error_rate, mslice1) hll2 = HyperLogLog(self.error_rate, mslice2) hll3 = HyperLogLog(self.error_rate, mslice3) for v in self.test_data1: hll1.add(v) for v in self.test_data2: hll2.add(v) for v in self.test_data3: hll3.add(v) hll1.update([hll2, hll3]) self.assertAlmostEqual(self.test_set_size * 3, len(hll1), delta=self.test_set_size * 3 * self.error_rate)
def test_update3(self): f = tempfile.TemporaryFile() m = 16384 flen = (m*3) + mmap.PAGESIZE - (m*3) % mmap.PAGESIZE self.assertGreater(flen, m*3) f.write(''.join(['\x00' for i in range(flen)])) fmap = mmap.mmap(f.fileno(), m*3) self.assertEqual(len(fmap), m*3) mslice1 = MmapSlice(fmap, m, 0) mslice2 = MmapSlice(fmap, m, m) mslice3 = MmapSlice(fmap, m, m*2) hll1 = HyperLogLog(self.error_rate, mslice1) hll2 = HyperLogLog(self.error_rate, mslice2) hll3 = HyperLogLog(self.error_rate, mslice3) for v in self.test_data1: hll1.add(v) for v in self.test_data2: hll2.add(v) for v in self.test_data3: hll3.add(v) hll1.update([hll2, hll3]) self.assertAlmostEqual(self.test_set_size*3, len(hll1), delta=self.test_set_size*3*self.error_rate)
def test_update(self): a = HyperLogLog(0.05) b = HyperLogLog(0.05) c = HyperLogLog(0.05) for i in xrange(2): a.add(str(i)) c.add(str(i)) for i in xrange(2, 4): b.add(str(i)) c.add(str(i)) a.update(b) self.assertNotEqual(a, b) self.assertNotEqual(b, c) self.assertEqual(a, c)