def setUp(self): self.r = fakeredis.FakeStrictRedis() self.test_config = json.load(open(TEST_CONFIG_FILE)) self.top_qnames_ep = TopQNamesWithIPEventProcessor(self.r, self.test_config)
class TestTopQNamesWithIPEventProcessor(unittest.TestCase): def setUp(self): self.r = fakeredis.FakeStrictRedis() self.test_config = json.load(open(TEST_CONFIG_FILE)) self.top_qnames_ep = TopQNamesWithIPEventProcessor(self.r, self.test_config) def tearDown(self): self.r.flushall() def test_select_item(self): input_data = {"qnames_data": [ {"qname": 'qname1', "total_count": 7, "servers_data": [ {"qname_server_count": 3, "server_id": 'server1', "top_ips": [{"ip": 'ip1', "ip_server_count": 1}, {"ip": 'ip2', 'ip_server_count': 2}]}, {"qname_server_count": 4, "server_id": 'server2', "top_ips": [{"ip": 'ip3', "ip_server_count": 1}, {"ip": 'ip4', 'ip_server_count': 2}, {"ip": 'ip5', "ip_server_count": 1}]}]}, {"qname": 'qname2', "total_count": 10, "servers_data": [ {"qname_server_count": 9, "server_id": 'server1', "top_ips": [{"ip": 'ip1', "ip_server_count": 3}, {"ip": 'ip2', "ip_server_count": 5}, {"ip": 'ip6', "ip_server_count": 2}]}, {"qname_server_count": 1, "server_id": 'server2', "top_ips": [{"ip": 'ip5', "ip_server_count": 1}]}]}, {"qname": 'qname3', "total_count": 2, "servers_data": [ {"qname_server_count": 2, "server_id": 'server1', "top_ips": [{"ip": 'ip5', "ip_server_count": 2}]}]}, {"qname": 'qname4', "total_count": 12, "servers_data": [ {"qname_server_count": 6, "server_id": 'server1', "top_ips": [{"ip": 'ip1', "ip_server_count": 1}, {"ip": 'ip2', 'ip_server_count': 2}, {"ip": 'ip6', 'ip_server_count': 3}]}, {"qname_server_count": 6, "server_id": 'server2', "top_ips": [{"ip": 'ip3', "ip_server_count": 1}, {"ip": 'ip4', 'ip_server_count': 5}]}]}, {"qname": 'qname5', "total_count": 1, "servers_data": [ {"qname_server_count": 1, "server_id": 'server1', "top_ips": [{"ip": 'ip1', "ip_server_count": 1}]}]}], "time_span": 1} result = self.top_qnames_ep.select_item(input_data) expected_output_data = {"qnames_data": [ {"qname": 'qname4', "total_count": 12, "servers_data": [ {"qname_server_count": 6, "server_id": 'server1', "top_ips": [{"ip": 'ip6', 'ip_server_count': 3}, {"ip": 'ip2', 'ip_server_count': 2}]}, {"qname_server_count": 6, "server_id": 'server2', "top_ips": [{"ip": 'ip4', "ip_server_count": 5}, {"ip": 'ip3', 'ip_server_count': 1}]}]}, {"qname": 'qname2', "total_count": 10, "servers_data": [ {"qname_server_count": 9, "server_id": 'server1', "top_ips": [{"ip": 'ip2', "ip_server_count": 5}, {"ip": 'ip1', "ip_server_count": 3}]}, {"qname_server_count": 1, "server_id": 'server2', "top_ips": [{"ip": 'ip5', "ip_server_count": 1}]}]}], "time_span": 1} self.assertDictEqual(result, expected_output_data) def test_process(self): input_item_1 = {"type": "QueryNameCounterWithIPs", "timeStamp": 1, "serverId": "server1", "data": {"domain1": ["ip1"], "domain2": ["ip1", "ip2"], "domain3": ["ip3", "ip4"]}} _, result = self.top_qnames_ep.process(input_item_1) expected_output = [{"time_span": 1, "qnames_data": [ {"qname": "domain3", "total_count": 2, "servers_data": [ {"server_id": "server1", "qname_server_count": 2, "top_ips": [ {"ip": "ip3", "ip_server_count": 1, "ip_server_percentage": 100 * 1 / 2}, {"ip": "ip4", "ip_server_count": 1, "ip_server_percentage": 100 * 1 / 2}]}]}, {"qname": "domain2", "total_count": 2, "servers_data": [ {"server_id": "server1", "qname_server_count": 2, "top_ips": [ {"ip": "ip1", "ip_server_count": 1, "ip_server_percentage": 100 * 1 / 2}, {"ip": "ip2", "ip_server_count": 1, "ip_server_percentage": 100 * 1 / 2}]}]}]}] # TODO: assert on lists within dictionaries # self.assertDictEqual(expected_output[0]["qnames_data"][0], result[0]["qnames_data"][0]) pass