Esempio n. 1
0
 def test_needle_id_equal(self):
     n0eq = needle_source.NeedleSource(n0)
     n1eq = needle_source.NeedleSource(n1)
     n2eq = needle_source.NeedleSource(n2)
     n3eq = needle_source.NeedleSource(n3)
     self.assertTrue(n0eq.needle_id_equal(n1eq))
     self.assertTrue(n0eq.needle_id_equal(n2eq))
     self.assertFalse(n0eq.needle_id_equal(n3eq))
Esempio n. 2
0
 def test_needle_lt(self):
     n0t = needle_source.NeedleSource(n0)
     n1t = needle_source.NeedleSource(n1)
     n2t = needle_source.NeedleSource(n2)
     n3t = needle_source.NeedleSource(n3)
     self.assertFalse(n0t < n1t)
     self.assertFalse(n0t < n2t)
     self.assertFalse(n1t < n2t)
     self.assertTrue(n0t < n3t)
     self.assertTrue(n0t < None)
Esempio n. 3
0
    def test_update_meta_sysmeta_level(self):
        ndl_src1 = needle_source.NeedleSource(n1)
        ndl_src2 = needle_source.NeedleSource(n2)
        res = needle_source.merge_referrer([ndl_src1, ndl_src2])
        self.assertEqual(res['Level'], 1)
        self.assertEqual(res['Meta'], {'meta': 12345})
        self.assertEqual(res['SysMeta'], {'sysmeta': 12345})

        ndl_src3 = needle_source.NeedleSource(n3)
        ndl_src4 = needle_source.NeedleSource(n4)
        res = needle_source.merge_referrer([ndl_src3, ndl_src4])
        self.assertEqual(res['Level'], 3)
        self.assertEqual(res['Meta'], {'meta': 1234567})
        self.assertEqual(res['SysMeta'], {'sysmeta': 1234567})
Esempio n. 4
0
    def test_update_is_del(self):

        n5_is_del = needle_source.NeedleSource(n5)
        n5_is_del.add_referrer(ref16)
        self.assertIs(n5_is_del['IsDel'], 0)

        n6_is_del = needle_source.NeedleSource(n6)
        n6_is_del.add_referrer(ref18)
        self.assertIs(n6_is_del['IsDel'], 1)

        n6_is_del = needle_source.NeedleSource(n6)
        n6_is_del.reserve_del = False
        n6_is_del.add_referrer(ref18)
        self.assertIs(n6_is_del['IsDel'], 1)
Esempio n. 5
0
    def test_add_referrer(self):
        n0add = needle_source.NeedleSource(n0)
        n1add = needle_source.NeedleSource(n1)
        n4add = needle_source.NeedleSource(n4)
        n4add.reserve_del = False

        n0add.add_referrer(ref16)
        self.assertIs(len(n0add['Referrers']), 4)
        n0add.add_referrer(ref17)
        self.assertIs(len(n0add['Referrers']), 5)
        n0add.add_referrer(ref18)
        self.assertIs(len(n0add['Referrers']), 6)

        n1add.add_referrer(ref23)
        self.assertTrue(n1add['Referrers'][-1] == ref23)
        self.assertRaises(ValueError, n1add.add_referrer, list_test)
        self.assertRaises(ValueError, n1add.add_referrer, ref24)

        n4add.add_referrer(ref20)
        self.assertIs(len(n4add['Referrers']), 1)
        n4add.add_referrer(ref22)
        self.assertIs(len(n4add['Referrers']), 1)
        n4add.add_referrer(ref19)
        self.assertIs(len(n4add['Referrers']), 2)
