Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)