Search in sources :

Example 1 with ConfigSourceType

use of com.ctrip.framework.apollo.enums.ConfigSourceType in project apollo by ctripcorp.

the class JsonConfigFileTest method testOnRepositoryChange.

@Test
public void testOnRepositoryChange() throws Exception {
    Properties someProperties = new Properties();
    String key = ConfigConsts.CONFIG_FILE_CONTENT_KEY;
    String someValue = "someValue";
    String anotherValue = "anotherValue";
    someProperties.setProperty(key, someValue);
    someSourceType = ConfigSourceType.LOCAL;
    when(configRepository.getConfig()).thenReturn(someProperties);
    when(configRepository.getSourceType()).thenReturn(someSourceType);
    JsonConfigFile configFile = new JsonConfigFile(someNamespace, configRepository);
    assertEquals(someValue, configFile.getContent());
    assertEquals(someSourceType, configFile.getSourceType());
    Properties anotherProperties = new Properties();
    anotherProperties.setProperty(key, anotherValue);
    ConfigSourceType anotherSourceType = ConfigSourceType.REMOTE;
    when(configRepository.getSourceType()).thenReturn(anotherSourceType);
    configFile.onRepositoryChange(someNamespace, anotherProperties);
    assertEquals(anotherValue, configFile.getContent());
    assertEquals(anotherSourceType, configFile.getSourceType());
}
Also used : ConfigSourceType(com.ctrip.framework.apollo.enums.ConfigSourceType) Properties(java.util.Properties) Test(org.junit.Test)

Example 2 with ConfigSourceType

use of com.ctrip.framework.apollo.enums.ConfigSourceType in project apollo by ctripcorp.

the class PropertiesCompatibleFileConfigRepositoryTest method testGetSourceType.

@Test
public void testGetSourceType() throws Exception {
    ConfigSourceType someType = ConfigSourceType.REMOTE;
    when(configFile.getSourceType()).thenReturn(someType);
    PropertiesCompatibleFileConfigRepository configFileRepository = new PropertiesCompatibleFileConfigRepository(configFile);
    assertSame(someType, configFileRepository.getSourceType());
}
Also used : ConfigSourceType(com.ctrip.framework.apollo.enums.ConfigSourceType) Test(org.junit.Test)

Example 3 with ConfigSourceType

use of com.ctrip.framework.apollo.enums.ConfigSourceType in project apollo by ctripcorp.

the class DefaultConfigTest method testOnRepositoryChange.

@Test
public void testOnRepositoryChange() throws Exception {
    String someKey = "someKey";
    String someSystemPropertyValue = "system-property-value";
    String anotherKey = "anotherKey";
    String someLocalFileValue = "local-file-value";
    String keyToBeDeleted = "keyToBeDeleted";
    String keyToBeDeletedValue = "keyToBeDeletedValue";
    String yetAnotherKey = "yetAnotherKey";
    String yetAnotherValue = "yetAnotherValue";
    String yetAnotherResourceValue = "yetAnotherResourceValue";
    // set up system property
    System.setProperty(someKey, someSystemPropertyValue);
    // set up config repo
    someProperties = new Properties();
    someProperties.putAll(ImmutableMap.of(someKey, someLocalFileValue, anotherKey, someLocalFileValue, keyToBeDeleted, keyToBeDeletedValue, yetAnotherKey, yetAnotherValue));
    when(configRepository.getConfig()).thenReturn(someProperties);
    someSourceType = ConfigSourceType.LOCAL;
    when(configRepository.getSourceType()).thenReturn(someSourceType);
    // set up resource file
    File resourceFile = new File(someResourceDir, someNamespace + ".properties");
    Files.append(yetAnotherKey + "=" + yetAnotherResourceValue, resourceFile, Charsets.UTF_8);
    DefaultConfig defaultConfig = new DefaultConfig(someNamespace, configRepository);
    assertEquals(someSourceType, defaultConfig.getSourceType());
    final SettableFuture<ConfigChangeEvent> configChangeFuture = SettableFuture.create();
    ConfigChangeListener someListener = new ConfigChangeListener() {

        @Override
        public void onChange(ConfigChangeEvent changeEvent) {
            configChangeFuture.set(changeEvent);
        }
    };
    defaultConfig.addChangeListener(someListener);
    Properties newProperties = new Properties();
    String someKeyNewValue = "new-some-value";
    String anotherKeyNewValue = "another-new-value";
    String newKey = "newKey";
    String newValue = "newValue";
    newProperties.putAll(ImmutableMap.of(someKey, someKeyNewValue, anotherKey, anotherKeyNewValue, newKey, newValue));
    ConfigSourceType anotherSourceType = ConfigSourceType.REMOTE;
    when(configRepository.getSourceType()).thenReturn(anotherSourceType);
    defaultConfig.onRepositoryChange(someNamespace, newProperties);
    ConfigChangeEvent changeEvent = configChangeFuture.get(500, TimeUnit.MILLISECONDS);
    // clean up
    System.clearProperty(someKey);
    assertEquals(someNamespace, changeEvent.getNamespace());
    assertEquals(4, changeEvent.changedKeys().size());
    ConfigChange anotherKeyChange = changeEvent.getChange(anotherKey);
    assertEquals(someLocalFileValue, anotherKeyChange.getOldValue());
    assertEquals(anotherKeyNewValue, anotherKeyChange.getNewValue());
    assertEquals(PropertyChangeType.MODIFIED, anotherKeyChange.getChangeType());
    ConfigChange yetAnotherKeyChange = changeEvent.getChange(yetAnotherKey);
    assertEquals(yetAnotherValue, yetAnotherKeyChange.getOldValue());
    assertEquals(yetAnotherResourceValue, yetAnotherKeyChange.getNewValue());
    assertEquals(PropertyChangeType.MODIFIED, yetAnotherKeyChange.getChangeType());
    ConfigChange keyToBeDeletedChange = changeEvent.getChange(keyToBeDeleted);
    assertEquals(keyToBeDeletedValue, keyToBeDeletedChange.getOldValue());
    assertEquals(null, keyToBeDeletedChange.getNewValue());
    assertEquals(PropertyChangeType.DELETED, keyToBeDeletedChange.getChangeType());
    ConfigChange newKeyChange = changeEvent.getChange(newKey);
    assertEquals(null, newKeyChange.getOldValue());
    assertEquals(newValue, newKeyChange.getNewValue());
    assertEquals(PropertyChangeType.ADDED, newKeyChange.getChangeType());
    assertEquals(anotherSourceType, defaultConfig.getSourceType());
}
Also used : ConfigChange(com.ctrip.framework.apollo.model.ConfigChange) ConfigSourceType(com.ctrip.framework.apollo.enums.ConfigSourceType) ConfigChangeListener(com.ctrip.framework.apollo.ConfigChangeListener) ConfigChangeEvent(com.ctrip.framework.apollo.model.ConfigChangeEvent) OrderedProperties(com.ctrip.framework.apollo.util.OrderedProperties) Properties(java.util.Properties) File(java.io.File) Test(org.junit.Test)

