Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
superrain51
apollo
提交
4d79b4f7
apollo
项目概览
superrain51
/
apollo
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
apollo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4d79b4f7
编写于
7月 28, 2016
作者:
张
张乐
提交者:
GitHub
7月 28, 2016
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #352 from nobodyiam/support-client-local-mode-merge
Add local dev mode
上级
8d7991c4
bdacf5a5
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
73 addition
and
10 deletion
+73
-10
apollo-client/src/main/java/com/ctrip/framework/apollo/internals/LocalFileConfigRepository.java
...framework/apollo/internals/LocalFileConfigRepository.java
+1
-0
apollo-client/src/main/java/com/ctrip/framework/apollo/spi/DefaultConfigFactory.java
.../com/ctrip/framework/apollo/spi/DefaultConfigFactory.java
+11
-1
apollo-client/src/main/java/com/ctrip/framework/apollo/util/ConfigUtil.java
...main/java/com/ctrip/framework/apollo/util/ConfigUtil.java
+10
-0
apollo-client/src/main/resources/META-INF/plexus/components.xml
...-client/src/main/resources/META-INF/plexus/components.xml
+5
-0
apollo-client/src/test/java/com/ctrip/framework/apollo/BaseIntegrationTest.java
.../java/com/ctrip/framework/apollo/BaseIntegrationTest.java
+2
-2
apollo-client/src/test/java/com/ctrip/framework/apollo/integration/ConfigIntegrationTest.java
...p/framework/apollo/integration/ConfigIntegrationTest.java
+8
-3
apollo-client/src/test/java/com/ctrip/framework/apollo/internals/RemoteConfigRepositoryTest.java
...ramework/apollo/internals/RemoteConfigRepositoryTest.java
+1
-0
apollo-client/src/test/java/com/ctrip/framework/apollo/spi/DefaultConfigFactoryTest.java
.../ctrip/framework/apollo/spi/DefaultConfigFactoryTest.java
+32
-1
apollo-client/src/test/resources/log4j2.xml
apollo-client/src/test/resources/log4j2.xml
+1
-1
apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/ConfigFileController.java
...apollo/configservice/controller/ConfigFileController.java
+2
-2
未找到文件。
apollo-client/src/main/java/com/ctrip/framework/apollo/internals/LocalFileConfigRepository.java
浏览文件 @
4d79b4f7
...
...
@@ -184,6 +184,7 @@ public class LocalFileConfigRepository extends AbstractConfigRepository
properties
=
new
Properties
();
properties
.
load
(
in
);
logger
.
debug
(
"Loading local config file {} successfully!"
,
file
.
getAbsolutePath
());
}
catch
(
IOException
ex
)
{
Cat
.
logError
(
ex
);
throw
new
ApolloConfigException
(
String
...
...
apollo-client/src/main/java/com/ctrip/framework/apollo/spi/DefaultConfigFactory.java
浏览文件 @
4d79b4f7
...
...
@@ -9,9 +9,11 @@ import com.ctrip.framework.apollo.internals.LocalFileConfigRepository;
import
com.ctrip.framework.apollo.internals.PropertiesConfigFile
;
import
com.ctrip.framework.apollo.internals.RemoteConfigRepository
;
import
com.ctrip.framework.apollo.internals.XmlConfigFile
;
import
com.ctrip.framework.apollo.util.ConfigUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.lookup.annotation.Named
;
/**
...
...
@@ -20,6 +22,8 @@ import org.unidal.lookup.annotation.Named;
@Named
(
type
=
ConfigFactory
.
class
)
public
class
DefaultConfigFactory
implements
ConfigFactory
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
DefaultConfigFactory
.
class
);
@Inject
private
ConfigUtil
m_configUtil
;
@Override
public
Config
create
(
String
namespace
)
{
...
...
@@ -44,7 +48,13 @@ public class DefaultConfigFactory implements ConfigFactory {
LocalFileConfigRepository
createLocalConfigRepository
(
String
namespace
)
{
LocalFileConfigRepository
localFileConfigRepository
=
new
LocalFileConfigRepository
(
namespace
);
localFileConfigRepository
.
setUpstreamRepository
(
createRemoteConfigRepository
(
namespace
));
if
(
m_configUtil
.
isInLocalMode
())
{
logger
.
warn
(
"==== Apollo is in local mode! Won't pull configs from remote server for namespace {} ! ===="
,
namespace
);
}
else
{
localFileConfigRepository
.
setUpstreamRepository
(
createRemoteConfigRepository
(
namespace
));
}
return
localFileConfigRepository
;
}
...
...
apollo-client/src/main/java/com/ctrip/framework/apollo/util/ConfigUtil.java
浏览文件 @
4d79b4f7
...
...
@@ -184,4 +184,14 @@ public class ConfigUtil {
//TODO call Framework Foundation to get the default local cache dir
return
String
.
format
(
"/opt/data/%s"
,
getAppId
());
}
public
boolean
isInLocalMode
()
{
try
{
Env
env
=
getApolloEnv
();
return
env
==
Env
.
LOCAL
;
}
catch
(
Throwable
ex
)
{
//ignore
}
return
false
;
}
}
apollo-client/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
4d79b4f7
...
...
@@ -12,6 +12,11 @@
<component>
<role>
com.ctrip.framework.apollo.spi.ConfigFactory
</role>
<implementation>
com.ctrip.framework.apollo.spi.DefaultConfigFactory
</implementation>
<requirements>
<requirement>
<role>
com.ctrip.framework.apollo.util.ConfigUtil
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.ctrip.framework.apollo.spi.ConfigRegistry
</role>
...
...
apollo-client/src/test/java/com/ctrip/framework/apollo/BaseIntegrationTest.java
浏览文件 @
4d79b4f7
...
...
@@ -50,7 +50,7 @@ public abstract class BaseIntegrationTest extends ComponentTestCase {
@BeforeClass
public
static
void
beforeClass
()
throws
Exception
{
File
apolloEnvPropertiesFile
=
new
File
(
ClassLoaderUtil
.
getClassPath
(),
"apollo-env.properties"
);
Files
.
write
(
"
local
.meta="
+
metaServiceUrl
,
apolloEnvPropertiesFile
,
Charsets
.
UTF_8
);
Files
.
write
(
"
dev
.meta="
+
metaServiceUrl
,
apolloEnvPropertiesFile
,
Charsets
.
UTF_8
);
apolloEnvPropertiesFile
.
deleteOnExit
();
}
...
...
@@ -159,7 +159,7 @@ public abstract class BaseIntegrationTest extends ComponentTestCase {
@Override
public
Env
getApolloEnv
()
{
return
Env
.
LOCAL
;
return
Env
.
DEV
;
}
@Override
...
...
apollo-client/src/test/java/com/ctrip/framework/apollo/integration/ConfigIntegrationTest.java
浏览文件 @
4d79b4f7
...
...
@@ -14,6 +14,7 @@ import com.ctrip.framework.apollo.core.ConfigConsts;
import
com.ctrip.framework.apollo.core.dto.ApolloConfig
;
import
com.ctrip.framework.apollo.core.dto.ApolloConfigNotification
;
import
com.ctrip.framework.apollo.core.utils.ClassLoaderUtil
;
import
com.ctrip.framework.apollo.internals.RemoteConfigLongPollService
;
import
com.ctrip.framework.apollo.model.ConfigChangeEvent
;
import
org.eclipse.jetty.server.Request
;
...
...
@@ -22,6 +23,7 @@ import org.eclipse.jetty.server.handler.ContextHandler;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
java.io.File
;
import
java.io.FileOutputStream
;
...
...
@@ -50,6 +52,7 @@ public class ConfigIntegrationTest extends BaseIntegrationTest {
private
File
configDir
;
private
String
defaultNamespace
;
private
String
someOtherNamespace
;
private
RemoteConfigLongPollService
remoteConfigLongPollService
;
@Before
public
void
setUp
()
throws
Exception
{
...
...
@@ -63,11 +66,13 @@ public class ConfigIntegrationTest extends BaseIntegrationTest {
configDir
.
delete
();
}
configDir
.
mkdirs
();
remoteConfigLongPollService
=
lookup
(
RemoteConfigLongPollService
.
class
);
}
@Override
@After
public
void
tearDown
()
throws
Exception
{
ReflectionTestUtils
.
invokeMethod
(
remoteConfigLongPollService
,
"stopLongPollingRefresh"
);
recursiveDelete
(
configDir
);
super
.
tearDown
();
}
...
...
@@ -309,7 +314,7 @@ public class ConfigIntegrationTest extends BaseIntegrationTest {
apolloConfig
.
getConfigurations
().
put
(
someKey
,
anotherValue
);
longPollFinished
.
get
(
pollTimeoutInMS
*
5
0
,
TimeUnit
.
MILLISECONDS
);
longPollFinished
.
get
(
500
0
,
TimeUnit
.
MILLISECONDS
);
assertEquals
(
anotherValue
,
config
.
getProperty
(
someKey
,
null
));
...
...
@@ -361,8 +366,8 @@ public class ConfigIntegrationTest extends BaseIntegrationTest {
apolloConfig
.
getConfigurations
().
put
(
someKey
,
anotherValue
);
longPollFinished
.
get
(
pollTimeoutInMS
*
2
0
,
TimeUnit
.
MILLISECONDS
);
someOtherNamespacelongPollFinished
.
get
(
pollTimeoutInMS
*
2
0
,
TimeUnit
.
MILLISECONDS
);
longPollFinished
.
get
(
500
0
,
TimeUnit
.
MILLISECONDS
);
someOtherNamespacelongPollFinished
.
get
(
500
0
,
TimeUnit
.
MILLISECONDS
);
assertEquals
(
anotherValue
,
config
.
getProperty
(
someKey
,
null
));
assertEquals
(
anotherValue
,
someOtherConfig
.
getProperty
(
someKey
,
null
));
...
...
apollo-client/src/test/java/com/ctrip/framework/apollo/internals/RemoteConfigRepositoryTest.java
浏览文件 @
4d79b4f7
...
...
@@ -186,6 +186,7 @@ public class RemoteConfigRepositoryTest extends ComponentTestCase {
.
assembleQueryConfigUrl
(
someUri
,
someAppId
,
someCluster
,
someNamespace
,
null
,
someApolloConfig
);
remoteConfigLongPollService
.
stopLongPollingRefresh
();
assertTrue
(
queryConfigUrl
.
contains
(
"http://someServer/configs/someAppId/someCluster+%20&.-_someSign/"
+
someNamespace
));
...
...
apollo-client/src/test/java/com/ctrip/framework/apollo/spi/DefaultConfigFactoryTest.java
浏览文件 @
4d79b4f7
...
...
@@ -3,13 +3,16 @@ package com.ctrip.framework.apollo.spi;
import
com.ctrip.framework.apollo.Config
;
import
com.ctrip.framework.apollo.ConfigFile
;
import
com.ctrip.framework.apollo.core.enums.ConfigFileFormat
;
import
com.ctrip.framework.apollo.core.enums.Env
;
import
com.ctrip.framework.apollo.internals.DefaultConfig
;
import
com.ctrip.framework.apollo.internals.LocalFileConfigRepository
;
import
com.ctrip.framework.apollo.internals.PropertiesConfigFile
;
import
com.ctrip.framework.apollo.internals.XmlConfigFile
;
import
com.ctrip.framework.apollo.util.ConfigUtil
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.unidal.lookup.ComponentTestCase
;
import
java.util.Properties
;
...
...
@@ -17,8 +20,8 @@ import java.util.Properties;
import
static
org
.
hamcrest
.
core
.
Is
.
is
;
import
static
org
.
hamcrest
.
core
.
IsInstanceOf
.
instanceOf
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertNull
;
import
static
org
.
junit
.
Assert
.
assertThat
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
import
static
org
.
mockito
.
Mockito
.
doReturn
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
spy
;
...
...
@@ -29,10 +32,15 @@ import static org.mockito.Mockito.when;
*/
public
class
DefaultConfigFactoryTest
extends
ComponentTestCase
{
private
DefaultConfigFactory
defaultConfigFactory
;
private
static
String
someAppId
;
private
static
Env
someEnv
;
@Before
public
void
setUp
()
throws
Exception
{
super
.
setUp
();
someAppId
=
"someId"
;
someEnv
=
Env
.
DEV
;
defineComponent
(
ConfigUtil
.
class
,
MockConfigUtil
.
class
);
defaultConfigFactory
=
spy
((
DefaultConfigFactory
)
lookup
(
ConfigFactory
.
class
));
}
...
...
@@ -56,6 +64,17 @@ public class DefaultConfigFactoryTest extends ComponentTestCase {
assertEquals
(
someValue
,
result
.
getProperty
(
someKey
,
null
));
}
@Test
public
void
testCreateLocalConfigRepositoryInLocalDev
()
throws
Exception
{
String
someNamespace
=
"someName"
;
someEnv
=
Env
.
LOCAL
;
LocalFileConfigRepository
localFileConfigRepository
=
defaultConfigFactory
.
createLocalConfigRepository
(
someNamespace
);
assertNull
(
ReflectionTestUtils
.
getField
(
localFileConfigRepository
,
"m_upstream"
));
}
@Test
public
void
testCreateConfigFile
()
throws
Exception
{
String
someNamespace
=
"someName"
;
...
...
@@ -82,4 +101,16 @@ public class DefaultConfigFactoryTest extends ComponentTestCase {
assertEquals
(
anotherNamespace
,
xmlConfigFile
.
getNamespace
());
}
public
static
class
MockConfigUtil
extends
ConfigUtil
{
@Override
public
String
getAppId
()
{
return
someAppId
;
}
@Override
public
Env
getApolloEnv
()
{
return
someEnv
;
}
}
}
apollo-client/src/test/resources/log4j2.xml
浏览文件 @
4d79b4f7
...
...
@@ -10,7 +10,7 @@
</appenders>
<loggers>
<logger
name=
"com.ctrip.framework.apollo"
additivity=
"false"
level=
"trace"
>
<AppenderRef
ref=
"Async"
level=
"
INFO
"
/>
<AppenderRef
ref=
"Async"
level=
"
DEBUG
"
/>
</logger>
<root
level=
"INFO"
>
<AppenderRef
ref=
"Async"
/>
...
...
apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/ConfigFileController.java
浏览文件 @
4d79b4f7
...
...
@@ -159,7 +159,7 @@ public class ConfigFileController implements ReleaseMessageListener {
String
result
=
localCache
.
getIfPresent
(
cacheKey
);
if
(
Strings
.
isNullOrEmpty
(
result
))
{
Cat
.
logEvent
(
"ConfigFile
-Cache-
Miss"
,
cacheKey
);
Cat
.
logEvent
(
"ConfigFile
.Cache.
Miss"
,
cacheKey
);
ApolloConfig
apolloConfig
=
configController
.
queryConfig
(
appId
,
clusterName
,
namespace
,
dataCenter
,
"-1"
,
clientIp
,
...
...
@@ -193,7 +193,7 @@ public class ConfigFileController implements ReleaseMessageListener {
cacheKey2WatchedKeys
.
putAll
(
cacheKey
,
watchedKeys
);
logger
.
debug
(
"added cache for key: {}"
,
cacheKey
);
}
else
{
Cat
.
logEvent
(
"ConfigFile
-Cache-
Hit"
,
cacheKey
);
Cat
.
logEvent
(
"ConfigFile
.Cache.
Hit"
,
cacheKey
);
}
return
result
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录