Skip to content

Commit d6f61d9

Browse files
committed
Make sure we don't spawn workers if all we need are custom ones.
1 parent ddea6fc commit d6f61d9

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

src/ParallelTestRunner.jl

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -677,12 +677,12 @@ function runtests(mod::Module, args::ParsedArgs;
677677
jobs = something(args.jobs, default_njobs())
678678
jobs = clamp(jobs, 1, length(tests))
679679
println(stdout, "Running $jobs tests in parallel. If this is too many, specify the `--jobs=N` argument to the tests, or set the `JULIA_CPU_THREADS` environment variable.")
680-
workers = addworkers(min(jobs, length(tests)))
681-
nworkers = length(workers)
680+
nworkers = min(jobs, length(tests))
681+
workers = fill(nothing, nworkers)
682682

683683
t0 = time()
684684
results = []
685-
running_tests = Dict{String, Tuple{Int, Float64}}() # test => (worker, start_time)
685+
running_tests = Dict{String, Float64}() # test => start_time
686686
test_lock = ReentrantLock() # to protect crucial access to tests and running_tests
687687

688688
done = false
@@ -743,9 +743,9 @@ function runtests(mod::Module, args::ParsedArgs;
743743
line1 = ""
744744

745745
# line 2: running tests
746-
test_list = sort(collect(running_tests), by = x -> x[2][2])
747-
status_parts = map(test_list) do (test, (wrkr, _))
748-
"$test ($wrkr)"
746+
test_list = sort(collect(keys(running_tests)), by = x -> running_tests[x])
747+
status_parts = map(test_list) do test
748+
"$test"
749749
end
750750
line2 = "Running: " * join(status_parts, ", ")
751751
## truncate
@@ -765,7 +765,7 @@ function runtests(mod::Module, args::ParsedArgs;
765765

766766
est_remaining = 0.0
767767
## currently-running
768-
for (test, (_, start_time)) in running_tests
768+
for (test, start_time) in running_tests
769769
elapsed = time() - start_time
770770
duration = get(historical_durations, test, est_per_test)
771771
est_remaining += max(0.0, duration - elapsed)
@@ -871,21 +871,24 @@ function runtests(mod::Module, args::ParsedArgs;
871871
for p in workers
872872
push!(worker_tasks, @async begin
873873
while !done
874-
# if a worker failed, spawn a new one
875-
if !Malt.isrunning(p)
876-
p = addworker()
877-
end
878-
879874
# get a test to run
880-
test, wrkr, test_t0 = Base.@lock test_lock begin
875+
test, test_t0 = Base.@lock test_lock begin
881876
isempty(tests) && break
882877
test = popfirst!(tests)
883-
wrkr = something(test_worker(test), p)
884878

885879
test_t0 = time()
886-
running_tests[test] = (worker_id(wrkr), test_t0)
880+
running_tests[test] = test_t0
887881

888-
test, wrkr, test_t0
882+
test, test_t0
883+
end
884+
885+
# if a worker failed, spawn a new one
886+
wrkr = test_worker(test)
887+
if wrkr === nothing
888+
wrkr = p
889+
end
890+
if wrkr === nothing || !Malt.isrunning(wrkr)
891+
wrkr = p = addworker()
889892
end
890893

891894
# run the test

0 commit comments

Comments
 (0)