diff options
author | Pascal Rapicault | 2009-05-19 17:43:11 +0000 |
---|---|---|
committer | Pascal Rapicault | 2009-05-19 17:43:11 +0000 |
commit | 793ef0aca8d5b42676f423ac7c083d393f8a996a (patch) | |
tree | 05c4b5de6af5294625bbe2971b6417f9d6f5d51d /bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java | |
parent | c2c26ef1b48f0c21de36ac2242ecf3d03b778e26 (diff) | |
download | rt.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.java | 43 |
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 { |