|
|
|
|
@ -63,7 +63,7 @@ event('start')
|
|
|
|
|
self.assertEqual(result.returncode, 2, result.stdout) |
|
|
|
|
self.assertIn("expected a positive integer", result.stdout) |
|
|
|
|
|
|
|
|
|
def test_parallel_limit_and_exclusive_barrier(self): |
|
|
|
|
def test_parallel_limit_and_measurements_after_pool(self): |
|
|
|
|
for name, pair in (("first_a", "first"), ("first_b", "first"), ("last_a", "last"), ("last_b", "last")): |
|
|
|
|
self.fixture(name, f""" |
|
|
|
|
Path(name + '.ready').touch() |
|
|
|
|
@ -88,7 +88,26 @@ time.sleep(0.05)
|
|
|
|
|
self.assertFalse(active) |
|
|
|
|
self.assertEqual(maximum, 2) |
|
|
|
|
self.assertEqual({name for name, _ in events[:2]}, {"first_a", "first_b"}) |
|
|
|
|
self.assertEqual(events[4:6], [["test_media_async", "start"], ["test_media_async", "end"]]) |
|
|
|
|
self.assertEqual(events[-2:], [["test_media_async", "start"], ["test_media_async", "end"]]) |
|
|
|
|
self.assertIn("test_media_async: running alone to check CPU/wall-time limits", result.stdout) |
|
|
|
|
|
|
|
|
|
def test_long_network_tests_share_pool(self): |
|
|
|
|
names = ["test_bbr_integration", "test_auto_socket_dynamic"] |
|
|
|
|
for name in names: |
|
|
|
|
self.fixture(name, """ |
|
|
|
|
Path(name + '.ready').touch() |
|
|
|
|
deadline = time.monotonic() + 5 |
|
|
|
|
while len(list(Path('.').glob('*.ready'))) < 2: |
|
|
|
|
if time.monotonic() > deadline: sys.exit(9) |
|
|
|
|
time.sleep(0.01) |
|
|
|
|
time.sleep(0.05) |
|
|
|
|
""") |
|
|
|
|
# У фиктивного autosocket нет требований root: не вызываем sudo в этой регрессии. |
|
|
|
|
result = self.run_runner(names, environment=dict(os.environ, TEST_JOBS="2", PATH=str(self.root))) |
|
|
|
|
self.assertEqual(result.returncode, 0, result.stdout) |
|
|
|
|
events = [json.loads(line) for line in (self.root / "events").read_text().splitlines()] |
|
|
|
|
self.assertEqual({name for name, _ in events[:2]}, set(names)) |
|
|
|
|
self.assertEqual([state for _, state in events], ["start", "start", "end", "end"]) |
|
|
|
|
|
|
|
|
|
def test_exit_codes_and_separate_logs(self): |
|
|
|
|
self.fixture("ok") |
|
|
|
|
|