Example 4 with ConfigSourceType

use of com.ctrip.framework.apollo.enums.ConfigSourceType in project apollo by ctripcorp.

the class DefaultConfigTest method testLoadFromRepositoryFailedAndThenRecovered.

@Test
public void testLoadFromRepositoryFailedAndThenRecovered() {
    String someKey = "someKey";
    String someValue = "someValue";
    String someDefaultValue = "someDefaultValue";
    ConfigSourceType someSourceType = ConfigSourceType.REMOTE;
    when(configRepository.getConfig()).thenThrow(mock(RuntimeException.class));
    DefaultConfig defaultConfig = new DefaultConfig(someNamespace, configRepository);
    verify(configRepository, times(1)).addChangeListener(defaultConfig);
    assertEquals(ConfigSourceType.NONE, defaultConfig.getSourceType());
    assertEquals(someDefaultValue, defaultConfig.getProperty(someKey, someDefaultValue));
    someProperties = new Properties();
    someProperties.setProperty(someKey, someValue);
    when(configRepository.getSourceType()).thenReturn(someSourceType);
    defaultConfig.onRepositoryChange(someNamespace, someProperties);
    assertEquals(someSourceType, defaultConfig.getSourceType());
    assertEquals(someValue, defaultConfig.getProperty(someKey, someDefaultValue));
}
Also used : ConfigSourceType(com.ctrip.framework.apollo.enums.ConfigSourceType) OrderedProperties(com.ctrip.framework.apollo.util.OrderedProperties) Properties(java.util.Properties) Test(org.junit.Test)

Example 5 with ConfigSourceType

use of com.ctrip.framework.apollo.enums.ConfigSourceType in project apollo by ctripcorp.

the class LocalFileConfigRepositoryTest method testOnRepositoryChange.

@Test
public void testOnRepositoryChange() throws Exception {
    RepositoryChangeListener someListener = mock(RepositoryChangeListener.class);
    LocalFileConfigRepository localFileConfigRepository = new LocalFileConfigRepository(someNamespace, upstreamRepo);
    assertEquals(someSourceType, localFileConfigRepository.getSourceType());
    localFileConfigRepository.setLocalCacheDir(someBaseDir, true);
    localFileConfigRepository.addChangeListener(someListener);
    localFileConfigRepository.getConfig();
    Properties anotherProperties = new Properties();
    anotherProperties.put("anotherKey", "anotherValue");
    ConfigSourceType anotherSourceType = ConfigSourceType.NONE;
    when(upstreamRepo.getSourceType()).thenReturn(anotherSourceType);
    localFileConfigRepository.onRepositoryChange(someNamespace, anotherProperties);
    final ArgumentCaptor<Properties> captor = ArgumentCaptor.forClass(Properties.class);
    verify(someListener, times(1)).onRepositoryChange(eq(someNamespace), captor.capture());
    assertEquals(anotherProperties, captor.getValue());
    assertEquals(anotherSourceType, localFileConfigRepository.getSourceType());
}
Also used : ConfigSourceType(com.ctrip.framework.apollo.enums.ConfigSourceType) Properties(java.util.Properties) Test(org.junit.Test)

Aggregations

ConfigSourceType (com.ctrip.framework.apollo.enums.ConfigSourceType)8 Properties (java.util.Properties)7 Test (org.junit.Test)7 ConfigChange (com.ctrip.framework.apollo.model.ConfigChange)3 OrderedProperties (com.ctrip.framework.apollo.util.OrderedProperties)3 ConfigChangeListener (com.ctrip.framework.apollo.ConfigChangeListener)2 ConfigChangeEvent (com.ctrip.framework.apollo.model.ConfigChangeEvent)2 File (java.io.File)1