From d48808cb69afe4f0870116e1105b6332a7b7be72 Mon Sep 17 00:00:00 2001 From: slowr Date: Tue, 5 Mar 2019 18:19:35 +0000 Subject: [PATCH] changed behavior of tester to support multiple expected messages Signed-off-by: slowr --- backend/testing/messages.json | 977 ------------------ backend/testing/tester.py | 56 +- .../testing/testfiles/withdrawn_complex.json | 187 ++-- 3 files changed, 118 insertions(+), 1102 deletions(-) delete mode 100644 backend/testing/messages.json diff --git a/backend/testing/messages.json b/backend/testing/messages.json deleted file mode 100644 index 495f3b6f2..000000000 --- a/backend/testing/messages.json +++ /dev/null @@ -1,977 +0,0 @@ -[ - { - "send": { - "key": "1", - "timestamp": 1, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [8, 3, 2, 1, 100], - "prefix": "10.0.0.0/8", - "peer_asn": 8 - }, - "detection_update_response": { - "key": "1", - "handled": true, - "matched_prefix": "10.0.0.0/8", - "origin_as": 100 - }, - "detection_hijack_response": { - "prefix": "10.0.0.0/8", - "hijack_as": 100, - "type": "E|0|-", - "time_started": 1.0, - "configured_prefix": "10.0.0.0/8" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.0.0/8", - "asns_inf": [8, 1, 2, 3], - "hijack_as": 100, - "peers_seen": [8], - "num_asns_inf": 4, - "num_peers_seen": 1, - "configured_prefix": "10.0.0.0/8" - } - }, - { - "send": { - "key": "2", - "timestamp": 2, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 100, 1], - "prefix": "10.0.0.0/8", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "2", - "handled": true, - "matched_prefix": "10.0.0.0/8", - "origin_as": 1 - }, - "detection_hijack_response": { - "prefix": "10.0.0.0/8", - "hijack_as": 100, - "type": "E|1|-", - "time_started": 2.0, - "configured_prefix": "10.0.0.0/8" - }, - "database_hijack_response": { - "type": "E|1|-", - "active": true, - "prefix": "10.0.0.0/8", - "asns_inf": [2, 3, 4], - "hijack_as": 100, - "peers_seen": [4], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.0.0.0/8" - } - }, - { - "send": { - "key": "3", - "timestamp": 3, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 100], - "prefix": "10.128.0.0/16", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "3", - "handled": true, - "matched_prefix": "10.0.0.0/8", - "origin_as": 100 - }, - "detection_hijack_response": { - "prefix": "10.128.0.0/16", - "hijack_as": 100, - "type": "S|0|-", - "time_started": 3.0, - "configured_prefix": "10.0.0.0/8" - }, - "database_hijack_response": { - "type": "S|0|-", - "active": true, - "prefix": "10.128.0.0/16", - "asns_inf": [2, 3, 4], - "hijack_as": 100, - "peers_seen": [4], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.0.0.0/8" - } - }, - { - "send": { - "key": "4", - "timestamp": 4, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 101, 101, 101, 101], - "prefix": "10.0.0.0/8", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "4", - "handled": true, - "matched_prefix": "10.0.0.0/8", - "origin_as": 101 - }, - "detection_hijack_response": { - "prefix": "10.0.0.0/8", - "hijack_as": 101, - "type": "E|0|-", - "time_started": 4.0, - "configured_prefix": "10.0.0.0/8" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.0.0/8", - "asns_inf": [2, 3, 4], - "hijack_as": 101, - "peers_seen": [4], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.0.0.0/8" - } - }, - { - "send": { - "key": "5", - "timestamp": 5, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 102, 3, 2, 102], - "prefix": "10.0.0.0/8", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "5", - "handled": true, - "matched_prefix": "10.0.0.0/8", - "origin_as": 102 - }, - "detection_hijack_response": { - "prefix": "10.0.0.0/8", - "hijack_as": 102, - "type": "E|0|-", - "time_started": 5.0, - "configured_prefix": "10.0.0.0/8" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.0.0/8", - "asns_inf": [2, 3, 4], - "hijack_as": 102, - "peers_seen": [4], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.0.0.0/8" - } - }, - { - "send": { - "key": "6", - "timestamp": 6, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 100], - "prefix": "10.0.0.0/16", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "6", - "handled": true, - "matched_prefix": "10.0.0.0/16", - "origin_as": 100 - }, - "detection_hijack_response": { - "prefix": "10.0.0.0/16", - "hijack_as": 100, - "type": "Q|0|-", - "time_started": 6.0, - "configured_prefix": "10.0.0.0/16" - }, - "database_hijack_response": { - "type": "Q|0|-", - "active": true, - "prefix": "10.0.0.0/16", - "asns_inf": [2, 3, 4], - "hijack_as": 100, - "peers_seen": [4], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.0.0.0/16" - } - }, - { - "send": { - "key": "7", - "timestamp": 7, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [7, 6, 5, 100], - "prefix": "10.0.0.0/8", - "peer_asn": 7 - }, - "detection_update_response": { - "key": "7", - "handled": true, - "matched_prefix": "10.0.0.0/8", - "origin_as": 100 - }, - "detection_hijack_response": { - "prefix": "10.0.0.0/8", - "hijack_as": 100, - "type": "E|0|-", - "time_started": 1.0, - "time_last": 7.0, - "configured_prefix": "10.0.0.0/8" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.0.0/8", - "asns_inf": [1, 2, 3, 5, 6, 7, 8], - "hijack_as": 100, - "peers_seen": [8, 7], - "num_asns_inf": 7, - "num_peers_seen": 2, - "configured_prefix": "10.0.0.0/8" - } - }, - { - "send": { - "key": "8", - "timestamp": 8, - "orig_path": [], - "communities": [], - "service": "a", - "type": "W", - "path": [], - "prefix": "10.0.0.0/8", - "peer_asn": 7 - }, - "detection_update_response": { - "key": "8", - "handled": true, - "matched_prefix": "10.0.0.0/8", - "peer_asn": 7 - }, - "database_hijack_response": { - "peers_withdrawn": [7], - "active": true - } - }, - { - "send": { - "key": "9", - "timestamp": 9, - "orig_path": [], - "communities": [], - "service": "a", - "type": "W", - "path": [], - "prefix": "10.0.0.0/8", - "peer_asn": 8 - }, - "detection_update_response": { - "key": "9", - "handled": true, - "matched_prefix": "10.0.0.0/8", - "peer_asn": 8 - }, - "database_hijack_response": { - "peers_withdrawn": [7, 8], - "active": false, - "withdrawn": true - } - }, - { - "send": { - "key": "10", - "timestamp": 10, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 200], - "prefix": "10.0.1.0/24", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "10", - "handled": true, - "matched_prefix": "10.0.1.0/24", - "origin_as": 200, - "hijack_key": [] - } - }, - { - "send": { - "key": "11", - "timestamp": 11, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 200], - "prefix": "10.0.1.0/25", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "11", - "handled": true, - "matched_prefix": "10.0.1.0/24", - "origin_as": 200 - }, - "detection_hijack_response": { - "prefix": "10.0.1.0/25", - "hijack_as": -1, - "type": "S|-|-", - "time_started": 11.0, - "configured_prefix": "10.0.1.0/24" - }, - "database_hijack_response": { - "type": "S|-|-", - "active": true, - "prefix": "10.0.1.0/25", - "asns_inf": [4], - "hijack_as": -1, - "peers_seen": [4], - "num_asns_inf": 1, - "num_peers_seen": 1, - "configured_prefix": "10.0.1.0/24" - } - }, - { - "send": { - "key": "12", - "timestamp": 12, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 242], - "prefix": "10.0.2.0/24", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "12", - "handled": true, - "matched_prefix": "10.0.2.0/24", - "origin_as": 242, - "hijack_key": [] - } - }, - { - "send": { - "key": "13", - "timestamp": 13, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 240], - "prefix": "10.0.2.0/25", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "13", - "handled": true, - "matched_prefix": "10.0.2.0/24", - "origin_as": 240 - }, - "detection_hijack_response": { - "prefix": "10.0.2.0/25", - "hijack_as": 240, - "type": "S|0|-", - "time_started": 13.0, - "configured_prefix": "10.0.2.0/24" - }, - "database_hijack_response": { - "type": "S|0|-", - "active": true, - "prefix": "10.0.2.0/25", - "asns_inf": [2, 3, 4], - "hijack_as": 240, - "peers_seen": [4], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.0.2.0/24" - } - }, - { - "send": { - "key": "14", - "timestamp": 14, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 240], - "prefix": "10.0.2.0/24", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "14", - "handled": true, - "matched_prefix": "10.0.2.0/24", - "origin_as": 240 - }, - "detection_hijack_response": { - "prefix": "10.0.2.0/24", - "hijack_as": 240, - "type": "E|0|-", - "time_started": 14.0, - "configured_prefix": "10.0.2.0/24" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.2.0/24", - "asns_inf": [2, 3, 4], - "hijack_as": 240, - "peers_seen": [4], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.0.2.0/24" - } - }, - { - "send": { - "key": "15", - "timestamp": 15, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 243], - "prefix": "10.0.3.0/24", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "15", - "handled": true, - "matched_prefix": "10.0.3.0/24", - "origin_as": 243, - "hijack_key": [] - } - }, - { - "send": { - "key": "16", - "timestamp": 16, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 240], - "prefix": "10.0.3.0/25", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "16", - "handled": true, - "matched_prefix": "10.0.3.0/24", - "origin_as": 240 - }, - "detection_hijack_response": { - "prefix": "10.0.3.0/25", - "hijack_as": 240, - "type": "S|0|-", - "time_started": 16.0, - "configured_prefix": "10.0.3.0/24" - }, - "database_hijack_response": { - "type": "S|0|-", - "active": true, - "prefix": "10.0.3.0/25", - "asns_inf": [2,3,4], - "hijack_as": 240, - "peers_seen": [4], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.0.3.0/24" - } - }, - { - "send": { - "key": "17", - "timestamp": 17, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 100, 1], - "prefix": "10.1.0.0/16", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "17", - "handled": true, - "matched_prefix": "10.0.0.0/8", - "origin_as": 1 - }, - "detection_hijack_response": { - "prefix": "10.1.0.0/16", - "hijack_as": 100, - "type": "S|1|-", - "time_started": 17.0, - "configured_prefix": "10.0.0.0/8" - }, - "database_hijack_response": { - "type": "S|1|-", - "active": true, - "prefix": "10.1.0.0/16", - "asns_inf": [2, 3, 4], - "hijack_as": 100, - "peers_seen": [4], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.0.0.0/8" - } - }, - { - "send": { - "key": "18", - "timestamp": 18, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [7, 6, 5, 110], - "prefix": "10.0.4.0/24", - "peer_asn": 7 - }, - "detection_update_response": { - "key": "18", - "handled": true, - "matched_prefix": "10.0.4.0/24", - "origin_as": 110 - }, - "detection_hijack_response": { - "prefix": "10.0.4.0/24", - "hijack_as": 110, - "type": "E|0|-", - "time_started": 18.0, - "time_last": 18.0, - "configured_prefix": "10.0.4.0/24" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [5, 6, 7], - "hijack_as": 110, - "peers_seen": [7], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.0.4.0/24" - } - }, - { - "send": { - "key": "19", - "timestamp": 19, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [8, 6, 5, 110], - "prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "detection_update_response": { - "key": "19", - "handled": true, - "matched_prefix": "10.0.4.0/24", - "origin_as": 110 - }, - "detection_hijack_response": { - "prefix": "10.0.4.0/24", - "hijack_as": 110, - "type": "E|0|-", - "time_started": 18.0, - "time_last": 19.0, - "configured_prefix": "10.0.4.0/24" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [5, 6, 7, 8], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 4, - "num_peers_seen": 2, - "configured_prefix": "10.0.4.0/24" - } - }, - { - "send": { - "key": "20", - "timestamp": 20, - "orig_path": [], - "communities": [], - "service": "a", - "type": "W", - "path": [], - "prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "detection_update_response": { - "key": "20", - "handled": true, - "matched_prefix": "10.0.4.0/24", - "peer_asn": 8, - "time_started": 18.0, - "time_last": 20.0 - }, - "database_hijack_response": { - "peers_withdrawn": [8], - "active": true - } - }, - { - "send": { - "key": "21", - "timestamp": 21, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [8, 6, 3, 110], - "prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "detection_update_response": { - "key": "21", - "handled": true, - "matched_prefix": "10.0.4.0/24", - "origin_as": 110 - }, - "detection_hijack_response": { - "prefix": "10.0.4.0/24", - "hijack_as": 110, - "type": "E|0|-", - "time_started": 18.0, - "time_last": 21.0, - "configured_prefix": "10.0.4.0/24" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [5, 6, 7, 8], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 4, - "num_peers_seen": 2, - "peers_withdrawn": [], - "configured_prefix": "10.0.4.0/24" - } - }, - { - "send": { - "key": "21", - "timestamp": 21, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [8, 6, 3, 110], - "prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [3, 5, 6, 7, 8], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 5, - "num_peers_seen": 2, - "peers_withdrawn": [], - "configured_prefix": "10.0.4.0/24" - } - }, - { - "send": { - "key": "23", - "timestamp": 23, - "orig_path": [], - "communities": [], - "service": "a", - "type": "W", - "path": [], - "prefix": "10.0.4.0/24", - "peer_asn": 7 - }, - "detection_update_response": { - "key": "23", - "handled": true, - "matched_prefix": "10.0.4.0/24", - "peer_asn": 7 - }, - "database_hijack_response": { - "peers_withdrawn": [7], - "active": true - } - }, - { - "send": { - "key": "24", - "timestamp": 24, - "orig_path": [], - "communities": [], - "service": "c", - "type": "A", - "path": [150, 6, 3, 110], - "prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "detection_update_response": { - "key": "24", - "handled": true, - "matched_prefix": "10.0.4.0/24", - "origin_as": 110 - }, - "detection_hijack_response": { - "prefix": "10.0.4.0/24", - "hijack_as": 110, - "type": "E|0|-", - "time_started": 18.0, - "time_last": 24.0, - "configured_prefix": "10.0.4.0/24" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [3, 5, 6, 7, 8], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 5, - "num_peers_seen": 2, - "peers_withdrawn": [7], - "configured_prefix": "10.0.4.0/24" - } - }, - { - "send": { - "key": "24", - "timestamp": 24, - "orig_path": [], - "communities": [], - "service": "c", - "type": "A", - "path": [150, 6, 3, 110], - "prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [150, 3, 5, 6, 7, 8], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 6, - "num_peers_seen": 2, - "peers_withdrawn": [7], - "configured_prefix": "10.0.4.0/24" - } - }, - { - "send": { - "key": "26", - "timestamp": 26, - "orig_path": [], - "communities": [], - "service": "a", - "type": "W", - "path": [], - "prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "detection_update_response": { - "key": "26", - "handled": true, - "matched_prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "database_hijack_response": { - "peers_withdrawn": [7, 8], - "withdrawn": true - } - }, - { - "send": { - "key": "27", - "timestamp": 27, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [4, 3, 2, 200], - "prefix": "10.10.1.0/24", - "peer_asn": 4 - }, - "detection_update_response": { - "key": "27", - "handled": true, - "matched_prefix": "10.10.1.0/24", - "origin_as": 200 - }, - "detection_hijack_response": { - "prefix": "10.10.1.0/24", - "hijack_as": 200, - "type": "E|0|-", - "time_started": 27.0, - "configured_prefix": "10.10.1.0/24" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.10.1.0/24", - "asns_inf": [2, 3, 4], - "hijack_as": 200, - "peers_seen": [4], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.10.1.0/24" - } - }, - { - "send": { - "key": "28", - "timestamp": 28, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [5, 3, 2, 201], - "prefix": "10.11.1.0/24", - "peer_asn": 5 - }, - "detection_update_response": { - "key": "28", - "handled": true, - "matched_prefix": "10.11.1.0/24", - "origin_as": 201 - }, - "detection_hijack_response": { - "prefix": "10.11.1.0/24", - "hijack_as": 201, - "type": "E|0|-", - "time_started": 28.0, - "configured_prefix": "10.11.1.0/24" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.11.1.0/24", - "asns_inf": [2, 3, 5], - "hijack_as": 201, - "peers_seen": [5], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.11.1.0/24" - } - }, - { - "send": { - "key": "29", - "timestamp": 29, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [6, 3, 2, 202], - "prefix": "10.12.1.0/24", - "peer_asn": 6 - }, - "detection_update_response": { - "key": "29", - "handled": true, - "matched_prefix": "10.12.1.0/24", - "origin_as": 202 - }, - "detection_hijack_response": { - "prefix": "10.12.1.0/24", - "hijack_as": 202, - "type": "E|0|-", - "time_started": 29.0, - "configured_prefix": "10.12.1.0/24" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.12.1.0/24", - "asns_inf": [2, 3, 6], - "hijack_as": 202, - "peers_seen": [6], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.12.1.0/24" - } - }, - { - "send": { - "key": "30", - "timestamp": 30, - "orig_path": [], - "communities": [], - "service": "b", - "type": "A", - "path": [7, 3, 2, 203], - "prefix": "10.13.1.0/24", - "peer_asn": 7 - }, - "detection_update_response": { - "key": "30", - "handled": true, - "matched_prefix": "10.13.1.0/24", - "origin_as": 203 - }, - "detection_hijack_response": { - "prefix": "10.13.1.0/24", - "hijack_as": 203, - "type": "E|0|-", - "time_started": 30.0, - "configured_prefix": "10.13.1.0/24" - }, - "database_hijack_response": { - "type": "E|0|-", - "active": true, - "prefix": "10.13.1.0/24", - "asns_inf": [2, 3, 7], - "hijack_as": 203, - "peers_seen": [7], - "num_asns_inf": 3, - "num_peers_seen": 1, - "configured_prefix": "10.13.1.0/24" - } - } -] diff --git a/backend/testing/tester.py b/backend/testing/tester.py index 772fd620c..aaa68908f 100644 --- a/backend/testing/tester.py +++ b/backend/testing/tester.py @@ -136,23 +136,45 @@ def validate_message(self, body, message): # compare expected message with received one. exit on # mismatch. - for key in set(event.keys()).intersection(expected.keys()): - if "time" in key: - expected[key] += self.time_now - assert event[key] == expected[key] or ( - isinstance(event[key], (list, set)) - and set(event[key]) == set(expected[key]) - ), ( - 'Test "{}" - Batch #{} - Type {}: Unexpected' - ' value for key "{}". Received: {}, Expected: {}'.format( + if isinstance(expected, dict): + for key in set(event.keys()).intersection(expected.keys()): + if "time" in key: + expected[key] += self.time_now + assert event[key] == expected[key] or ( + isinstance(event[key], (list, set)) + and set(event[key]) == set(expected[key]) + ), ( + 'Test "{}" - Batch #{} - Type {}: Unexpected' + ' value for key "{}". Received: {}, Expected: {}'.format( + self.curr_test, + self.curr_idx, + message.delivery_info["routing_key"], + key, + event[key], + expected[key], + ) + ) + elif isinstance(expected, list): + correct = [True] * len(expected) + for idx, expected_item in enumerate(expected): + for key in set(event.keys()).intersection(expected_item.keys()): + if "time" in key: + expected_item[key] += self.time_now + if event[key] != expected_item[key] or ( + isinstance(event[key], (list, set)) + and set(event[key]) != set(expected_item[key]) + ): + correct[idx] = False + break + if not any(correct): + assert 'Test "{}" - Batch #{} - Type {}: Unexpected' + " value for complex scenario. Event: {}, Expected List: {}".format( self.curr_test, self.curr_idx, message.delivery_info["routing_key"], - key, - event[key], - expected[key], + event, + expected, ) - ) self.expected_messages -= 1 if self.expected_messages <= 0: @@ -164,7 +186,13 @@ def send_next_message(self, conn): Publish next custom BGP update on the bgp-updates exchange. """ with conn.Producer() as producer: - self.expected_messages = len(self.messages[self.curr_idx]) - 1 + self.expected_messages = 0 + for key in self.messages[self.curr_idx]: + if key != "send": + if isinstance(self.messages[self.curr_idx][key], dict): + self.expected_messages += 1 + else: + self.expected_messages += len(self.messages[self.curr_idx][key]) # offset to account for "real-time" tests for key in self.messages[self.curr_idx]["send"]: diff --git a/backend/testing/testfiles/withdrawn_complex.json b/backend/testing/testfiles/withdrawn_complex.json index fcdfaa24d..7243500c9 100644 --- a/backend/testing/testfiles/withdrawn_complex.json +++ b/backend/testing/testfiles/withdrawn_complex.json @@ -126,43 +126,32 @@ "time_last": 21.0, "configured_prefix": "10.0.4.0/24" }, - "database_hijack_response": { - "type": "E|0|-|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [5, 6, 7, 8], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 4, - "num_peers_seen": 2, - "peers_withdrawn": [], - "configured_prefix": "10.0.4.0/24" - } - }, - { - "send": { - "key": "21", - "timestamp": 21, - "orig_path": [], - "communities": [], - "service": "a", - "type": "A", - "path": [8, 6, 3, 110], - "prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "database_hijack_response": { - "type": "E|0|-|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [3, 5, 6, 7, 8], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 5, - "num_peers_seen": 2, - "peers_withdrawn": [], - "configured_prefix": "10.0.4.0/24" - } + "database_hijack_response": [ + { + "type": "E|0|-|-", + "active": true, + "prefix": "10.0.4.0/24", + "asns_inf": [5, 6, 7, 8], + "hijack_as": 110, + "peers_seen": [7, 8], + "num_asns_inf": 4, + "num_peers_seen": 2, + "peers_withdrawn": [], + "configured_prefix": "10.0.4.0/24" + }, + { + "type": "E|0|-|-", + "active": true, + "prefix": "10.0.4.0/24", + "asns_inf": [3, 5, 6, 7, 8], + "hijack_as": 110, + "peers_seen": [7, 8], + "num_asns_inf": 5, + "num_peers_seen": 2, + "peers_withdrawn": [], + "configured_prefix": "10.0.4.0/24" + } + ] }, { "send": { @@ -213,43 +202,31 @@ "time_last": 24.0, "configured_prefix": "10.0.4.0/24" }, - "database_hijack_response": { - "type": "E|0|-|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [3, 5, 6, 7, 8], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 5, - "num_peers_seen": 2, - "peers_withdrawn": [7], - "configured_prefix": "10.0.4.0/24" - } - }, - { - "send": { - "key": "24", - "timestamp": 24, - "orig_path": [], - "communities": [], - "service": "c", - "type": "A", - "path": [8, 9, 110], - "prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "database_hijack_response": { - "type": "E|0|-|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [3, 5, 6, 7, 8, 9], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 6, - "num_peers_seen": 2, - "peers_withdrawn": [7], - "configured_prefix": "10.0.4.0/24" - } + "database_hijack_response": [ + { + "type": "E|0|-|-", + "active": true, + "prefix": "10.0.4.0/24", + "asns_inf": [3, 5, 6, 7, 8], + "hijack_as": 110, + "peers_seen": [7, 8], + "num_asns_inf": 5, + "num_peers_seen": 2, + "peers_withdrawn": [7], + "configured_prefix": "10.0.4.0/24" + }, { + "type": "E|0|-|-", + "active": true, + "prefix": "10.0.4.0/24", + "asns_inf": [3, 5, 6, 7, 8, 9], + "hijack_as": 110, + "peers_seen": [7, 8], + "num_asns_inf": 6, + "num_peers_seen": 2, + "peers_withdrawn": [7], + "configured_prefix": "10.0.4.0/24" + } + ] }, { "send": { @@ -335,43 +312,31 @@ "time_last": 28.0, "configured_prefix": "10.0.4.0/24" }, - "database_hijack_response": { - "type": "E|0|-|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [3, 5, 6, 7, 8, 9, 10], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 7, - "num_peers_seen": 2, - "peers_withdrawn": [7], - "configured_prefix": "10.0.4.0/24" - } - }, - { - "send": { - "key": "28", - "timestamp": 28, - "orig_path": [], - "communities": [], - "service": "c", - "type": "A", - "path": [8, 11, 110], - "prefix": "10.0.4.0/24", - "peer_asn": 8 - }, - "database_hijack_response": { - "type": "E|0|-|-", - "active": true, - "prefix": "10.0.4.0/24", - "asns_inf": [3, 5, 6, 7, 8, 9, 10, 11], - "hijack_as": 110, - "peers_seen": [7, 8], - "num_asns_inf": 8, - "num_peers_seen": 2, - "peers_withdrawn": [7], - "configured_prefix": "10.0.4.0/24" - } + "database_hijack_response": [ + { + "type": "E|0|-|-", + "active": true, + "prefix": "10.0.4.0/24", + "asns_inf": [3, 5, 6, 7, 8, 9, 10], + "hijack_as": 110, + "peers_seen": [7, 8], + "num_asns_inf": 7, + "num_peers_seen": 2, + "peers_withdrawn": [7], + "configured_prefix": "10.0.4.0/24" + }, { + "type": "E|0|-|-", + "active": true, + "prefix": "10.0.4.0/24", + "asns_inf": [3, 5, 6, 7, 8, 9, 10, 11], + "hijack_as": 110, + "peers_seen": [7, 8], + "num_asns_inf": 8, + "num_peers_seen": 2, + "peers_withdrawn": [7], + "configured_prefix": "10.0.4.0/24" + } + ] }, { "send": {