From f249e3bd52f35f1cfe8a75868c7e4f791a7a8367 Mon Sep 17 00:00:00 2001 From: Mac Mollison Date: Thu, 11 Feb 2010 20:34:37 -0500 Subject: Update runtests.py - Terminate fatally in trace_reader if out-of-order records produced. Thus, we no longer need this unit test. - Fix another unit test which had broken. --- trace_reader.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'trace_reader.py') diff --git a/trace_reader.py b/trace_reader.py index 2e5f65d..e18547e 100644 --- a/trace_reader.py +++ b/trace_reader.py @@ -53,12 +53,19 @@ def trace_reader(files): # We keep 100 records in each buffer and then keep the buffer sorted # This is because records may have been recorded slightly out of order + # This cannot guarantee records are produced in order, but it makes it + # overwhelmingly probably. for x in range(0,len(file_iter_buff)): for y in range(0,100): file_iter_buff[x].append(next(file_iters[x])) for x in range(0,len(file_iter_buff)): file_iter_buff[x] = sorted(file_iter_buff[x],key=lambda rec: rec.when) + # Remember the time of the last record. This way, we can make sure records + # truly are produced in monotonically increasing order by time and terminate + # fatally if they are not. + last_time = None + # Keep pulling records as long as we have a buffer while len(file_iter_buff) > 0: @@ -87,6 +94,12 @@ def trace_reader(files): del file_iter_buff[buff_to_refill] del file_iters[buff_to_refill] + # Check for monotonically increasing time + if last_time is not None and earliest.when < last_time: + exit("FATAL ERROR: trace_reader.py: out-of-order record produced") + else: + last_time = earliest.when + # Yield the record yield earliest -- cgit v1.2.2