@@ -482,22 +482,22 @@ def test_add_node_and_collection(self, pytester: pytest.Pytester) -> None:
482
482
config = pytester .parseconfig ("--tx=2*popen" )
483
483
sched = SingleCollectScheduling (config )
484
484
node1 , node2 = MockNode (), MockNode ()
485
-
485
+
486
486
# First node should be set as collector
487
487
sched .add_node (node1 )
488
488
assert sched .first_node == node1
489
-
489
+
490
490
# Second node should not become the collector
491
491
sched .add_node (node2 )
492
492
assert sched .first_node == node1
493
-
493
+
494
494
# Collection from first node should be used
495
495
collection = ["a.py::test_1" , "a.py::test_2" , "a.py::test_3" ]
496
496
sched .add_node_collection (node1 , collection )
497
497
assert sched .collection == collection
498
498
assert sched .collection_done
499
499
assert sched .collection_is_completed
500
-
500
+
501
501
# Collection from second node should be ignored
502
502
different_collection = ["a.py::test_1" , "a.py::test_4" ]
503
503
sched .add_node_collection (node2 , different_collection )
@@ -510,21 +510,21 @@ def test_schedule_tests(self, pytester: pytest.Pytester) -> None:
510
510
node1 , node2 = MockNode (), MockNode ()
511
511
sched .add_node (node1 )
512
512
sched .add_node (node2 )
513
-
513
+
514
514
collection = ["a.py::test_1" , "a.py::test_2" , "a.py::test_3" , "a.py::test_4" ]
515
515
sched .add_node_collection (node1 , collection )
516
-
516
+
517
517
# Should use collection from node1 and distribute tests
518
518
sched .schedule ()
519
-
519
+
520
520
# Check that tests were distributed across both nodes
521
521
assert len (node1 .sent ) > 0
522
522
assert len (node2 .sent ) > 0
523
-
523
+
524
524
# Tests should be distributed completely
525
525
all_tests = node1 .sent + node2 .sent
526
526
assert sorted (all_tests ) == list (range (len (collection )))
527
-
527
+
528
528
# The pending list should be empty after distribution
529
529
assert not sched .pending
530
530
@@ -534,37 +534,37 @@ def test_handle_node_failure(self, pytester: pytest.Pytester) -> None:
534
534
node1 , node2 = MockNode (), MockNode ()
535
535
sched .add_node (node1 )
536
536
sched .add_node (node2 )
537
-
537
+
538
538
collection = ["a.py::test_1" , "a.py::test_2" , "a.py::test_3" , "a.py::test_4" ]
539
539
sched .add_node_collection (node1 , collection )
540
540
sched .schedule ()
541
-
541
+
542
542
# Simulate node1 completing a test
543
543
test_idx = node1 .sent [0 ]
544
544
sched .mark_test_complete (node1 , test_idx )
545
-
545
+
546
546
# Now remove node2 (simulating failure)
547
547
crashitem = sched .remove_node (node2 )
548
-
548
+
549
549
# Tests assigned to node2 should go back to pending
550
550
assert len (sched .pending ) > 0
551
-
551
+
552
552
# Add a new node
553
553
node3 = MockNode ()
554
554
sched .add_node (node3 )
555
-
555
+
556
556
# Since collection is already completed, schedule should assign pending tests to node3
557
557
sched .schedule ()
558
558
assert len (node3 .sent ) > 0
559
-
559
+
560
560
# Complete all tests
561
561
for idx in node1 .sent :
562
562
if idx != test_idx : # Skip the one we already completed
563
563
sched .mark_test_complete (node1 , idx )
564
-
564
+
565
565
for idx in node3 .sent :
566
566
sched .mark_test_complete (node3 , idx )
567
-
567
+
568
568
# All tests should be completed
569
569
assert sched .tests_finished
570
570
@@ -573,25 +573,25 @@ def test_first_node_failure(self, pytester: pytest.Pytester) -> None:
573
573
config = pytester .parseconfig ("--tx=2*popen" )
574
574
sched = SingleCollectScheduling (config )
575
575
node1 , node2 = MockNode (), MockNode ()
576
-
576
+
577
577
# First node should be collector
578
578
sched .add_node (node1 )
579
579
assert sched .first_node == node1
580
-
580
+
581
581
# Add second node
582
582
sched .add_node (node2 )
583
-
583
+
584
584
# First node fails before collection
585
585
sched .remove_node (node1 )
586
-
586
+
587
587
# Now second node should become the collector
588
588
assert sched .first_node is None # first_node is reset after removal
589
-
589
+
590
590
# Add a new node, it should become the collector
591
591
node3 = MockNode ()
592
592
sched .add_node (node3 )
593
593
assert sched .first_node == node3
594
-
594
+
595
595
# Complete collection with node3
596
596
collection = ["a.py::test_1" , "a.py::test_2" ]
597
597
sched .add_node_collection (node3 , collection )
0 commit comments