Code Duplication    Length = 23-24 lines in 2 locations

kafka_influxdb/tests/encoder_test/test_collectd_json_encoder.py 2 locations

@@ 10-33 (lines=24) @@
7
    def setUp(self):
8
        self.encoder = collectd_json_encoder.Encoder()
9
10
    def test_encode(self):
11
        """
12
        Test encoding of messages in collectd json format
13
        See https://github.com/mre/kafka-influxdb/issues/6
14
        :return:
15
        """
16
        msg = b"""
17
        [{"values":[0.6],"dstypes":["gauge"],"dsnames":["value"],"time":1444745144.824,"interval":10.000,"host":"xx.example.internal","plugin":"cpu","plugin_instance":"1","type":"percent","type_instance":"system"}]
18
            """
19
20
        encoded_messages = self.encoder.encode(msg)
21
22
        # We've encoded exactly one message
23
        self.assertEqual(len(encoded_messages), 1)
24
25
        encoded_message = encoded_messages[0]
26
27
        expected = '^cpu_1_percent,host=xx\.example\.internal,type_instance=system value=(\d\.\d+) 1444745144$'
28
        result = re.match(expected, encoded_message)
29
30
        # Due to floating point precision there might be a tiny difference between the expected and the actual value.
31
        self.assertIsNotNone(result, "Unexpected message format")
32
        self.assertEqual(len(result.groups()), 1)
33
        self.assertAlmostEqual(float(result.group(1)), 0.6)
34
35
    def test_multiple_measurements(self):
36
        """
@@ 80-102 (lines=23) @@
77
        expected = ['cpu_1_cpu,host=26f2fc918f50,type_instance=interrupt value=0 1436372292']
78
        self.assertEqual(self.encoder.encode(msg), expected)
79
80
    def test_multiple_fields(self):
81
        """
82
        Test supporting multiple fields in a sample
83
        [{"values":[0.2, 0.3],"dstypes":["derive"],"dsnames":["cpu_usage", "mem_usage"],"time":1436372292.412,"interval":10.000,"host":"26f2fc918f50","plugin":"sys_usage","plugin_instance":"1","type":"percent"}]
84
        """
85
        msg = b"""
86
        [{"values":[0.2, 0.3],"dstypes":["derive"],"dsnames":["cpu_usage", "mem_usage"],"time":1436372292.412,"interval":10.000,"host":"26f2fc918f50","plugin":"sys_usage","plugin_instance":"1","type":"percent"}]
87
        """
88
89
        encoded_messages = self.encoder.encode(msg)
90
91
        self.assertEqual(len(encoded_messages), 1)
92
93
        encoded_message = encoded_messages[0]
94
95
        expected = '^sys_usage_1_percent,host=26f2fc918f50 cpu_usage=(\d\.\d+),mem_usage=(\d\.\d+) 1436372292$'
96
        result = re.match(expected, encoded_message)
97
98
        # Due to floating point precision there might be a tiny difference between the expected and the actual value.
99
        self.assertIsNotNone(result, "Unexpected message format")
100
        self.assertEqual(len(result.groups()), 2)
101
        self.assertAlmostEqual(float(result.group(1)), 0.2)
102
        self.assertAlmostEqual(float(result.group(2)), 0.3)
103
104
105
"""