From 6807d7d0b546a994a03504bd16611f18d3278f6b Mon Sep 17 00:00:00 2001 From: Yaroslav Brustinov Date: Sun, 7 Aug 2016 14:09:06 +0300 Subject: regression: compare pcaps in functional tests robust to order of packets with same timestamp --- .../regression/functional_tests/stl_basic_tests.py | 27 ++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/automation/regression/functional_tests/stl_basic_tests.py b/scripts/automation/regression/functional_tests/stl_basic_tests.py index e5190154..2843d619 100644 --- a/scripts/automation/regression/functional_tests/stl_basic_tests.py +++ b/scripts/automation/regression/functional_tests/stl_basic_tests.py @@ -23,6 +23,7 @@ import os import subprocess import shlex from threading import Thread +from collections import defaultdict @attr('run_on_trex') class CStlBasic_Test(functional_general_test.CGeneralFunctional_Test): @@ -82,8 +83,26 @@ class CStlBasic_Test(functional_general_test.CGeneralFunctional_Test): def compare_caps (self, output, golden, max_diff_sec = 0.01): - pkts1 = list(RawPcapReader(output)) - pkts2 = list(RawPcapReader(golden)) + pkts1 = [] + pkts2 = [] + pkts_ts_buckets = defaultdict(list) + + for pkt in RawPcapReader(output): + ts = pkt[1][0] * 1e6 + pkt[1][1] + pkts_ts_buckets[ts].append(pkt) + # don't take last ts bucket, it can be cut in middle and packets inside bucket might be different + #for ts in sorted(pkts_ts_buckets.keys())[:-1]: + for ts in sorted(pkts_ts_buckets.keys()): + pkts1.extend(sorted(pkts_ts_buckets[ts])) + pkts_ts_buckets.clear() + + for pkt in RawPcapReader(golden): + ts = pkt[1][0] * 1e6 + pkt[1][1] + pkts_ts_buckets[ts].append(pkt) + # don't take last ts bucket, it can be cut in middle and packets inside bucket might be different + #for ts in sorted(pkts_ts_buckets.keys())[:-1]: + for ts in sorted(pkts_ts_buckets.keys()): + pkts2.extend(sorted(pkts_ts_buckets[ts])) assert_equal(len(pkts1), len(pkts2), 'Lengths of generated pcap (%s) and golden (%s) are different' % (output, golden)) @@ -276,8 +295,8 @@ class CStlBasic_Test(functional_general_test.CGeneralFunctional_Test): ['hlt/hlt_udp_inc_dec_len_9k.py', '-m 1 -l 20', True, None], ['hlt/hlt_imix_default.py', '-m 1 -l 20', True, None], ['hlt/hlt_imix_4rates.py', '-m 1 -l 20', True, None], - #['hlt/hlt_david1.py', '-m 1 -l 20', True, None], - #['hlt/hlt_david2.py', '-m 1 -l 20', True, None], + ['hlt/hlt_david1.py', '-m 1 -l 20', True, None], + ['hlt/hlt_david2.py', '-m 1 -l 20', True, None], ['hlt/hlt_david3.py', '-m 1 -l 20', True, None], ['hlt/hlt_david4.py', '-m 1 -l 20', True, None], ['hlt/hlt_wentong1.py', '-m 1 -l 20', True, None], -- cgit 1.2.3-korg