diff options
author | Mykola Nikishov | 2018-07-23 10:18:40 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2018-10-03 08:46:25 +0000 |
commit | ec7df4a73c9576d509de6fc80ac5fae29197b365 (patch) | |
tree | 8f3f4c835b1e7e4843811865dc162784e3a3115e | |
parent | ab78d64c030e003435d1b2430c99a8c64d621c1b (diff) | |
download | rt.equinox.p2-ec7df4a73c9576d509de6fc80ac5fae29197b365.tar.gz rt.equinox.p2-ec7df4a73c9576d509de6fc80ac5fae29197b365.tar.xz rt.equinox.p2-ec7df4a73c9576d509de6fc80ac5fae29197b365.zip |
Bug 536326 - Add failing test w/mirrors into MirrorRequestTestI20181004-1800I20181003-2215I20181003-1800
As MirrorRequest keeps re-trying more mirrors than
OrderedMirrorSelector has:
java.lang.ArrayIndexOutOfBoundsException: 3
at org.eclipse.equinox.p2.tests.artifact.repository.MirrorRequestTest$OrderedMirrorSelector.nextMirror(MirrorRequestTest.java:426)
at org.eclipse.equinox.p2.tests.artifact.repository.MirrorRequestTest$OrderedMirrorSelector.getMirrorLocation(MirrorRequestTest.java:417)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getMirror(SimpleArtifactRepository.java:742)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:639)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:772)
at org.eclipse.equinox.p2.tests.artifact.repository.MirrorRequestTest$RemoteRepo.getArtifact(MirrorRequestTest.java:319)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.getArtifact(MirrorRequest.java:316)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:286)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:222)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:176)
at org.eclipse.equinox.p2.tests.artifact.repository.MirrorRequestTest.testFailToCanonicalWithMirrors(MirrorRequestTest.java:120)
Change-Id: I76888490a4fa76b02bd7e037247f07a6e8cfb616
Signed-off-by: Mykola Nikishov <mn@mn.com.ua>
2 files changed, 28 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorRequestTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorRequestTest.java index c55ef645c..81f34ef26 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorRequestTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorRequestTest.java @@ -104,6 +104,33 @@ public class MirrorRequestTest extends AbstractProvisioningTest { assertEquals("Exact number of downloads", 2, src.downloadCount); } + /** + * Same as {@link #testFailToCanonical()} but with 3 mirrors: + * <ul> + * <li><code>mirror-one</code>, which is unreachable</li> + * <li><code>mirror-two</code>, which has an invalid optimized artifact and causes processing step to fail</li> + * <li>original repository, which has a valid canonical artifact</li> + * </ul> + * + */ + public void testFailToCanonicalWithMirrors() { + OrderedMirrorSelector selector = new OrderedMirrorSelector(sourceRepository); + try { + RemoteRepo src = new RemoteRepo((SimpleArtifactRepository) sourceRepository); + + IArtifactKey key = new ArtifactKey("test.txt", "fail_to_canonical", Version.parseVersion("1.0.0")); + MirrorRequest request = new MirrorRequest(key, targetRepository, null, null, getTransport()); + request.perform(src, new NullProgressMonitor()); + + assertTrue(request.getResult().toString(), request.getResult().isOK()); + assertTrue(String.format("Target does not contain artifact %s", key), targetRepository.contains(key)); + assertEquals("Exact number of downloads", 3, src.downloadCount); + assertEquals("All mirrors utilized", selector.mirrors.length, selector.index); + } finally { + selector.clearSelector(); + } + } + // Test that SimpleArtifactRepository & MirrorRequest use mirrors in the event of a failure. public void testMirrorFailOver() { OrderedMirrorSelector selector = new OrderedMirrorSelector(sourceRepository); diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/emptyJarRepo/mirror-two/plugins/fail_to_canonical_1.0.0.txt.pack.gz b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/emptyJarRepo/mirror-two/plugins/fail_to_canonical_1.0.0.txt.pack.gz new file mode 100644 index 000000000..c57eff55e --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/emptyJarRepo/mirror-two/plugins/fail_to_canonical_1.0.0.txt.pack.gz @@ -0,0 +1 @@ +Hello World!
\ No newline at end of file |