Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rapicault2009-05-19 17:43:11 +0000
committerPascal Rapicault2009-05-19 17:43:11 +0000
commit793ef0aca8d5b42676f423ac7c083d393f8a996a (patch)
tree05c4b5de6af5294625bbe2971b6417f9d6f5d51d /bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java
parentc2c26ef1b48f0c21de36ac2242ecf3d03b778e26 (diff)
downloadrt.equinox.p2-793ef0aca8d5b42676f423ac7c083d393f8a996a.tar.gz
rt.equinox.p2-793ef0aca8d5b42676f423ac7c083d393f8a996a.tar.xz
rt.equinox.p2-793ef0aca8d5b42676f423ac7c083d393f8a996a.zip
Bug 276562 - [repo] Repository not found error for valid repository
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java')
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java43
1 files changed, 41 insertions, 2 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java
index f0ed705c9..acf2df102 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java
@@ -17,8 +17,8 @@ import java.net.*;
import java.util.*;
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
import org.eclipse.equinox.internal.p2.core.helpers.URLUtil;
import org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager;
@@ -212,6 +212,45 @@ public class MetadataRepositoryManagerTest extends AbstractProvisioningTest {
}
/**
+ * Tests contention for the repository load lock
+ */
+ public void testLoadContention() {
+ File site = getTestData("Repositoy", "/testData/metadataRepo/good/");
+ final URI location = site.toURI();
+ final List<Exception> failures = new ArrayList<Exception>();
+ final IMetadataRepositoryManager repoManager = getMetadataRepositoryManager();
+ class LoadJob extends Job {
+ LoadJob() {
+ super("");
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ for (int i = 0; i < 100; i++) {
+ try {
+ repoManager.loadRepository(location, null);
+ } catch (Exception e) {
+ failures.add(e);
+ }
+ }
+ return Status.OK_STATUS;
+ }
+ }
+ Job job1 = new LoadJob();
+ Job job2 = new LoadJob();
+ job1.schedule();
+ job2.schedule();
+ try {
+ job1.join();
+ job2.join();
+ } catch (InterruptedException e) {
+ fail("4.99", e);
+ }
+ if (!failures.isEmpty())
+ fail("1.0", failures.iterator().next());
+ }
+
+ /**
* Tests loading a repository that does not exist throws an appropriate exception.
*/
public void testLoadMissingRepository() throws IOException {

Back to the top