Add version to environment response

Users see it logged by the config client, and it appears in the
Environment response from the config server. It's hard to add it
to the /env endpoint without some extension points in Boot.

Fixes gh-244, fixes gh-245
This commit is contained in:
Spencer Gibb
2015-10-01 12:47:20 -06:00
committed by Dave Syer
parent d4ce149f2d
commit 5ceca18292
15 changed files with 200 additions and 68 deletions

View File

@@ -17,6 +17,8 @@
package org.springframework.cloud.config.server.environment;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
@@ -34,7 +36,6 @@ import org.eclipse.jgit.util.FileUtils;
import org.junit.Before;
import org.junit.Test;
import org.springframework.cloud.config.environment.Environment;
import org.springframework.cloud.config.server.environment.JGitEnvironmentRepository;
import org.springframework.cloud.config.server.test.ConfigServerTestUtils;
import org.springframework.core.env.StandardEnvironment;
@@ -64,8 +65,9 @@ public class JGitEnvironmentRepositoryTests {
this.repository.findOne("bar", "staging", "master");
Environment environment = this.repository.findOne("bar", "staging", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals(this.repository.getUri() + "/bar.properties", environment
.getPropertySources().get(0).getName());
assertEquals(this.repository.getUri() + "/bar.properties",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
@Test
@@ -76,8 +78,15 @@ public class JGitEnvironmentRepositoryTests {
this.repository.findOne("bar", "staging", "master");
Environment environment = this.repository.findOne("bar", "staging", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals(this.repository.getUri() + "/sub/application.yml", environment
.getPropertySources().get(0).getName());
assertEquals(this.repository.getUri() + "/sub/application.yml",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
private void assertVersion(Environment environment) {
String version = environment.getVersion();
assertNotNull("version was null", version);
assertTrue("version length was wrong", version.length() >= 40 && version.length() <= 64);
}
@Test
@@ -88,8 +97,9 @@ public class JGitEnvironmentRepositoryTests {
this.repository.findOne("bar", "staging", "master");
Environment environment = this.repository.findOne("bar", "staging", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals(this.repository.getUri() + "/sub/application.yml", environment
.getPropertySources().get(0).getName());
assertEquals(this.repository.getUri() + "/sub/application.yml",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
@Test
@@ -97,8 +107,9 @@ public class JGitEnvironmentRepositoryTests {
this.repository.setBasedir(this.basedir);
Environment environment = this.repository.findOne("bar", "staging", "raw");
assertEquals(2, environment.getPropertySources().size());
assertEquals(this.repository.getUri() + "/bar.properties", environment
.getPropertySources().get(0).getName());
assertEquals(this.repository.getUri() + "/bar.properties",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
@Test
@@ -108,6 +119,8 @@ public class JGitEnvironmentRepositoryTests {
assertEquals(2, environment.getPropertySources().size());
assertEquals(this.repository.getUri() + "/bar.properties", environment
.getPropertySources().get(0).getName());
//TODO: why is the version null in tag?
assertNull("version was not null", environment.getVersion());
}
@Test
@@ -116,8 +129,9 @@ public class JGitEnvironmentRepositoryTests {
this.repository.findOne("bar", "staging", "master");
Environment environment = this.repository.findOne("bar", "staging", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals(this.repository.getUri() + "/bar.properties", environment
.getPropertySources().get(0).getName());
assertEquals(this.repository.getUri() + "/bar.properties",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
@Test
@@ -128,8 +142,9 @@ public class JGitEnvironmentRepositoryTests {
this.repository.findOne("bar", "staging", "master");
Environment environment = this.repository.findOne("bar", "staging", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals(this.repository.getUri() + "/bar.properties", environment
.getPropertySources().get(0).getName());
assertEquals(this.repository.getUri() + "/bar.properties",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
@Test

View File

@@ -16,6 +16,9 @@
package org.springframework.cloud.config.server.environment;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.HashMap;
@@ -24,14 +27,15 @@ import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.springframework.cloud.config.environment.Environment;
import org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentRepository;
import org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentRepository.PatternMatchingJGitEnvironmentRepository;
import org.springframework.cloud.config.server.test.ConfigServerTestUtils;
import org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentRepository.PatternMatchingJGitEnvironmentRepository;
import org.springframework.core.env.StandardEnvironment;
/**
*
* @author Andy Chan (iceycake)
* @author Dave Syer
* @author Spencer Gibb
*
*/
public class MultipleJGitEnvironmentRepositoryTests {
@@ -42,20 +46,18 @@ public class MultipleJGitEnvironmentRepositoryTests {
@Before
public void init() throws Exception {
String defaultUri = ConfigServerTestUtils.prepareLocalRepo("config-repo");
repository.setUri(defaultUri);
repository.setRepos(createRepositories());
}
private Map<String, PatternMatchingJGitEnvironmentRepository> createRepositories() throws Exception {
String test1Uri = ConfigServerTestUtils.prepareLocalRepo("test1-config-repo");
Map<String, PatternMatchingJGitEnvironmentRepository> repos = new HashMap<String, PatternMatchingJGitEnvironmentRepository>();
Map<String, PatternMatchingJGitEnvironmentRepository> repos = new HashMap<>();
repos.put("test1", createRepository("test1", "*test1*", test1Uri));
return repos;
}
private PatternMatchingJGitEnvironmentRepository createRepository(String name, String pattern, String uri) {
PatternMatchingJGitEnvironmentRepository repo = new PatternMatchingJGitEnvironmentRepository();
repo.setEnvironment(environment);
@@ -69,9 +71,16 @@ public class MultipleJGitEnvironmentRepositoryTests {
public void defaultRepo() {
Environment environment = repository.findOne("bar", "staging", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals(repository.getUri() + "/bar.properties", environment
.getPropertySources().get(0).getName());
}
assertEquals(repository.getUri() + "/bar.properties",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
private void assertVersion(Environment environment) {
String version = environment.getVersion();
assertNotNull("version was null", version);
assertTrue("version length was wrong", version.length() >= 40 && version.length() <= 64);
}
@Test
public void defaultRepoNested() throws IOException {
@@ -81,16 +90,18 @@ public class MultipleJGitEnvironmentRepositoryTests {
repository.findOne("bar", "staging", "master");
Environment environment = repository.findOne("bar", "staging", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals(repository.getUri() + "/sub/application.yml", environment
.getPropertySources().get(0).getName());
assertEquals(repository.getUri() + "/sub/application.yml",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
@Test
public void defaultRepoBranch() {
Environment environment = repository.findOne("bar", "staging", "raw");
assertEquals(2, environment.getPropertySources().size());
assertEquals(repository.getUri() + "/bar.properties", environment
.getPropertySources().get(0).getName());
assertEquals(repository.getUri() + "/bar.properties",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
@Test
@@ -99,6 +110,7 @@ public class MultipleJGitEnvironmentRepositoryTests {
assertEquals(2, environment.getPropertySources().size());
assertEquals(repository.getUri() + "/bar.properties", environment
.getPropertySources().get(0).getName());
assertNull("version was not null", environment.getVersion());
}
@Test
@@ -106,23 +118,25 @@ public class MultipleJGitEnvironmentRepositoryTests {
repository.findOne("bar", "staging", "master");
Environment environment = repository.findOne("bar", "staging", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals(repository.getUri() + "/bar.properties", environment
.getPropertySources().get(0).getName());
assertEquals(repository.getUri() + "/bar.properties",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
@Test
public void mappingRepo() {
Environment environment = repository.findOne("test1-svc", "staging", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals(getUri("*test1*") + "/test1-svc.properties", environment
.getPropertySources().get(0).getName());
}
assertEquals(getUri("*test1*") + "/test1-svc.properties",
environment.getPropertySources().get(0).getName());
assertVersion(environment);
}
private String getUri(String pattern) {
String uri = null;
Map<String, PatternMatchingJGitEnvironmentRepository> repoMappings = repository.getRepos();
for (PatternMatchingJGitEnvironmentRepository repo : repoMappings.values()) {
String[] mappingPattern = repo.getPattern();
if (mappingPattern != null && mappingPattern.length!=0) {
@@ -130,7 +144,7 @@ public class MultipleJGitEnvironmentRepositoryTests {
break;
}
}
return uri;
}
}

View File

@@ -21,11 +21,11 @@ import org.junit.Before;
import org.junit.Test;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.config.environment.Environment;
import org.springframework.cloud.config.server.environment.NativeEnvironmentRepository;
import org.springframework.context.ConfigurableApplicationContext;
/**
* @author Dave Syer
* @author Spencer Gibb
*
*/
public class NativeEnvironmentRepositoryTests {
@@ -37,6 +37,7 @@ public class NativeEnvironmentRepositoryTests {
ConfigurableApplicationContext context = new SpringApplicationBuilder(
NativeEnvironmentRepositoryTests.class).web(false).run();
this.repository = new NativeEnvironmentRepository(context.getEnvironment());
this.repository.setVersion("myversion");
context.close();
}
@@ -44,6 +45,7 @@ public class NativeEnvironmentRepositoryTests {
public void vanilla() {
Environment environment = this.repository.findOne("foo", "development", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals("version was wrong", "myversion", environment.getVersion());
}
@Test
@@ -51,6 +53,7 @@ public class NativeEnvironmentRepositoryTests {
System.setProperty("spring.profiles.active", "cloud");
Environment environment = this.repository.findOne("foo", "main", "master");
assertEquals(1, environment.getPropertySources().size());
assertEquals("version was wrong", "myversion", environment.getVersion());
}
@Test
@@ -58,6 +61,7 @@ public class NativeEnvironmentRepositoryTests {
this.repository.setSearchLocations("classpath:/test");
Environment environment = this.repository.findOne("foo", "development", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals("version was wrong", "myversion", environment.getVersion());
}
@Test
@@ -65,6 +69,7 @@ public class NativeEnvironmentRepositoryTests {
this.repository.setSearchLocations("file:./src/test/resources/test");
Environment environment = this.repository.findOne("foo", "development", "master");
assertEquals(2, environment.getPropertySources().size());
assertEquals("version was wrong", "myversion", environment.getVersion());
}
@Test
@@ -76,6 +81,7 @@ public class NativeEnvironmentRepositoryTests {
// foo-development.properties
assertEquals("dev_bar",
environment.getPropertySources().get(1).getSource().get("foo"));
assertEquals("version was wrong", "myversion", environment.getVersion());
}
}