Commit ba135814 authored by nobodyiam's avatar nobodyiam

minor refactor and add ut

parent 215ebc70
......@@ -65,7 +65,7 @@ public class LocalFileConfigRepository extends AbstractConfigRepository
private File findLocalCacheDir() {
try {
String defaultCacheDir = m_configUtil.getLocalCacheDir();
String defaultCacheDir = m_configUtil.getDefaultLocalCacheDir();
Path path = Paths.get(defaultCacheDir);
if (!Files.exists(path)) {
Files.createDirectories(path);
......
......@@ -35,7 +35,6 @@ public class ConfigUtil {
private TimeUnit configCacheExpireTimeUnit = TimeUnit.MINUTES;//1 minute
private long longPollingInitialDelayInMills = 2000;//2 seconds
private boolean autoUpdateInjectedSpringProperties = true;
private String localCacheDir = this.getDefaultLocalCacheDir();
public ConfigUtil() {
initRefreshInterval();
......@@ -46,7 +45,6 @@ public class ConfigUtil {
initMaxConfigCacheSize();
initLongPollingInitialDelayInMills();
initAutoUpdateInjectedSpringProperties();
initLocalCacheDir();
}
/**
......@@ -208,25 +206,26 @@ public class ConfigUtil {
return onErrorRetryIntervalTimeUnit;
}
private String getDefaultLocalCacheDir() {
String cacheRoot = isOSWindows() ? "C:\\opt\\data\\%s" : "/opt/data/%s";
public String getDefaultLocalCacheDir() {
String cacheRoot = getCustomizedCacheRoot();
if (!Strings.isNullOrEmpty(cacheRoot)) {
return cacheRoot + File.separator + getAppId();
}
cacheRoot = isOSWindows() ? "C:\\opt\\data\\%s" : "/opt/data/%s";
return String.format(cacheRoot, getAppId());
}
private void initLocalCacheDir() {
private String getCustomizedCacheRoot() {
// 1. Get from System Property
String cacheRoot = System.getProperty("apollo.localCacheDir");
String cacheRoot = System.getProperty("apollo.cacheDir");
if (Strings.isNullOrEmpty(cacheRoot)) {
// 2. Get from app.properties
cacheRoot = Foundation.app().getProperty("apollo.localCacheDir", null);
}
if (!Strings.isNullOrEmpty(cacheRoot)) {
this.localCacheDir = String.format(cacheRoot + File.separator + "%s", getAppId());
}
// 2. Get from server.properties
cacheRoot = Foundation.server().getProperty("apollo.cacheDir", null);
}
public String getLocalCacheDir() {
return this.localCacheDir;
return cacheRoot;
}
public boolean isInLocalMode() {
......
......@@ -178,7 +178,7 @@ public abstract class BaseIntegrationTest{
}
@Override
public String getLocalCacheDir() {
public String getDefaultLocalCacheDir() {
return ClassLoaderUtil.getClassPath();
}
......
......@@ -2,10 +2,14 @@ package com.ctrip.framework.apollo.util;
import com.ctrip.framework.apollo.core.ConfigConsts;
import java.io.File;
import org.junit.After;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
/**
* @author Jason Song(song_s@ctrip.com)
......@@ -22,6 +26,7 @@ public class ConfigUtilTest {
System.clearProperty("apollo.configCacheSize");
System.clearProperty("apollo.longPollingInitialDelayInMills");
System.clearProperty("apollo.autoUpdateInjectedSpringProperties");
System.clearProperty("apollo.cacheDir");
}
@Test
......@@ -185,4 +190,35 @@ public class ConfigUtilTest {
assertEquals(someAutoUpdateInjectedSpringProperties,
configUtil.isAutoUpdateInjectedSpringPropertiesEnabled());
}
@Test
public void testLocalCacheDirWithSystemProperty() throws Exception {
String someCacheDir = "someCacheDir";
String someAppId = "someAppId";
System.setProperty("apollo.cacheDir", someCacheDir);
ConfigUtil configUtil = spy(new ConfigUtil());
doReturn(someAppId).when(configUtil).getAppId();
assertEquals(someCacheDir + File.separator + someAppId, configUtil.getDefaultLocalCacheDir());
}
@Test
public void testDefaultLocalCacheDir() throws Exception {
String someAppId = "someAppId";
ConfigUtil configUtil = spy(new ConfigUtil());
doReturn(someAppId).when(configUtil).getAppId();
doReturn(true).when(configUtil).isOSWindows();
assertEquals("C:\\opt\\data\\" + someAppId, configUtil.getDefaultLocalCacheDir());
doReturn(false).when(configUtil).isOSWindows();
assertEquals("/opt/data/" + someAppId, configUtil.getDefaultLocalCacheDir());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment