diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/TestUtil.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/TestUtil.java index 9986ed0d67..c36239f701 100644 --- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/TestUtil.java +++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/TestUtil.java @@ -25,6 +25,7 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; +import org.eclipse.core.internal.jobs.JobManager; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; @@ -181,6 +182,7 @@ public static boolean waitForJobs(String owner, Object jobFamily, long minTimeMs // only uninteresting jobs running break; } + jobs.forEach(Job::wakeUp); if (!Collections.disjoint(runningJobs, jobs)) { // There is a job which runs already quite some time, don't wait for it to avoid test timeouts @@ -210,11 +212,8 @@ public static Object[] getUsualJobFamiliesToIgnore() { return new Object[] { ProcessConsole.class, AbstractReconciler.class }; } - private static void wakeUpSleepingJobs(Object family) { - List sleepingJobs = getSleepingJobs(family); - for (Job job : sleepingJobs) { - job.wakeUp(); - } + private static void wakeUpSleepingJobs(Object jobFamily) { + Job.getJobManager().wakeUp(jobFamily); } static Set runningJobs = new LinkedHashSet<>(); @@ -235,6 +234,7 @@ private static String dumpRunningOrWaitingJobs(List jobs) { runningJobs.add(job); sb.append("\n'").append(job.toString()).append("'/"); sb.append(job.getClass().getName()); + sb.append(":").append(JobManager.printState(job)); Thread thread = job.getThread(); if (thread != null) { ThreadInfo[] threadInfos = ManagementFactory.getThreadMXBean().getThreadInfo(new long[] { thread.threadId() }, true, true); @@ -264,17 +264,6 @@ public static List getRunningOrWaitingJobs(Object jobFamily, Object... excl return running; } - private static List getSleepingJobs(Object family) { - List sleeping = new ArrayList<>(); - Job[] jobs = Job.getJobManager().find(family); - for (Job job : jobs) { - if (job.getState() == Job.SLEEPING) { - sleeping.add(job); - } - } - return sleeping; - } - private static boolean isRunningOrWaitingJob(Job job) { int state = job.getState(); return (state == Job.RUNNING || state == Job.WAITING);