Repair Flaky Tests

- MockWebServer seems to start failing to respond to connections
at a certain frequency of requests. This commit builds in a small
delay of 1 millisecond to address this.

Closes gh-15395
This commit is contained in:
Josh Cummings 2024-07-29 14:45:48 -06:00
parent e0be46ea84
commit 0b0ffa01f7
No known key found for this signature in database
GPG Key ID: A306A51F43B8E5A5

View File

@ -24,6 +24,7 @@ import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import net.shibboleth.utilities.java.support.xml.SerializeSupport; import net.shibboleth.utilities.java.support.xml.SerializeSupport;
@ -89,14 +90,14 @@ public class OpenSamlAssertingPartyMetadataRepositoryTests {
@Test @Test
public void withMetadataUrlLocationWhenResolvableThenFindByEntityIdReturns() throws Exception { public void withMetadataUrlLocationWhenResolvableThenFindByEntityIdReturns() throws Exception {
try (MockWebServer server = new MockWebServer()) { try (MockWebServer server = new MockWebServer()) {
server.setDispatcher(new AlwaysDispatch(new MockResponse().setBody(this.metadata).setResponseCode(200))); server.setDispatcher(new AlwaysDispatch(this.metadata));
AssertingPartyMetadataRepository parties = OpenSamlAssertingPartyMetadataRepository AssertingPartyMetadataRepository parties = OpenSamlAssertingPartyMetadataRepository
.withTrustedMetadataLocation(server.url("/").toString()) .withTrustedMetadataLocation(server.url("/").toString())
.build(); .build();
AssertingPartyMetadata party = parties.findByEntityId("https://idp.example.com/idp/shibboleth"); AssertingPartyMetadata party = parties.findByEntityId("https://idp.example.com/idp/shibboleth");
assertThat(party.getEntityId()).isEqualTo("https://idp.example.com/idp/shibboleth"); assertThat(party.getEntityId()).isEqualTo("https://idp.example.com/idp/shibboleth");
assertThat(party.getSingleSignOnServiceLocation()) assertThat(party.getSingleSignOnServiceLocation())
.isEqualTo("https://idp.example.com/idp/profile/SAML2/POST/SSO"); .isEqualTo("https://idp.example.com/idp/profile/SAML2/POST/SSO");
assertThat(party.getSingleSignOnServiceBinding()).isEqualTo(Saml2MessageBinding.POST); assertThat(party.getSingleSignOnServiceBinding()).isEqualTo(Saml2MessageBinding.POST);
assertThat(party.getVerificationX509Credentials()).hasSize(1); assertThat(party.getVerificationX509Credentials()).hasSize(1);
assertThat(party.getEncryptionX509Credentials()).hasSize(1); assertThat(party.getEncryptionX509Credentials()).hasSize(1);
@ -106,8 +107,7 @@ public class OpenSamlAssertingPartyMetadataRepositoryTests {
@Test @Test
public void withMetadataUrlLocationnWhenResolvableThenIteratorReturns() throws Exception { public void withMetadataUrlLocationnWhenResolvableThenIteratorReturns() throws Exception {
try (MockWebServer server = new MockWebServer()) { try (MockWebServer server = new MockWebServer()) {
server.setDispatcher( server.setDispatcher(new AlwaysDispatch(this.entitiesDescriptor));
new AlwaysDispatch(new MockResponse().setBody(this.entitiesDescriptor).setResponseCode(200)));
List<AssertingPartyMetadata> parties = new ArrayList<>(); List<AssertingPartyMetadata> parties = new ArrayList<>();
OpenSamlAssertingPartyMetadataRepository.withTrustedMetadataLocation(server.url("/").toString()) OpenSamlAssertingPartyMetadataRepository.withTrustedMetadataLocation(server.url("/").toString())
.build() .build()
@ -360,7 +360,7 @@ public class OpenSamlAssertingPartyMetadataRepositoryTests {
private final MockResponse response; private final MockResponse response;
private AlwaysDispatch(String body) { private AlwaysDispatch(String body) {
this.response = new MockResponse().setBody(body).setResponseCode(200); this.response = new MockResponse().setBody(body).setResponseCode(200).setBodyDelay(1, TimeUnit.MILLISECONDS);
} }
private AlwaysDispatch(MockResponse response) { private AlwaysDispatch(MockResponse response) {