[tor-commits] [onionperf/master] Enforce deterministic ordering in file walk.

karsten at torproject.org karsten at torproject.org
Tue May 12 07:26:32 UTC 2020


commit 2ab97fc8082c03ff5f1c8d775f417bfee8936726
Author: Philipp Winter <phw at nymity.ch>
Date:   Fri May 8 10:20:15 2020 -0700

    Enforce deterministic ordering in file walk.
    
    os.walk internally calls os.scandir, whose "entries are yielded in
    arbitrary order."  This breaks (at least on my machine) two unit tests
    which rely on ordering:
    
    1. test_reprocessing.test_log_collection_tgen
    2. test_reprocessing.test_log_collection_torctl
    
    This patch fixes the problem by calling sorted on the arbitrarily
    ordered file names.
---
 onionperf/reprocessing.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/onionperf/reprocessing.py b/onionperf/reprocessing.py
index c5351d4..7acf539 100644
--- a/onionperf/reprocessing.py
+++ b/onionperf/reprocessing.py
@@ -13,7 +13,7 @@ import sys
 def collect_logs(dirpath, pattern):
     logs = []
     for root, dirnames, filenames in os.walk(dirpath):
-        for filename in fnmatch.filter(filenames, pattern):
+        for filename in fnmatch.filter(sorted(filenames), pattern):
             logs.append(os.path.join(root, filename))
     return logs
 





More information about the tor-commits mailing list