diff --git a/scripts/errors/coll/CallOrdering.py b/scripts/errors/coll/CallOrdering.py
index 4f9518fac70858f599349e64f68ad1ede7c8d619..c566717b5be0c848e098bc0d292358a3510283d0 100644
--- a/scripts/errors/coll/CallOrdering.py
+++ b/scripts/errors/coll/CallOrdering.py
@@ -38,9 +38,12 @@ class InvalidRankErrorColl(ErrorGenerator):
                 call.set_has_error()
 
             yield tm
+            if not generate_level <= BASIC_TEST_LEVEL:
+                break
+                # basic test level only tests each error once, no need to loop all functions
 
-        for func1 in self.functions_to_use:
-            for func2 in self.functions_to_use:  # this generates func1-func2 and func2-func1 -> we need to remove similar cases
+        for i, func1 in enumerate(self.functions_to_use):
+            for func2 in self.functions_to_use[i:]:
                 tm = get_two_collective_template(func1, func2)
 
                 tm.set_description("CallOrdering-unmatched-" + func1 + "-" + func2,