未验证 提交 612f1967 编写于 作者: J Jason Song 提交者: GitHub

Merge pull request #1274 from nobodyiam/config-local-cache-dir

local cache dir customizable
package com.ctrip.framework.apollo.util;
import java.io.File;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
......@@ -206,10 +207,27 @@ public class ConfigUtil {
}
public String getDefaultLocalCacheDir() {
String cacheRoot = isOSWindows() ? "C:\\opt\\data\\%s" : "/opt/data/%s";
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 String getCustomizedCacheRoot() {
// 1. Get from System Property
String cacheRoot = System.getProperty("apollo.cacheDir");
if (Strings.isNullOrEmpty(cacheRoot)) {
// 2. Get from server.properties
cacheRoot = Foundation.server().getProperty("apollo.cacheDir", null);
}
return cacheRoot;
}
public boolean isInLocalMode() {
try {
Env env = getApolloEnv();
......
......@@ -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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册