scapy_server: add build_pkt_details test with offset & length verification
authorAnton Kiselev <[email protected]>
Tue, 7 Mar 2017 07:54:08 +0000 (14:54 +0700)
committerYaroslav Brustinov <[email protected]>
Tue, 7 Mar 2017 16:13:23 +0000 (18:13 +0200)
Signed-off-by: Anton Kiselev <[email protected]>
scripts/automation/trex_control_plane/stl/services/scapy_server/unit_tests/test_scapy_service.py

index 7d70931..430e569 100644 (file)
@@ -19,9 +19,35 @@ TEST_PKT_DEF = [
         layer_def("TCP", sport="443")
         ]
 
-def test_build_pkt():
-    pkt = build_pkt_get_scapy(TEST_PKT_DEF)
+def test_build_pkt_details():
+    pkt_data = build_pkt(TEST_PKT_DEF)
+    pkt = build_pkt_to_scapy(pkt_data)
     assert(pkt[TCP].sport == 443)
+    ether = pkt_data['data'][0]
+    ip = pkt_data['data'][1]
+    tcp = pkt_data['data'][2]
+    assert(len(pkt_data["binary"]) == 72) #b64 encoded data
+
+    # absolute frame offset
+    assert(ether['offset'] == 0)
+    assert(ip['offset'] == 14)
+    assert(tcp['offset'] == 34)
+
+    # relative field offsets
+    tcp_sport = tcp["fields"][0]
+    assert(tcp_sport["id"] == "sport")
+    assert(tcp_sport["offset"] == 0)
+    assert(tcp_sport["length"] == 2)
+
+    tcp_dport = tcp["fields"][1]
+    assert(tcp_dport["id"] == "dport")
+    assert(tcp_dport["offset"] == 2)
+    assert(tcp_sport["length"] == 2)
+
+    tcp_chksum = tcp["fields"][8]
+    assert(tcp_chksum["id"] == "chksum")
+    assert(tcp_chksum["offset"] == 16)
+    assert(tcp_chksum["length"] == 2)
 
 def test_build_invalid_structure_pkt():
     ether_fields = {"dst": TEST_MAC_1, "type": "LOOP"}