Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
apollo
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
apollo
Commits
fba39307
Commit
fba39307
authored
Feb 22, 2020
by
Jason Song
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
a little refactoring for pr #2867
parent
f9b2aa6b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
77 additions
and
106 deletions
+77
-106
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/environment/PortalMetaDomainConsts.java
...ork/apollo/portal/environment/PortalMetaDomainConsts.java
+1
-1
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/environment/PortalMetaServerProvider.java
...k/apollo/portal/environment/PortalMetaServerProvider.java
+20
-42
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/environment/PortalMetaDomainConstsTest.java
...apollo/portal/environment/PortalMetaDomainConstsTest.java
+10
-13
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/environment/PortalMetaServerProviderTest.java
...ollo/portal/environment/PortalMetaServerProviderTest.java
+46
-50
No files found.
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/environment/PortalMetaDomainConsts.java
View file @
fba39307
...
...
@@ -34,7 +34,7 @@ public class PortalMetaDomainConsts {
private
static
final
Map
<
Env
,
String
>
metaServerAddressCache
=
Maps
.
newConcurrentMap
();
// initialize meta server provider without cache
private
static
final
PortalMetaServerProvider
metaServerProvider
=
new
PortalMetaServerProvider
();
private
static
final
PortalMetaServerProvider
metaServerProvider
=
PortalMetaServerProvider
.
getInstance
();
private
static
final
long
REFRESH_INTERVAL_IN_SECOND
=
60
;
// 1 min
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
PortalMetaDomainConsts
.
class
);
...
...
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/environment/PortalMetaServerProvider.java
View file @
fba39307
...
...
@@ -30,17 +30,27 @@ public class PortalMetaServerProvider {
*/
private
static
final
String
APOLLO_ENV_PROPERTIES_FILE_PATH
=
"apollo-env.properties"
;
// thread safe
private
static
volatile
Map
<
Env
,
String
>
domains
=
initializeDomains
();
private
static
final
PortalMetaServerProvider
instance
=
new
PortalMetaServerProvider
();
p
ublic
PortalMetaServerProvider
()
{
p
rivate
Map
<
Env
,
String
>
domains
;
private
PortalMetaServerProvider
()
{
domains
=
initializeDomains
();
}
public
static
PortalMetaServerProvider
getInstance
()
{
return
instance
;
}
String
getMetaServerAddress
(
Env
targetEnv
)
{
String
metaServerAddress
=
domains
.
get
(
targetEnv
);
return
metaServerAddress
==
null
?
null
:
metaServerAddress
.
trim
();
}
/**
* load all environment's meta address dynamically when this class loaded by JVM
*/
private
static
Map
<
Env
,
String
>
initializeDomains
()
{
private
Map
<
Env
,
String
>
initializeDomains
()
{
// find key-value from System Property which key ends with "_meta" (case insensitive)
Map
<
String
,
String
>
metaServerAddressesFromSystemProperty
=
KeyValueUtils
.
filterWithKeyIgnoreCaseEndsWith
(
System
.
getProperties
(),
"_meta"
);
// remove key's suffix "_meta" (case insensitive)
...
...
@@ -77,55 +87,23 @@ public class PortalMetaServerProvider {
}
// log all
logger
.
info
(
"
All environment's meta server addres
s: {}"
,
map
);
logger
.
info
(
"
Loaded meta server addresse
s: {}"
,
map
);
return
map
;
}
/**
* reload all
* environments and meta server addresses
*/
public
static
void
reloadAll
()
{
domains
=
initializeDomains
();
}
public
static
String
getMetaServerAddress
(
Env
targetEnv
)
{
String
metaServerAddress
=
domains
.
get
(
targetEnv
);
return
metaServerAddress
==
null
?
null
:
metaServerAddress
.
trim
();
}
/**
* add a environment's meta server address
* for the feature: add self-define environment in the web ui
* @param env
* @param metaServerAddress
*/
public
static
void
add
MetaServerAddress
(
Env
env
,
String
metaServerAddress
)
{
void
mock
MetaServerAddress
(
Env
env
,
String
metaServerAddress
)
{
domains
.
put
(
env
,
metaServerAddress
);
}
/**
*
delete the meta server address of the environmen
t
*
@param env
*
only for tes
t
*
reload all environments and meta server addresses
*/
public
static
void
deleteMetaServerAddress
(
Env
env
)
{
domains
.
remove
(
env
);
}
/**
* update the meta server address of the environment
* @param env
* @param metaServerAddress
*/
public
static
void
updateMetaServerAddress
(
Env
env
,
String
metaServerAddress
)
{
domains
.
put
(
env
,
metaServerAddress
);
}
/**
* clear all environments and meta server addresses saved
*/
public
static
void
clear
()
{
domains
.
clear
();
void
reset
()
{
domains
=
initializeDomains
();
}
}
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/environment/PortalMetaDomainConstsTest.java
View file @
fba39307
...
...
@@ -14,14 +14,14 @@ public class PortalMetaDomainConstsTest extends BaseIntegrationTest {
@After
public
void
tearDown
()
throws
Exception
{
super
.
tearDown
();
MockMetaServerProvider
.
clear
();
clear
();
}
@Test
public
void
testGetMetaDomain
()
{
// local
String
localMetaServerAddress
=
"http://localhost:8080"
;
PortalMetaServerProvider
.
update
MetaServerAddress
(
Env
.
LOCAL
,
localMetaServerAddress
);
mock
MetaServerAddress
(
Env
.
LOCAL
,
localMetaServerAddress
);
assertEquals
(
localMetaServerAddress
,
PortalMetaDomainConsts
.
getDomain
(
Env
.
LOCAL
));
// add this environment without meta server address
...
...
@@ -38,8 +38,8 @@ public class PortalMetaDomainConstsTest extends BaseIntegrationTest {
String
validServer
=
" http://localhost:"
+
PORT
+
" "
;
String
invalidServer
=
"http://localhost:"
+
findFreePort
();
MockMetaServerProvider
.
mock
(
Env
.
FAT
,
validServer
+
","
+
invalidServer
);
MockMetaServerProvider
.
mock
(
Env
.
UAT
,
invalidServer
+
","
+
validServer
);
mockMetaServerAddress
(
Env
.
FAT
,
validServer
+
","
+
invalidServer
);
mockMetaServerAddress
(
Env
.
UAT
,
invalidServer
+
","
+
validServer
);
assertEquals
(
validServer
.
trim
(),
PortalMetaDomainConsts
.
getDomain
(
Env
.
FAT
));
assertEquals
(
validServer
.
trim
(),
PortalMetaDomainConsts
.
getDomain
(
Env
.
UAT
));
...
...
@@ -50,21 +50,18 @@ public class PortalMetaDomainConstsTest extends BaseIntegrationTest {
String
invalidServer
=
"http://localhost:"
+
findFreePort
()
+
" "
;
String
anotherInvalidServer
=
"http://localhost:"
+
findFreePort
()
+
" "
;
MockMetaServerProvider
.
mock
(
Env
.
LPT
,
invalidServer
+
","
+
anotherInvalidServer
);
mockMetaServerAddress
(
Env
.
LPT
,
invalidServer
+
","
+
anotherInvalidServer
);
String
metaServer
=
PortalMetaDomainConsts
.
getDomain
(
Env
.
LPT
);
assertTrue
(
metaServer
.
equals
(
invalidServer
.
trim
())
||
metaServer
.
equals
(
anotherInvalidServer
.
trim
()));
}
public
static
class
MockMetaServerProvider
{
private
static
void
mock
(
Env
env
,
String
metaServerAddress
)
{
PortalMetaServerProvider
.
addMetaServerAddress
(
env
,
metaServerAddress
);
}
private
void
mockMetaServerAddress
(
Env
env
,
String
metaServerAddress
)
{
PortalMetaServerProvider
.
getInstance
().
mockMetaServerAddress
(
env
,
metaServerAddress
);
}
private
static
void
clear
()
{
PortalMetaServerProvider
.
clear
();
}
private
void
clear
()
{
PortalMetaServerProvider
.
getInstance
().
reset
();
}
}
\ No newline at end of file
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/environment/PortalMetaServerProviderTest.java
View file @
fba39307
...
...
@@ -8,55 +8,51 @@ import static org.junit.Assert.assertEquals;
public
class
PortalMetaServerProviderTest
{
/**
* may be the environments and meta server addresses
* have been clear, so we need to reload when start the every unit test
*/
@Before
public
void
reload
()
{
PortalMetaServerProvider
.
reloadAll
();
}
@After
public
void
tearDown
()
throws
Exception
{
System
.
clearProperty
(
"dev_meta"
);
}
@Test
public
void
testFromPropertyFile
()
{
assertEquals
(
"http://localhost:8080"
,
PortalMetaServerProvider
.
getMetaServerAddress
(
Env
.
LOCAL
));
assertEquals
(
"${dev_meta}"
,
PortalMetaServerProvider
.
getMetaServerAddress
(
Env
.
DEV
));
assertEquals
(
"${pro_meta}"
,
PortalMetaServerProvider
.
getMetaServerAddress
(
Env
.
PRO
));
}
/**
* testing the environment dynamic added from system property
*/
@Test
public
void
testDynamicEnvironmentFromSystemProperty
()
{
String
someDevMetaAddress
=
"someMetaAddress"
;
String
someFatMetaAddress
=
"someFatMetaAddress"
;
System
.
setProperty
(
"dev_meta"
,
someDevMetaAddress
);
System
.
setProperty
(
"fat_meta"
,
someFatMetaAddress
);
// reload above added
PortalMetaServerProvider
.
reloadAll
();
assertEquals
(
someDevMetaAddress
,
PortalMetaServerProvider
.
getMetaServerAddress
(
Env
.
DEV
));
assertEquals
(
someFatMetaAddress
,
PortalMetaServerProvider
.
getMetaServerAddress
(
Env
.
FAT
));
String
randomAddress
=
"randomAddress"
;
String
randomEnvironment
=
"randomEnvironment"
;
System
.
setProperty
(
randomEnvironment
+
"_meta"
,
randomAddress
);
// reload above added
PortalMetaServerProvider
.
reloadAll
();
assertEquals
(
randomAddress
,
PortalMetaServerProvider
.
getMetaServerAddress
(
Env
.
valueOf
(
randomEnvironment
)
)
);
// clear the property
System
.
clearProperty
(
randomEnvironment
+
"_meta"
);
}
private
PortalMetaServerProvider
portalMetaServerProvider
;
@Before
public
void
setUp
()
throws
Exception
{
portalMetaServerProvider
=
PortalMetaServerProvider
.
getInstance
();
}
@After
public
void
tearDown
()
throws
Exception
{
System
.
clearProperty
(
"dev_meta"
);
System
.
clearProperty
(
"fat_meta"
);
PortalMetaServerProvider
.
getInstance
().
reset
();
}
@Test
public
void
testFromPropertyFile
()
{
assertEquals
(
"http://localhost:8080"
,
portalMetaServerProvider
.
getMetaServerAddress
(
Env
.
LOCAL
));
assertEquals
(
"${dev_meta}"
,
portalMetaServerProvider
.
getMetaServerAddress
(
Env
.
DEV
));
assertEquals
(
"${pro_meta}"
,
portalMetaServerProvider
.
getMetaServerAddress
(
Env
.
PRO
));
}
/**
* testing the environment dynamic added from system property
*/
@Test
public
void
testDynamicEnvironmentFromSystemProperty
()
{
String
someDevMetaAddress
=
"someMetaAddress"
;
String
someFatMetaAddress
=
"someFatMetaAddress"
;
System
.
setProperty
(
"dev_meta"
,
someDevMetaAddress
);
System
.
setProperty
(
"fat_meta"
,
someFatMetaAddress
);
// reload above added
portalMetaServerProvider
.
reset
();
assertEquals
(
someDevMetaAddress
,
portalMetaServerProvider
.
getMetaServerAddress
(
Env
.
DEV
));
assertEquals
(
someFatMetaAddress
,
portalMetaServerProvider
.
getMetaServerAddress
(
Env
.
FAT
));
String
randomAddress
=
"randomAddress"
;
String
randomEnvironment
=
"randomEnvironment"
;
System
.
setProperty
(
randomEnvironment
+
"_meta"
,
randomAddress
);
// reload above added
portalMetaServerProvider
.
reset
();
assertEquals
(
randomAddress
,
portalMetaServerProvider
.
getMetaServerAddress
(
Env
.
valueOf
(
randomEnvironment
)));
// clear the property
System
.
clearProperty
(
randomEnvironment
+
"_meta"
);
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment