class TestDataSortedByQTypeEventProcessor(unittest.TestCase): def setUp(self): self.r = fakeredis.FakeStrictRedis() self.test_config = json.load(open(TEST_CONFIG_FILE)) self.qtype_ep = DataSortedByQTypeEventProcessor(self.r, self.test_config) def tearDown(self): self.r.flushall() def test_select_item(self): input_data = {"qtype_data": [ {"qtype": 1, "queries": [{"ip": 'ip1', "queries_count": 1}, {"ip": 'ip2', "queries_count": 5}, {"ip": 'ip3', "queries_count": 10}]}, {"qtype": 2, "queries": [{"ip": 'ip4', "queries_count": 1}, {"ip": 'ip5', "queries_count": 5}, {"ip": 'ip6', "queries_count": 10}]}, {"qtype": 3, "queries": [{"ip": 'ip7', "queries_count": 1}, {"ip": 'ip8', "queries_count": 5}, {"ip": 'ip9', "queries_count": 10}]} ], "time_span": 1} result = self.qtype_ep.select_item(input_data) expected_output_data = {"qtype_data": [ {"qtype": 1, "queries": [{"ip": 'ip3', "queries_count": 10}, {"ip": 'ip2', "queries_count": 5}]}, {"qtype": 2, "queries": [{"ip": 'ip6', "queries_count": 10}, {"ip": 'ip5', "queries_count": 5}]}, {"qtype": 3, "queries": [{"ip": 'ip9', "queries_count": 10}, {"ip": 'ip8', "queries_count": 5}]} ], "time_span": 1} self.assertDictEqual(result, expected_output_data) def test_process(self): input_item_1 = {"type": "QueriesSummary", "timeStamp": 1, "serverId": "server1", "data": [{"ip": "ip1", "queries": {"qtype1": ["domain1", "domain2"], "qtype2": ["domain3", "domain4"]}}, {"ip": "ip2", "queries": {"qtype2": ["domain2"]}}, {"ip": "ip3", "queries": {"qtype1": ["domain5", "domain6"]}}]} _, result = self.qtype_ep.process(input_item_1) expected_output = [{"time_span": 1, "qtype_data": [ {"qtype": "qtype2", "queries": [ {"ip": "ip1", "qtype_queries_percentage": 2 * 100 / 3, "queries_count": 2, "server_id": "server1", "total_queries_percentage": 2 * 100 / 7}, {"ip": "ip2", "qtype_queries_percentage": 1 * 100 / 3, "queries_count": 1, "server_id": "server1", "total_queries_percentage": 1 * 100 / 7}]}, {"qtype": "qtype1", "queries": [ {"ip": "ip3", "qtype_queries_percentage": 2 * 100 / 4, "queries_count": 2, "server_id": "server1", "total_queries_percentage": 2 * 100 / 7}, {"ip": "ip1", "qtype_queries_percentage": 2 * 100 / 4, "queries_count": 2, "server_id": "server1", "total_queries_percentage": 2 * 100 / 7}]}]}] # TODO: assert on lists within dictionaries # self.assertDictEqual(result[0]["qtype_data"][0], expected_output[0]["qtype_data"][0]) pass
def setUp(self): self.r = fakeredis.FakeStrictRedis() self.test_config = json.load(open(TEST_CONFIG_FILE)) self.qtype_ep = DataSortedByQTypeEventProcessor(self.r, self.test_config)