Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java')
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java72
1 files changed, 48 insertions, 24 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java
index 7255475e3..88c2b186d 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java
@@ -19,6 +19,7 @@ import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest;
import org.eclipse.equinox.internal.p2.engine.*;
+import org.eclipse.equinox.internal.p2.repository.DownloadProgressEvent;
import org.eclipse.equinox.internal.p2.touchpoint.natives.Util;
import org.eclipse.equinox.internal.provisional.p2.core.eventbus.ProvisioningListener;
import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
@@ -260,32 +261,55 @@ public class PhaseSetTest extends AbstractProvisioningTest {
public void testCancelPausedProvisioing() throws ProvisionException, InterruptedException {
URI repoLoc = getTestData("Load test data.", "/testData/pausefeature").toURI();
final PhaseSet phaseSet = (PhaseSet) PhaseSetFactory.createDefaultPhaseSet();
- pause = new PauseJob("pause") {
- protected IStatus run(IProgressMonitor monitor) {
- if (!phaseSet.pause())
- return new Status(IStatus.ERROR, TestActivator.PI_PROV_TESTS, "pause() failed.");
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println(new Date() + " -- paused provisioning.");
- // wait seconds
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- //
- }
- setPause(true);
- return Status.OK_STATUS;
+ class ProvListener implements ProvisioningListener {
+ boolean hasDownloadEvent = false;
+
+ public void notify(EventObject o) {
+ if (o instanceof DownloadProgressEvent)
+ hasDownloadEvent = true;
}
+
};
+ final ProvListener listener = new ProvListener();
+ getEventBus().addListener(listener);
+ try {
- basicTest(repoLoc, phaseSet, pause, QueryUtil.createLatestQuery(QueryUtil.createIUQuery("org.eclipse.equinox.executable.feature.group")), 3000, IStatus.CANCEL, new NullProgressMonitor() {
- @Override
- public boolean isCanceled() {
- return pause.isPaused();
- }
- });
+ pause = new PauseJob("pause") {
+ protected IStatus run(IProgressMonitor monitor) {
+ while (!listener.hasDownloadEvent) {
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException e1) {
+ e1.printStackTrace();
+ }
+ }
+ if (!phaseSet.pause())
+ return new Status(IStatus.ERROR, TestActivator.PI_PROV_TESTS, "pause() failed.");
+ try {
+ Thread.sleep(5000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ System.out.println(new Date() + " -- paused provisioning.");
+ // wait seconds
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ //
+ }
+ setPause(true);
+ return Status.OK_STATUS;
+ }
+ };
+
+ basicTest(repoLoc, phaseSet, pause, QueryUtil.createLatestQuery(QueryUtil.createIUQuery("org.eclipse.equinox.executable.feature.group")), 0, IStatus.CANCEL, new NullProgressMonitor() {
+ @Override
+ public boolean isCanceled() {
+ return pause.isPaused();
+ }
+ });
+ } finally {
+ getEventBus().removeListener(listener);
+ }
}
}

Back to the top