Esempio n. 6
0
    def test_merge_needle_src_iters(self):
        self.maxDiff = None
        expected = [
            {
                'NeedleID':
                '1',
                'Referrers': [
                    _make_referrer('3copy', 'key1', 123, 1),
                    _make_referrer('3copy', 'key2', 123, 1),
                    _make_referrer('3copy', 'key3', 123, 1),
                    _make_referrer('3copy', 'key4', 123, 0),
                    _make_referrer('3copy', 'key5', 123, 0),
                    _make_referrer('3copy', 'key6', 123, 1),
                ],
                'Size':
                10,
                'Url':
                '/',
                'IsDel':
                0,
                'Meta': {
                    'meta': 12345
                },
                'SysMeta': {
                    'sysmeta': 12345
                },
                'Level':
                0
            },
            {
                'NeedleID':
                '2',
                'Referrers': [
                    _make_referrer('3copy', 'key1', 123, 1),
                    _make_referrer('3copy', 'key6', 123, 1),
                ],
                'Size':
                10,
                'Url':
                '/',
                'IsDel':
                1,
                'Meta': {
                    'meta': 1234567
                },
                'SysMeta': {
                    'sysmeta': 1234567
                },
                'Level':
                3
            },
        ]
        expected_del = [
            {
                'NeedleID':
                '1',
                'Referrers': [
                    _make_referrer('3copy', 'key4', 123, 0),
                    _make_referrer('3copy', 'key5', 123, 0),
                ],
                'Size':
                10,
                'Url':
                '/',
                'IsDel':
                0,
                'Meta': {
                    'meta': 12345
                },
                'SysMeta': {
                    'sysmeta': 12345
                },
                'Level':
                0
            },
        ]

        ndls = []
        for n in (n0, n3, n1, n2, n4):
            ndls.append(needle_source.NeedleSource(n))

        res_ndls = []
        self.assertEqual([], res_ndls)

        res_ndls = []
        for ndl in needle_source.merge_needle_source_iters(ndls[1:2]):
            res_ndls.append(ndl)
        self.assertEqual([ndls[1]], res_ndls)

        res_ndls = []
        for ndl in needle_source.merge_needle_source_iters(
                ndls[:2], ndls[2:4], ndls[4:]):
            res_ndls.append(ndl)
        self.assertEqual(expected, res_ndls)

        for i in range(len(ndls)):
            ndls[i].reserve_del = False

        res_ndls = []
        for ndl in needle_source.merge_needle_source_iters(ndls[1:2]):
            res_ndls.append(ndl)
        self.assertEqual([], res_ndls)

        res_ndls = []
        for ndl in needle_source.merge_needle_source_iters(ndls[:2], ndls[2:]):
            res_ndls.append(ndl)
        self.assertEqual(expected_del, res_ndls)

        res_ndls = []
        for ndl in needle_source.merge_needle_source_iters(
                ndls[:2], ndls[2:4]):
            res_ndls.append(ndl)
        self.assertEqual(expected_del, res_ndls)
Esempio n. 7
0
    def test_merge_referrer(self):
        n012 = {
            'NeedleID':
            '1',
            'Referrers': [
                _make_referrer('3copy', 'key1', 123, 1),
                _make_referrer('3copy', 'key2', 123, 1),
                _make_referrer('3copy', 'key3', 123, 1),
                _make_referrer('3copy', 'key4', 123, 0),
                _make_referrer('3copy', 'key5', 123, 0),
                _make_referrer('3copy', 'key6', 123, 1),
            ],
            'Size':
            10,
            'Url':
            '/',
            'IsDel':
            0,
            'Meta': {
                'meta': 12345
            },
            'SysMeta': {
                'sysmeta': 12345
            },
            'Level':
            0
        }

        n012_del = {
            'NeedleID':
            '1',
            'Referrers': [
                _make_referrer('3copy', 'key4', 123, 0),
                _make_referrer('3copy', 'key5', 123, 0),
            ],
            'Size':
            10,
            'Url':
            '/',
            'IsDel':
            0,
            'Meta': {
                'meta': 12345
            },
            'SysMeta': {
                'sysmeta': 12345
            },
            'Level':
            0
        }

        ndl_src0 = needle_source.NeedleSource(n0)
        ndl_src1 = needle_source.NeedleSource(n1)
        ndl_src2 = needle_source.NeedleSource(n2)
        ndl_src012 = needle_source.NeedleSource(n012)
        ndl_src012_del = needle_source.NeedleSource(n012_del)
        ndl_src3 = needle_source.NeedleSource(n3)

        res = needle_source.merge_referrer([])
        self.assertEqual(None, res)

        res = needle_source.merge_referrer([ndl_src0])
        self.assertEqual(ndl_src0, res)

        res = needle_source.merge_referrer([ndl_src0, ndl_src1, ndl_src2])
        self.assertEqual(ndl_src012, res)

        res = needle_source.merge_referrer([ndl_src2, ndl_src0, ndl_src1])
        self.assertEqual(ndl_src012, res)

        ndl_src0.reserve_del = False
        ndl_src1.reserve_del = False
        ndl_src2.reserve_del = False
        ndl_src3.reserve_del = False

        res = needle_source.merge_referrer([ndl_src0])
        self.assertEqual(None, res)

        res = needle_source.merge_referrer([ndl_src0, ndl_src1, ndl_src2])
        self.assertEqual(ndl_src012_del, res)

        res = needle_source.merge_referrer([ndl_src2, ndl_src1, ndl_src0])
        self.assertEqual(ndl_src012_del, res)

        self.assertRaises(needle_source.NeedleIdNotEqual,
                          needle_source.merge_referrer, [ndl_src2, ndl_src3])