Skip to content

Commit

Permalink
Use ephemeral ports for idp-fixture (#40333)
Browse files Browse the repository at this point in the history
This change removes the use of hardcoded port values for the
idp-fixture in favor of the mapped ephemeral ports. This should prevent
failures due to port conflicts in CI.
  • Loading branch information
jaymode committed Mar 26, 2019
1 parent 49c5a11 commit ecaae14
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@

public class OpenLdapTests extends ESTestCase {

public static final String OPEN_LDAP_DNS_URL = "ldaps://localhost:60636";
public static final String OPEN_LDAP_IP_URL = "ldaps://127.0.0.1:60636";
public static final String OPEN_LDAP_DNS_URL = "ldaps://localhost:" + getFromProperty("636");
public static final String OPEN_LDAP_IP_URL = "ldaps://127.0.0.1:" + getFromProperty("636");

public static final String PASSWORD = "NickFuryHeartsES";
private static final String HAWKEYE_DN = "uid=hawkeye,ou=people,dc=oldap,dc=test,dc=elasticsearch,dc=com";
Expand Down Expand Up @@ -294,4 +294,11 @@ private Map<String, Object> resolve(LDAPConnection connection, LdapMetaDataResol
resolver.resolve(connection, HAWKEYE_DN, TimeValue.timeValueSeconds(1), logger, null, future);
return future.get();
}

private static String getFromProperty(String port) {
String key = "test.fixtures.openldap.tcp." + port;
final String value = System.getProperty(key);
assertNotNull("Expected the actual value for port " + port + " to be in system property " + key, value);
return value;
}
}
28 changes: 23 additions & 5 deletions x-pack/qa/saml-idp-tests/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,29 @@ testFixtures.useFixture ":x-pack:test:idp-fixture"


String outputDir = "${project.buildDir}/generated-resources/${project.name}"
task copyIdpCertificate(type: Copy) {
from idpFixtureProject.file('idp/shibboleth-idp/credentials/idp-browser.pem');
task copyIdpFiles(type: Copy) {
from idpFixtureProject.files('idp/shibboleth-idp/credentials/idp-browser.pem', 'idp/shibboleth-idp/metadata/idp-metadata.xml');
into outputDir
}
project.sourceSets.test.output.dir(outputDir, builtBy: copyIdpCertificate)
integTestCluster.dependsOn copyIdpCertificate
project.sourceSets.test.output.dir(outputDir, builtBy: copyIdpFiles)

task setupPorts {
dependsOn copyIdpFiles, idpFixtureProject.postProcessFixture
doLast {
String portString = idpFixtureProject.postProcessFixture.ext."test.fixtures.shibboleth-idp.tcp.4443"
int ephemeralPort = Integer.valueOf(portString)
File idpMetaFile = file(outputDir + '/idp-metadata.xml')
List<String> lines = idpMetaFile.readLines("UTF-8")
StringBuilder content = new StringBuilder()
for (String line : lines) {
content.append(line.replace("localhost:4443", "localhost:" + ephemeralPort))
}
idpMetaFile.delete()
idpMetaFile.createNewFile()
idpMetaFile.write(content.toString(), "UTF-8")
}
}
integTestCluster.dependsOn setupPorts

integTestCluster {
setting 'xpack.license.self_generated.type', 'trial'
Expand Down Expand Up @@ -55,8 +72,9 @@ integTestCluster {
setting 'xpack.security.authc.realms.native.order', '3'

setting 'xpack.ml.enabled', 'false'
setting 'logger.org.elasticsearch.xpack.security', 'TRACE'

extraConfigFile 'idp-metadata.xml', idpFixtureProject.file("idp/shibboleth-idp/metadata/idp-metadata.xml")
extraConfigFile 'idp-metadata.xml', file(outputDir + "/idp-metadata.xml")

setupCommand 'setupTestAdmin',
'bin/elasticsearch-users', 'useradd', "test_admin", '-p', 'x-pack-test-password', '-r', "superuser"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -641,5 +641,4 @@ private URI getWebServerUri() {
throw new ElasticsearchException("Cannot construct URI for httpServer @ {}:{}", e, host, port);
}
}

}
6 changes: 3 additions & 3 deletions x-pack/test/idp-fixture/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ services:
command: --copy-service --loglevel debug
image: "osixia/openldap:1.2.3"
ports:
- "30389:389"
- "60636:636"
- "389"
- "636"
environment:
LDAP_ADMIN_PASSWORD: "NickFuryHeartsES"
LDAP_DOMAIN: "oldap.test.elasticsearch.com"
Expand All @@ -31,7 +31,7 @@ services:
- JETTY_BROWSER_SSL_KEYSTORE_PASSWORD=secret
- JETTY_BACKCHANNEL_SSL_KEYSTORE_PASSWORD=secret
ports:
- "4443:4443"
- "4443"
links:
- openldap:openldap
volumes:
Expand Down

0 comments on commit ecaae14

Please sign in to comment.