Skip to content

Commit

Permalink
Add utility method to provide a service if to IdUtils (#721)
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanjbaxter committed Apr 2, 2020
1 parent bea81f7 commit 5ed5bc9
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
Expand Up @@ -26,6 +26,11 @@ public final class IdUtils {

private static final String SEPARATOR = ":";

// @checkstyle:off
public static final String DEFAULT_SERVICE_ID_STRING = "${vcap.application.name:${spring.application.name:application}}:${vcap.application.instance_index:${spring.application.index:${local.server.port:${server.port:0}}}}:${vcap.application.instance_id:${cachedrandom.${vcap.application.name:${spring.application.name:application}}.value}}";

// @checkstyle:on

private IdUtils() {
throw new IllegalStateException("Can't instantiate a utility class");
}
Expand Down Expand Up @@ -55,6 +60,23 @@ public static String getDefaultInstanceId(PropertyResolver resolver,
return combineParts(namePart, SEPARATOR, indexPart);
}

/**
* Gets the resolved service id.
* @param resolver A property resolved
* @return A unique id that can be used to uniquely identify a service
*/
public static String getResolvedServiceId(PropertyResolver resolver) {
return resolver.resolvePlaceholders(getUnresolvedServiceId());
}

/**
* Gets an the unresolved service id.
* @return The combination of properties to create a unique service id
*/
public static String getUnresolvedServiceId() {
return DEFAULT_SERVICE_ID_STRING;
}

public static String combineParts(String firstPart, String separator,
String secondPart) {
String combined = null;
Expand Down
Expand Up @@ -111,4 +111,41 @@ public void fullWorks() {
.as("instanceId was wrong");
}

@Test
public void testUnresolvedServiceId() {
then(IdUtils.DEFAULT_SERVICE_ID_STRING)
.isEqualTo(IdUtils.getUnresolvedServiceId());
}

@Test
public void testServiceIdDefaults() {
this.env.setProperty("cachedrandom.application.value", "123abc");
then("application:0:123abc").isEqualTo(IdUtils.getResolvedServiceId(this.env));
}

@Test
public void testVCAPServiceId() {
env.setProperty("vcap.application.name", "vcapname");
env.setProperty("vcap.application.instance_index", "vcapindex");
env.setProperty("vcap.application.instance_id", "vcapid");
then("vcapname:vcapindex:vcapid").isEqualTo(IdUtils.getResolvedServiceId(env));
}

@Test
public void testSpringServiceId() {
env.setProperty("spring.application.name", "springname");
env.setProperty("spring.application.index", "springindex");
env.setProperty("cachedrandom.springname.value", "123abc");
then("springname:springindex:123abc")
.isEqualTo(IdUtils.getResolvedServiceId(env));
}

@Test
public void testServerPortServiceId() {
env.setProperty("spring.application.name", "springname");
env.setProperty("server.port", "1234");
env.setProperty("cachedrandom.springname.value", "123abc");
then("springname:1234:123abc").isEqualTo(IdUtils.getResolvedServiceId(env));
}

}

0 comments on commit 5ed5bc9

Please sign in to comment.