diff --git a/tests/fixtures/osx-10.14.6/ping6-ip-dup.json b/tests/fixtures/osx-10.14.6/ping6-ip-dup.json new file mode 100644 index 00000000..4ec30cd9 --- /dev/null +++ b/tests/fixtures/osx-10.14.6/ping6-ip-dup.json @@ -0,0 +1 @@ +{"source_ip": "fe80::c48:5896:526d:81ba%en0", "destination_ip": "ff02::1%en0", "data_bytes": 56, "pattern": null, "destination": "ff02::1%en0", "packets_transmitted": 5, "packets_received": 5, "packet_loss_percent": 0.0, "duplicates": 58, "round_trip_ms_min": 0.302, "round_trip_ms_avg": 180.26, "round_trip_ms_max": 749.182, "round_trip_ms_stddev": 250.393, "responses": [{"type": "reply", "bytes": 16, "response_ip": "fe80::c48:5896:526d:81ba%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 0.302, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "fe80::c1cb:715d:bc3e:b8a0%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 0.56, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::3e37:86ff:fe15:adf7%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 2.677, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::4ab:6f0f:bdb6:9dd3%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 2.765, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::feae:34ff:fea1:3a80%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 2.976, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::feae:34ff:fea1:3a82%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 3.045, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::3e37:86ff:fe15:ddb3%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 6.182, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::10ff:f3b1:fe91:e200%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 10.536, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::da30:62ff:fe2e:86cf%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 102.839, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::18a5:fc21:6794:b605%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 104.367, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::ced:c70f:bb6d:804a%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 195.421, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::9eb6:54ff:fe5a:5a7c%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 244.586, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::4ad7:5ff:fef1:86e8%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 699.725, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::bd:798d:17ea:17a5%en0", "icmp_seq": 0, "ttl": 64, "time_ms": 704.087, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "2600:1700:bab0:d40:5214:79ff:fe12:423e", "icmp_seq": 0, "ttl": 64, "time_ms": 704.996, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::c48:5896:526d:81ba%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 0.458, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "fe80::c1cb:715d:bc3e:b8a0%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 0.776, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::3e37:86ff:fe15:adf7%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 4.926, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::4ab:6f0f:bdb6:9dd3%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 5.134, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::feae:34ff:fea1:3a80%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 5.242, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::feae:34ff:fea1:3a82%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 5.444, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::3e37:86ff:fe15:ddb3%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 5.657, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::10ff:f3b1:fe91:e200%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 21.339, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::9eb6:54ff:fe5a:5a7c%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 53.804, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::da30:62ff:fe2e:86cf%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 748.798, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::18a5:fc21:6794:b605%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 749.069, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::1012:688e:7e41:6338%en0", "icmp_seq": 1, "ttl": 64, "time_ms": 749.182, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::c48:5896:526d:81ba%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 0.385, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "fe80::c1cb:715d:bc3e:b8a0%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 0.713, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::3e37:86ff:fe15:adf7%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 6.868, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::4ab:6f0f:bdb6:9dd3%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 6.991, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::feae:34ff:fea1:3a80%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 7.06, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::feae:34ff:fea1:3a82%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 7.174, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::3e37:86ff:fe15:ddb3%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 9.045, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::10ff:f3b1:fe91:e200%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 11.193, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::4ad7:5ff:fef1:86e8%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 141.374, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "2600:1700:bab0:d40:5214:79ff:fe12:423e", "icmp_seq": 2, "ttl": 64, "time_ms": 141.53, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::bd:798d:17ea:17a5%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 141.565, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::c5d:5f82:6ce5:b9b9%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 142.862, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::8d:8cfc:35ac:578f%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 145.985, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::da30:62ff:fe2e:86cf%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 566.996, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::18a5:fc21:6794:b605%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 567.127, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::1012:688e:7e41:6338%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 567.184, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::9eb6:54ff:fe5a:5a7c%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 657.246, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::ced:c70f:bb6d:804a%en0", "icmp_seq": 2, "ttl": 64, "time_ms": 657.567, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::c48:5896:526d:81ba%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 0.485, "duplicate": false}, {"type": "reply", "bytes": 16, "response_ip": "fe80::c1cb:715d:bc3e:b8a0%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 0.948, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::3e37:86ff:fe15:adf7%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 6.796, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::4ab:6f0f:bdb6:9dd3%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 6.918, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::feae:34ff:fea1:3a80%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 6.994, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::feae:34ff:fea1:3a82%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 7.059, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::3e37:86ff:fe15:ddb3%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 7.122, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::10ff:f3b1:fe91:e200%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 9.741, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::8d:8cfc:35ac:578f%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 152.829, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "2600:1700:bab0:d40:5214:79ff:fe12:423e", "icmp_seq": 3, "ttl": 64, "time_ms": 158.816, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::bd:798d:17ea:17a5%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 158.879, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::c5d:5f82:6ce5:b9b9%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 158.956, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::4ad7:5ff:fef1:86e8%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 159.015, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::18a5:fc21:6794:b605%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 377.87, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::1012:688e:7e41:6338%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 377.963, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::da30:62ff:fe2e:86cf%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 381.785, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::9eb6:54ff:fe5a:5a7c%en0", "icmp_seq": 3, "ttl": 64, "time_ms": 470.009, "duplicate": true}, {"type": "reply", "bytes": 16, "response_ip": "fe80::c48:5896:526d:81ba%en0", "icmp_seq": 4, "ttl": 64, "time_ms": 0.425, "duplicate": false}]} diff --git a/tests/fixtures/osx-10.14.6/ping6-ip-dup.out b/tests/fixtures/osx-10.14.6/ping6-ip-dup.out new file mode 100644 index 00000000..614417c0 --- /dev/null +++ b/tests/fixtures/osx-10.14.6/ping6-ip-dup.out @@ -0,0 +1,68 @@ +PING6(56=40+8+8 bytes) fe80::c48:5896:526d:81ba%en0 --> ff02::1%en0 +16 bytes from fe80::c48:5896:526d:81ba%en0, icmp_seq=0 hlim=64 time=0.302 ms +16 bytes from fe80::c1cb:715d:bc3e:b8a0%en0, icmp_seq=0 hlim=64 time=0.560 ms +16 bytes from fe80::3e37:86ff:fe15:adf7%en0, icmp_seq=0 hlim=64 time=2.677 ms +16 bytes from fe80::4ab:6f0f:bdb6:9dd3%en0, icmp_seq=0 hlim=64 time=2.765 ms +16 bytes from fe80::feae:34ff:fea1:3a80%en0, icmp_seq=0 hlim=64 time=2.976 ms +16 bytes from fe80::feae:34ff:fea1:3a82%en0, icmp_seq=0 hlim=64 time=3.045 ms +16 bytes from fe80::3e37:86ff:fe15:ddb3%en0, icmp_seq=0 hlim=64 time=6.182 ms +16 bytes from fe80::10ff:f3b1:fe91:e200%en0, icmp_seq=0 hlim=64 time=10.536 ms +16 bytes from fe80::da30:62ff:fe2e:86cf%en0, icmp_seq=0 hlim=64 time=102.839 ms +16 bytes from fe80::18a5:fc21:6794:b605%en0, icmp_seq=0 hlim=64 time=104.367 ms +16 bytes from fe80::ced:c70f:bb6d:804a%en0, icmp_seq=0 hlim=64 time=195.421 ms +16 bytes from fe80::9eb6:54ff:fe5a:5a7c%en0, icmp_seq=0 hlim=64 time=244.586 ms +16 bytes from fe80::4ad7:5ff:fef1:86e8%en0, icmp_seq=0 hlim=64 time=699.725 ms +16 bytes from fe80::bd:798d:17ea:17a5%en0, icmp_seq=0 hlim=64 time=704.087 ms +16 bytes from 2600:1700:bab0:d40:5214:79ff:fe12:423e, icmp_seq=0 hlim=64 time=704.996 ms +16 bytes from fe80::c48:5896:526d:81ba%en0, icmp_seq=1 hlim=64 time=0.458 ms +16 bytes from fe80::c1cb:715d:bc3e:b8a0%en0, icmp_seq=1 hlim=64 time=0.776 ms +16 bytes from fe80::3e37:86ff:fe15:adf7%en0, icmp_seq=1 hlim=64 time=4.926 ms +16 bytes from fe80::4ab:6f0f:bdb6:9dd3%en0, icmp_seq=1 hlim=64 time=5.134 ms +16 bytes from fe80::feae:34ff:fea1:3a80%en0, icmp_seq=1 hlim=64 time=5.242 ms +16 bytes from fe80::feae:34ff:fea1:3a82%en0, icmp_seq=1 hlim=64 time=5.444 ms +16 bytes from fe80::3e37:86ff:fe15:ddb3%en0, icmp_seq=1 hlim=64 time=5.657 ms +16 bytes from fe80::10ff:f3b1:fe91:e200%en0, icmp_seq=1 hlim=64 time=21.339 ms +16 bytes from fe80::9eb6:54ff:fe5a:5a7c%en0, icmp_seq=1 hlim=64 time=53.804 ms +16 bytes from fe80::da30:62ff:fe2e:86cf%en0, icmp_seq=1 hlim=64 time=748.798 ms +16 bytes from fe80::18a5:fc21:6794:b605%en0, icmp_seq=1 hlim=64 time=749.069 ms +16 bytes from fe80::1012:688e:7e41:6338%en0, icmp_seq=1 hlim=64 time=749.182 ms +16 bytes from fe80::c48:5896:526d:81ba%en0, icmp_seq=2 hlim=64 time=0.385 ms +16 bytes from fe80::c1cb:715d:bc3e:b8a0%en0, icmp_seq=2 hlim=64 time=0.713 ms +16 bytes from fe80::3e37:86ff:fe15:adf7%en0, icmp_seq=2 hlim=64 time=6.868 ms +16 bytes from fe80::4ab:6f0f:bdb6:9dd3%en0, icmp_seq=2 hlim=64 time=6.991 ms +16 bytes from fe80::feae:34ff:fea1:3a80%en0, icmp_seq=2 hlim=64 time=7.060 ms +16 bytes from fe80::feae:34ff:fea1:3a82%en0, icmp_seq=2 hlim=64 time=7.174 ms +16 bytes from fe80::3e37:86ff:fe15:ddb3%en0, icmp_seq=2 hlim=64 time=9.045 ms +16 bytes from fe80::10ff:f3b1:fe91:e200%en0, icmp_seq=2 hlim=64 time=11.193 ms +16 bytes from fe80::4ad7:5ff:fef1:86e8%en0, icmp_seq=2 hlim=64 time=141.374 ms +16 bytes from 2600:1700:bab0:d40:5214:79ff:fe12:423e, icmp_seq=2 hlim=64 time=141.530 ms +16 bytes from fe80::bd:798d:17ea:17a5%en0, icmp_seq=2 hlim=64 time=141.565 ms +16 bytes from fe80::c5d:5f82:6ce5:b9b9%en0, icmp_seq=2 hlim=64 time=142.862 ms +16 bytes from fe80::8d:8cfc:35ac:578f%en0, icmp_seq=2 hlim=64 time=145.985 ms +16 bytes from fe80::da30:62ff:fe2e:86cf%en0, icmp_seq=2 hlim=64 time=566.996 ms +16 bytes from fe80::18a5:fc21:6794:b605%en0, icmp_seq=2 hlim=64 time=567.127 ms +16 bytes from fe80::1012:688e:7e41:6338%en0, icmp_seq=2 hlim=64 time=567.184 ms +16 bytes from fe80::9eb6:54ff:fe5a:5a7c%en0, icmp_seq=2 hlim=64 time=657.246 ms +16 bytes from fe80::ced:c70f:bb6d:804a%en0, icmp_seq=2 hlim=64 time=657.567 ms +16 bytes from fe80::c48:5896:526d:81ba%en0, icmp_seq=3 hlim=64 time=0.485 ms +16 bytes from fe80::c1cb:715d:bc3e:b8a0%en0, icmp_seq=3 hlim=64 time=0.948 ms +16 bytes from fe80::3e37:86ff:fe15:adf7%en0, icmp_seq=3 hlim=64 time=6.796 ms +16 bytes from fe80::4ab:6f0f:bdb6:9dd3%en0, icmp_seq=3 hlim=64 time=6.918 ms +16 bytes from fe80::feae:34ff:fea1:3a80%en0, icmp_seq=3 hlim=64 time=6.994 ms +16 bytes from fe80::feae:34ff:fea1:3a82%en0, icmp_seq=3 hlim=64 time=7.059 ms +16 bytes from fe80::3e37:86ff:fe15:ddb3%en0, icmp_seq=3 hlim=64 time=7.122 ms +16 bytes from fe80::10ff:f3b1:fe91:e200%en0, icmp_seq=3 hlim=64 time=9.741 ms +16 bytes from fe80::8d:8cfc:35ac:578f%en0, icmp_seq=3 hlim=64 time=152.829 ms +16 bytes from 2600:1700:bab0:d40:5214:79ff:fe12:423e, icmp_seq=3 hlim=64 time=158.816 ms +16 bytes from fe80::bd:798d:17ea:17a5%en0, icmp_seq=3 hlim=64 time=158.879 ms +16 bytes from fe80::c5d:5f82:6ce5:b9b9%en0, icmp_seq=3 hlim=64 time=158.956 ms +16 bytes from fe80::4ad7:5ff:fef1:86e8%en0, icmp_seq=3 hlim=64 time=159.015 ms +16 bytes from fe80::18a5:fc21:6794:b605%en0, icmp_seq=3 hlim=64 time=377.870 ms +16 bytes from fe80::1012:688e:7e41:6338%en0, icmp_seq=3 hlim=64 time=377.963 ms +16 bytes from fe80::da30:62ff:fe2e:86cf%en0, icmp_seq=3 hlim=64 time=381.785 ms +16 bytes from fe80::9eb6:54ff:fe5a:5a7c%en0, icmp_seq=3 hlim=64 time=470.009 ms +16 bytes from fe80::c48:5896:526d:81ba%en0, icmp_seq=4 hlim=64 time=0.425 ms + +--- ff02::1%en0 ping6 statistics --- +5 packets transmitted, 5 packets received, +58 duplicates, 0.0% packet loss +round-trip min/avg/max/std-dev = 0.302/180.260/749.182/250.393 ms diff --git a/tests/test_ping.py b/tests/test_ping.py index 43e77951..282dbdad 100644 --- a/tests/test_ping.py +++ b/tests/test_ping.py @@ -178,6 +178,9 @@ class MyTests(unittest.TestCase): with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-dup.out'), 'r', encoding='utf-8') as f: self.osx_10_14_6_ping_ip_dup = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-dup.out'), 'r', encoding='utf-8') as f: + self.osx_10_14_6_ping6_ip_dup = f.read() + # output # centos @@ -347,6 +350,9 @@ class MyTests(unittest.TestCase): with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-dup.json'), 'r', encoding='utf-8') as f: self.osx_10_14_6_ping_ip_dup_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-dup.json'), 'r', encoding='utf-8') as f: + self.osx_10_14_6_ping6_ip_dup_json = json.loads(f.read()) + def test_ping_nodata(self): """ Test 'ping' with no data @@ -677,6 +683,12 @@ class MyTests(unittest.TestCase): """ self.assertEqual(jc.parsers.ping.parse(self.osx_10_14_6_ping_ip_dup, quiet=True), self.osx_10_14_6_ping_ip_dup_json) + def test_ping6_ip_dup_osx_10_14_6(self): + """ + Test 'ping6 ' to broadcast IP to get duplicate replies on osx 10.14.6 + """ + self.assertEqual(jc.parsers.ping.parse(self.osx_10_14_6_ping6_ip_dup, quiet=True), self.osx_10_14_6_ping6_ip_dup_json) + if __name__ == '__main__': unittest.main()