提交 bf52eeca 编写于 作者: Z zhangzheng

fix

上级 2c4800f4
......@@ -5,7 +5,7 @@
<parent>
<artifactId>apollo</artifactId>
<groupId>com.ctrip.framework.apollo</groupId>
<version>1.1.5-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
package com.ctrip.framework.apollo.mockserver;
import com.ctrip.framework.apollo.core.MetaDomainConsts;
import com.ctrip.framework.apollo.core.dto.ApolloConfig;
import com.ctrip.framework.apollo.core.dto.ApolloConfigNotification;
import com.ctrip.framework.apollo.core.dto.ServiceDTO;
import com.ctrip.framework.apollo.core.spi.MetaServerProvider;
import com.ctrip.framework.apollo.core.utils.ResourceUtils;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
......@@ -71,8 +73,8 @@ public class EmbeddedApollo extends ExternalResource {
//指定apollo的metaserver地址为localhost
int port = server.getPort();
this.listenningUrl = "http://localhost:"+port;
System.setProperty("apollo.env","mock");
System.setProperty("mock_meta",listenningUrl);
MockedMetaServerProvider.setAddress(listenningUrl);
System.setProperty("apollo.longPollingInitialDelayInMills","1");
......
package com.ctrip.framework.apollo.mockserver;
import com.ctrip.framework.apollo.core.enums.Env;
import com.ctrip.framework.apollo.core.spi.MetaServerProvider;
/**
* Create by zhangzheng on 8/23/18
* Email:zhangzheng@youzan.com
*/
public class MockedMetaServerProvider implements MetaServerProvider{
private static String address;
public static void setAddress(String addr){
address = addr;
}
@Override
public String getMetaServerAddress(Env targetEnv) {
return address;
}
@Override
public int getOrder() {
return HIGHEST_PRECEDENCE;
}
}
package com.ctrip.framework.apollo.mockserver;
import static org.junit.Assert.assertEquals;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigChangeListener;
import com.ctrip.framework.apollo.ConfigService;
import com.ctrip.framework.apollo.enums.PropertyChangeType;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.google.common.util.concurrent.SettableFuture;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.springframework.boot.test.WebIntegrationTest;
/**
* Create by zhangzheng on 8/10/18
* Email:zhangzheng@youzan.com
*/
public class ApolloMockServerTest {
@ClassRule
public static EmbeddedApollo embeddedApollo = new EmbeddedApollo();
@Test
public void testPropertyInject() {
String namespace = "application";
Config config = ConfigService.getConfig(namespace);
assertEquals("value1",config.getProperty("key1",""));
assertEquals("value2",config.getProperty("key2",""));
String otherNamespace = "othernamespace";
config = ConfigService.getConfig(otherNamespace);
assertEquals("othervalue1",config.getProperty("key1",""));
assertEquals("othervalue2",config.getProperty("key2",""));
}
@Test
public void testListennerTriggeredByAdd()
throws InterruptedException, ExecutionException, TimeoutException {
System.setProperty("apollo.longPollingInitialDelayInMills","1");
String someNamespace = "application";
Config config = ConfigService.getConfig(someNamespace);
SettableFuture<Boolean> changed = SettableFuture.create();
String someKey = "someKey";
String someValue = "someValue";
config.addChangeListener(new ConfigChangeListener() {
@Override
public void onChange(ConfigChangeEvent changeEvent) {
assertEquals(true, changeEvent.isChanged(someKey));
assertEquals(someValue, changeEvent.getChange(someKey).getNewValue());
changed.set(true);
}
});
embeddedApollo.addOrModifyPropery(someNamespace, someKey, someValue);
assertEquals(true, changed.get(1000, TimeUnit.MILLISECONDS));
}
@Test
public void testListennerTriggeredByDel()
throws InterruptedException, ExecutionException, TimeoutException {
String someNamespace = "application";
Config config = ConfigService.getConfig(someNamespace);
SettableFuture<Boolean> changed = SettableFuture.create();
String someKey = "key1";
config.addChangeListener(new ConfigChangeListener() {
@Override
public void onChange(ConfigChangeEvent changeEvent) {
assertEquals(true, changeEvent.isChanged(someKey));
assertEquals(PropertyChangeType.DELETED, changeEvent.getChange(someKey).getChangeType());
changed.set(true);
}
});
embeddedApollo.delete(someNamespace, someKey);
assertEquals(true, changed.get(1000, TimeUnit.MILLISECONDS));
}
}
package com.ctrip.framework.apollo.mockserver;
import com.ctrip.framework.apollo.enums.PropertyChangeType;
import com.ctrip.framework.apollo.mockserver.SpringIntegrationTest.TestConfiguration;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
......@@ -18,6 +19,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
......@@ -33,12 +35,16 @@ public class SpringIntegrationTest {
@ClassRule
public static EmbeddedApollo embeddedApollo = new EmbeddedApollo();
@Test
public void testPropertyInjectAndListener()
throws InterruptedException, ExecutionException, TimeoutException {
@DirtiesContext
public void testPropertyInject(){
assertEquals("value1", testBean.key1);
assertEquals("value2", testBean.key2);
}
@Test
@DirtiesContext
public void testListenerTriggeredByAdd() throws InterruptedException, ExecutionException, TimeoutException {
String otherNamespace = "othernamespace";
embeddedApollo.addOrModifyPropery(otherNamespace,"someKey","someValue");
ConfigChangeEvent changeEvent = testBean.futureData.get(5000, TimeUnit.MILLISECONDS);
......@@ -46,6 +52,17 @@ public class SpringIntegrationTest {
assertEquals("someValue", changeEvent.getChange("someKey").getNewValue());
}
@Test
@DirtiesContext
public void testListenerTriggeredByDel()
throws InterruptedException, ExecutionException, TimeoutException {
String otherNamespace = "othernamespace";
embeddedApollo.delete(otherNamespace, "key1");
ConfigChangeEvent changeEvent = testBean.futureData.get(5000, TimeUnit.MILLISECONDS);
assertEquals(otherNamespace, changeEvent.getNamespace());
assertEquals(PropertyChangeType.DELETED, changeEvent.getChange("key1").getChangeType());
}
......
......@@ -103,6 +103,7 @@
<module>apollo-portal</module>
<module>apollo-assembly</module>
<module>apollo-demo</module>
<module>apollo-mockserver</module>
</modules>
<dependencyManagement>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册