示例#1
0
 def test_multi_range_hash_partitioner(self):
     range_third = int(Range.RANGE_MAX_VALUE / 3)
     range_two_third = range_third * 2
     hash_ranges = "MIN..{range_third}|{range_third}..{range_two_third}|{range_two_third}..MAX".format(
         range_third=range_third, range_two_third=range_two_third)
     partitioner = HashPartitioner("node1", hash_ranges)
     sensors = partitioner.get_sensors()
     self.assertEqual(len(sensors), 3, "Expected all sensors")
    def test_split_range_hash_partitioner(self):
        range_mid = int(Range.RANGE_MAX_VALUE / 2)
        partitioner = HashPartitioner('node1', 'MIN..%s' % range_mid)
        sensors1 = partitioner.get_sensors()

        partitioner = HashPartitioner('node2', '%s..MAX' % range_mid)
        sensors2 = partitioner.get_sensors()

        self.assertEqual(len(sensors1) + len(sensors2), 3, 'Expected all sensors')
 def test_multi_range_hash_partitioner(self):
     range_third = int(Range.RANGE_MAX_VALUE / 3)
     range_two_third = range_third * 2
     hash_ranges = \
         'MIN..{range_third}|{range_third}..{range_two_third}|{range_two_third}..MAX'.format(
             range_third=range_third, range_two_third=range_two_third)
     partitioner = HashPartitioner('node1', hash_ranges)
     sensors = partitioner.get_sensors()
     self.assertEqual(len(sensors), 3, 'Expected all sensors')
示例#4
0
    def test_hash_effectiveness(self):
        range_third = int(Range.RANGE_MAX_VALUE / 3)
        partitioner1 = HashPartitioner('node1', 'MIN..%s' % range_third)
        partitioner2 = HashPartitioner('node2', '%s..%s' % (range_third, range_third + range_third))
        partitioner3 = HashPartitioner('node2', '%s..MAX' % (range_third + range_third))

        refs_count = 1000

        refs = self._generate_refs(count=refs_count)

        p1_count = 0
        p2_count = 0
        p3_count = 0

        for ref in refs:
            if partitioner1._is_in_hash_range(ref):
                p1_count += 1
            # note if and not else-if.
            if partitioner2._is_in_hash_range(ref):
                p2_count += 1
            if partitioner3._is_in_hash_range(ref):
                p3_count += 1

        self.assertEqual(p1_count + p2_count + p3_count, refs_count,
                         'Sum should equal all sensors.')

        # Test effectiveness by checking if the  sd is within 20% of mean
        mean = refs_count / 3
        variance = float((p1_count - mean)**2 + (p1_count - mean)**2 + (p3_count - mean)**2) / 3
        sd = math.sqrt(variance)

        self.assertTrue(sd / mean <= 0.2, 'Some values deviate too much from the mean.')
    def test_hash_effectiveness(self):
        range_third = int(Range.RANGE_MAX_VALUE / 3)
        partitioner1 = HashPartitioner('node1', 'MIN..%s' % range_third)
        partitioner2 = HashPartitioner('node2', '%s..%s' % (range_third, range_third + range_third))
        partitioner3 = HashPartitioner('node2', '%s..MAX' % (range_third + range_third))

        refs_count = 1000

        refs = self._generate_refs(count=refs_count)

        p1_count = 0
        p2_count = 0
        p3_count = 0

        for ref in refs:
            if partitioner1._is_in_hash_range(ref):
                p1_count += 1
            # note if and not else-if.
            if partitioner2._is_in_hash_range(ref):
                p2_count += 1
            if partitioner3._is_in_hash_range(ref):
                p3_count += 1

        self.assertEqual(p1_count + p2_count + p3_count, refs_count,
                         'Sum should equal all sensors.')

        # Test effectiveness by checking if the  sd is within 20% of mean
        mean = refs_count / 3
        variance = float((p1_count - mean)**2 + (p1_count - mean)**2 + (p3_count - mean)**2) / 3
        sd = math.sqrt(variance)

        self.assertTrue(sd / mean <= 0.2, 'Some values deviate too much from the mean.')
示例#6
0
    def test_split_range_hash_partitioner(self):
        range_mid = int(Range.RANGE_MAX_VALUE / 2)
        partitioner = HashPartitioner('node1', 'MIN..%s' % range_mid)
        sensors1 = partitioner.get_sensors()

        partitioner = HashPartitioner('node2', '%s..MAX' % range_mid)
        sensors2 = partitioner.get_sensors()

        self.assertEqual(len(sensors1) + len(sensors2), 3, 'Expected all sensors')
示例#7
0
    def test_split_range_hash_partitioner(self):
        range_mid = int(Range.RANGE_MAX_VALUE / 2)
        partitioner = HashPartitioner("node1", "MIN..%s" % range_mid)
        sensors1 = partitioner.get_sensors()

        partitioner = HashPartitioner("node2", "%s..MAX" % range_mid)
        sensors2 = partitioner.get_sensors()

        self.assertEqual(
            len(sensors1) + len(sensors2), 3, "Expected all sensors")
示例#8
0
 def test_full_range_hash_partitioner(self):
     partitioner = HashPartitioner('node1', 'MIN..MAX')
     sensors = partitioner.get_sensors()
     self.assertEqual(len(sensors), 3, 'Expected all sensors')
 def test_full_range_hash_partitioner(self):
     partitioner = HashPartitioner('node1', 'MIN..MAX')
     sensors = partitioner.get_sensors()
     self.assertEqual(len(sensors), 3, 'Expected all sensors')
示例#10
0
 def test_full_range_hash_partitioner(self):
     partitioner = HashPartitioner("node1", "MIN..MAX")
     sensors = partitioner.get_sensors()
     self.assertEqual(len(sensors), 3, "Expected all sensors")