Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
apollo
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
openSource
apollo
Commits
ee7148f1
Commit
ee7148f1
authored
Aug 24, 2016
by
张乐
Committed by
GitHub
Aug 24, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #390 from nobodyiam/admin-instance-controller-merge
Add instance related controller to admin service
parents
e1589efa
ea2770fa
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
493 additions
and
11 deletions
+493
-11
InstanceConfigController.java
...llo/adminservice/controller/InstanceConfigController.java
+93
-0
AllTests.java
...ava/com/ctrip/framework/apollo/adminservice/AllTests.java
+10
-6
InstanceConfigControllerTest.java
...adminservice/controller/InstanceConfigControllerTest.java
+165
-0
InstanceConfigRepository.java
...ework/apollo/biz/repository/InstanceConfigRepository.java
+9
-1
InstanceService.java
...m/ctrip/framework/apollo/biz/service/InstanceService.java
+38
-0
InstanceServiceTest.java
...rip/framework/apollo/biz/service/InstanceServiceTest.java
+72
-4
InstanceConfigDTO.java
.../ctrip/framework/apollo/common/dto/InstanceConfigDTO.java
+27
-0
InstanceDTO.java
...va/com/ctrip/framework/apollo/common/dto/InstanceDTO.java
+79
-0
No files found.
apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java
0 → 100644
View file @
ee7148f1
package
com
.
ctrip
.
framework
.
apollo
.
adminservice
.
controller
;
import
com.ctrip.framework.apollo.biz.entity.Instance
;
import
com.ctrip.framework.apollo.biz.entity.InstanceConfig
;
import
com.ctrip.framework.apollo.biz.entity.Release
;
import
com.ctrip.framework.apollo.biz.service.InstanceService
;
import
com.ctrip.framework.apollo.biz.service.ReleaseService
;
import
com.ctrip.framework.apollo.common.dto.InstanceConfigDTO
;
import
com.ctrip.framework.apollo.common.dto.InstanceDTO
;
import
com.ctrip.framework.apollo.common.dto.ReleaseDTO
;
import
com.ctrip.framework.apollo.common.exception.NotFoundException
;
import
com.ctrip.framework.apollo.common.utils.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@RestController
@RequestMapping
(
path
=
"/instances"
)
public
class
InstanceConfigController
{
@Autowired
private
ReleaseService
releaseService
;
@Autowired
private
InstanceService
instanceService
;
@RequestMapping
(
value
=
"/by-release"
,
method
=
RequestMethod
.
GET
)
public
List
<
InstanceDTO
>
getByRelease
(
@RequestParam
(
"releaseId"
)
long
releaseId
,
@RequestParam
(
value
=
"withReleaseDetail"
,
defaultValue
=
"false"
)
boolean
withReleaseDetail
,
Pageable
pageable
)
{
Release
release
=
releaseService
.
findOne
(
releaseId
);
if
(
release
==
null
)
{
throw
new
NotFoundException
(
String
.
format
(
"release not found for %s"
,
releaseId
));
}
List
<
InstanceConfig
>
instanceConfigs
=
instanceService
.
findActiveInstanceConfigsByReleaseKey
(
release
.
getReleaseKey
(),
pageable
);
if
(
instanceConfigs
.
isEmpty
())
{
return
Collections
.
emptyList
();
}
Map
<
Long
,
List
<
InstanceConfig
>>
instanceConfigMap
=
instanceConfigs
.
stream
().
collect
(
Collectors
.
groupingBy
(
InstanceConfig:
:
getInstanceId
));
List
<
Instance
>
instances
=
instanceService
.
findInstancesByIds
(
instanceConfigMap
.
keySet
());
if
(
instances
.
isEmpty
())
{
return
Collections
.
emptyList
();
}
return
instances
.
stream
().
map
(
transformToInstanceConfigDto
).
peek
(
instanceDTO
->
{
List
<
InstanceConfig
>
instanceConfigList
=
instanceConfigMap
.
get
(
instanceDTO
.
getId
());
ReleaseDTO
releaseDTO
=
withReleaseDetail
?
BeanUtils
.
transfrom
(
ReleaseDTO
.
class
,
release
)
:
null
;
instanceDTO
.
setConfigs
(
instanceConfigList
.
stream
()
.
map
(
instanceConfig
->
transformToInstanceConfigDto
(
instanceConfig
,
releaseDTO
))
.
collect
(
Collectors
.
toList
()));
}).
collect
(
Collectors
.
toList
());
}
private
InstanceConfigDTO
transformToInstanceConfigDto
(
InstanceConfig
instanceConfig
,
ReleaseDTO
releaseDTO
)
{
InstanceConfigDTO
instanceConfigDTO
=
new
InstanceConfigDTO
();
instanceConfigDTO
.
setDataChangeLastModifiedTime
(
instanceConfig
.
getDataChangeLastModifiedTime
());
instanceConfigDTO
.
setRelease
(
releaseDTO
);
return
instanceConfigDTO
;
}
private
static
Function
<
Instance
,
InstanceDTO
>
transformToInstanceConfigDto
=
instance
->
{
InstanceDTO
instanceDTO
=
new
InstanceDTO
();
instanceDTO
.
setId
(
instance
.
getId
());
instanceDTO
.
setAppId
(
instance
.
getAppId
());
instanceDTO
.
setClusterName
(
instance
.
getClusterName
());
instanceDTO
.
setDataCenter
(
instance
.
getDataCenter
());
instanceDTO
.
setIp
(
instance
.
getIp
());
instanceDTO
.
setDataChangeCreatedTime
(
instance
.
getDataChangeCreatedTime
());
return
instanceDTO
;
};
}
apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/AllTests.java
View file @
ee7148f1
package
com
.
ctrip
.
framework
.
apollo
.
adminservice
;
package
com
.
ctrip
.
framework
.
apollo
.
adminservice
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.Suite
;
import
org.junit.runners.Suite.SuiteClasses
;
import
com.ctrip.framework.apollo.adminservice.aop.NamespaceLockTest
;
import
com.ctrip.framework.apollo.adminservice.aop.NamespaceLockTest
;
import
com.ctrip.framework.apollo.adminservice.controller.AppControllerTest
;
import
com.ctrip.framework.apollo.adminservice.controller.AppControllerTest
;
import
com.ctrip.framework.apollo.adminservice.controller.ControllerExceptionTest
;
import
com.ctrip.framework.apollo.adminservice.controller.ControllerExceptionTest
;
import
com.ctrip.framework.apollo.adminservice.controller.ControllerIntegrationExceptionTest
;
import
com.ctrip.framework.apollo.adminservice.controller.ControllerIntegrationExceptionTest
;
import
com.ctrip.framework.apollo.adminservice.controller.InstanceConfigControllerTest
;
import
com.ctrip.framework.apollo.adminservice.controller.ItemSetControllerTest
;
import
com.ctrip.framework.apollo.adminservice.controller.ItemSetControllerTest
;
import
com.ctrip.framework.apollo.adminservice.controller.ReleaseControllerTest
;
import
com.ctrip.framework.apollo.adminservice.controller.ReleaseControllerTest
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.Suite
;
import
org.junit.runners.Suite.SuiteClasses
;
@RunWith
(
Suite
.
class
)
@RunWith
(
Suite
.
class
)
@SuiteClasses
({
AppControllerTest
.
class
,
ReleaseControllerTest
.
class
,
ItemSetControllerTest
.
class
,
@SuiteClasses
({
ControllerExceptionTest
.
class
,
ControllerIntegrationExceptionTest
.
class
,
NamespaceLockTest
.
class
})
AppControllerTest
.
class
,
ReleaseControllerTest
.
class
,
ItemSetControllerTest
.
class
,
ControllerExceptionTest
.
class
,
ControllerIntegrationExceptionTest
.
class
,
NamespaceLockTest
.
class
,
InstanceConfigControllerTest
.
class
})
public
class
AllTests
{
public
class
AllTests
{
}
}
apollo-adminservice/src/test/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigControllerTest.java
0 → 100644
View file @
ee7148f1
package
com
.
ctrip
.
framework
.
apollo
.
adminservice
.
controller
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Sets
;
import
com.ctrip.framework.apollo.biz.entity.Instance
;
import
com.ctrip.framework.apollo.biz.entity.InstanceConfig
;
import
com.ctrip.framework.apollo.biz.entity.Release
;
import
com.ctrip.framework.apollo.biz.service.InstanceService
;
import
com.ctrip.framework.apollo.biz.service.ReleaseService
;
import
com.ctrip.framework.apollo.common.dto.InstanceDTO
;
import
com.ctrip.framework.apollo.common.exception.NotFoundException
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.Mock
;
import
org.mockito.runners.MockitoJUnitRunner
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
when
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@RunWith
(
MockitoJUnitRunner
.
class
)
public
class
InstanceConfigControllerTest
{
private
InstanceConfigController
instanceConfigController
;
@Mock
private
ReleaseService
releaseService
;
@Mock
private
InstanceService
instanceService
;
@Mock
private
Pageable
pageable
;
@Before
public
void
setUp
()
throws
Exception
{
instanceConfigController
=
new
InstanceConfigController
();
ReflectionTestUtils
.
setField
(
instanceConfigController
,
"releaseService"
,
releaseService
);
ReflectionTestUtils
.
setField
(
instanceConfigController
,
"instanceService"
,
instanceService
);
}
@Test
public
void
getByRelease
()
throws
Exception
{
long
someReleaseId
=
1
;
long
someInstanceId
=
1
;
long
anotherInstanceId
=
2
;
String
someReleaseKey
=
"someKey"
;
Release
someRelease
=
new
Release
();
someRelease
.
setReleaseKey
(
someReleaseKey
);
String
someAppId
=
"someAppId"
;
String
anotherAppId
=
"anotherAppId"
;
String
someCluster
=
"someCluster"
;
String
someDataCenter
=
"someDC"
;
String
someConfigAppId
=
"someConfigAppId"
;
String
someConfigNamespace
=
"someNamespace"
;
String
someIp
=
"someIp"
;
boolean
withReleaseDetail
=
true
;
when
(
releaseService
.
findOne
(
someReleaseId
)).
thenReturn
(
someRelease
);
InstanceConfig
someInstanceConfig
=
assembleInstanceConfig
(
someInstanceId
,
someConfigAppId
,
someConfigNamespace
,
someReleaseKey
);
InstanceConfig
anotherInstanceConfig
=
assembleInstanceConfig
(
anotherInstanceId
,
someConfigAppId
,
someConfigNamespace
,
someReleaseKey
);
List
<
InstanceConfig
>
instanceConfigs
=
Lists
.
newArrayList
(
someInstanceConfig
,
anotherInstanceConfig
);
when
(
instanceService
.
findActiveInstanceConfigsByReleaseKey
(
someReleaseKey
,
pageable
))
.
thenReturn
(
instanceConfigs
);
Instance
someInstance
=
assembleInstance
(
someInstanceId
,
someAppId
,
someCluster
,
someDataCenter
,
someIp
);
Instance
anotherInstance
=
assembleInstance
(
anotherInstanceId
,
anotherAppId
,
someCluster
,
someDataCenter
,
someIp
);
List
<
Instance
>
instances
=
Lists
.
newArrayList
(
someInstance
,
anotherInstance
);
Set
<
Long
>
instanceIds
=
Sets
.
newHashSet
(
someInstanceId
,
anotherInstanceId
);
when
(
instanceService
.
findInstancesByIds
(
instanceIds
))
.
thenReturn
(
instances
);
List
<
InstanceDTO
>
result
=
instanceConfigController
.
getByRelease
(
someReleaseId
,
withReleaseDetail
,
pageable
);
assertEquals
(
2
,
result
.
size
());
InstanceDTO
someInstanceDto
=
null
;
InstanceDTO
anotherInstanceDto
=
null
;
for
(
InstanceDTO
instanceDTO
:
result
)
{
if
(
instanceDTO
.
getId
()
==
someInstanceId
)
{
someInstanceDto
=
instanceDTO
;
}
else
if
(
instanceDTO
.
getId
()
==
anotherInstanceId
)
{
anotherInstanceDto
=
instanceDTO
;
}
}
verifyInstance
(
someInstance
,
someInstanceDto
);
verifyInstance
(
anotherInstance
,
anotherInstanceDto
);
assertEquals
(
1
,
someInstanceDto
.
getConfigs
().
size
());
assertEquals
(
someReleaseKey
,
someInstanceDto
.
getConfigs
().
get
(
0
).
getRelease
().
getReleaseKey
());
assertEquals
(
someInstanceConfig
.
getDataChangeLastModifiedTime
(),
someInstanceDto
.
getConfigs
()
.
get
(
0
).
getDataChangeLastModifiedTime
());
assertEquals
(
1
,
anotherInstanceDto
.
getConfigs
().
size
());
assertEquals
(
someReleaseKey
,
anotherInstanceDto
.
getConfigs
().
get
(
0
).
getRelease
().
getReleaseKey
());
assertEquals
(
anotherInstanceConfig
.
getDataChangeLastModifiedTime
(),
anotherInstanceDto
.
getConfigs
()
.
get
(
0
).
getDataChangeLastModifiedTime
());
}
@Test
(
expected
=
NotFoundException
.
class
)
public
void
testGetByReleaseWhenReleaseIsNotFound
()
throws
Exception
{
long
someReleaseIdNotExists
=
1
;
boolean
withReleaseDetail
=
false
;
when
(
releaseService
.
findOne
(
someReleaseIdNotExists
)).
thenReturn
(
null
);
instanceConfigController
.
getByRelease
(
someReleaseIdNotExists
,
withReleaseDetail
,
pageable
);
}
private
void
verifyInstance
(
Instance
instance
,
InstanceDTO
instanceDTO
)
{
assertEquals
(
instance
.
getId
(),
instanceDTO
.
getId
());
assertEquals
(
instance
.
getAppId
(),
instanceDTO
.
getAppId
());
assertEquals
(
instance
.
getClusterName
(),
instanceDTO
.
getClusterName
());
assertEquals
(
instance
.
getDataCenter
(),
instanceDTO
.
getDataCenter
());
assertEquals
(
instance
.
getIp
(),
instanceDTO
.
getIp
());
assertEquals
(
instance
.
getDataChangeCreatedTime
(),
instanceDTO
.
getDataChangeCreatedTime
());
}
private
Instance
assembleInstance
(
long
instanceId
,
String
appId
,
String
clusterName
,
String
dataCenter
,
String
ip
)
{
Instance
instance
=
new
Instance
();
instance
.
setId
(
instanceId
);
instance
.
setAppId
(
appId
);
instance
.
setIp
(
ip
);
instance
.
setClusterName
(
clusterName
);
instance
.
setDataCenter
(
dataCenter
);
instance
.
setDataChangeCreatedTime
(
new
Date
());
return
instance
;
}
private
InstanceConfig
assembleInstanceConfig
(
long
instanceId
,
String
configAppId
,
String
configNamespaceName
,
String
releaseKey
)
{
InstanceConfig
instanceConfig
=
new
InstanceConfig
();
instanceConfig
.
setInstanceId
(
instanceId
);
instanceConfig
.
setConfigAppId
(
configAppId
);
instanceConfig
.
setConfigNamespaceName
(
configNamespaceName
);
instanceConfig
.
setReleaseKey
(
releaseKey
);
instanceConfig
.
setDataChangeLastModifiedTime
(
new
Date
());
return
instanceConfig
;
}
}
\ No newline at end of file
apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/repository/InstanceConfigRepository.java
View file @
ee7148f1
...
@@ -2,8 +2,16 @@ package com.ctrip.framework.apollo.biz.repository;
...
@@ -2,8 +2,16 @@ package com.ctrip.framework.apollo.biz.repository;
import
com.ctrip.framework.apollo.biz.entity.InstanceConfig
;
import
com.ctrip.framework.apollo.biz.entity.InstanceConfig
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.repository.PagingAndSortingRepository
;
import
org.springframework.data.repository.PagingAndSortingRepository
;
import
java.util.Date
;
import
java.util.List
;
public
interface
InstanceConfigRepository
extends
PagingAndSortingRepository
<
InstanceConfig
,
Long
>
{
public
interface
InstanceConfigRepository
extends
PagingAndSortingRepository
<
InstanceConfig
,
Long
>
{
InstanceConfig
findByInstanceIdAndConfigAppIdAndConfigNamespaceName
(
long
instanceId
,
String
configAppId
,
String
configNamespaceName
);
InstanceConfig
findByInstanceIdAndConfigAppIdAndConfigNamespaceName
(
long
instanceId
,
String
configAppId
,
String
configNamespaceName
);
List
<
InstanceConfig
>
findByReleaseKeyAndDataChangeLastModifiedTimeAfter
(
String
releaseKey
,
Date
validDate
,
Pageable
pageable
);
}
}
apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/InstanceService.java
View file @
ee7148f1
package
com
.
ctrip
.
framework
.
apollo
.
biz
.
service
;
package
com
.
ctrip
.
framework
.
apollo
.
biz
.
service
;
import
com.google.common.base.Preconditions
;
import
com.google.common.base.Preconditions
;
import
com.google.common.collect.Lists
;
import
com.ctrip.framework.apollo.biz.entity.Instance
;
import
com.ctrip.framework.apollo.biz.entity.Instance
;
import
com.ctrip.framework.apollo.biz.entity.InstanceConfig
;
import
com.ctrip.framework.apollo.biz.entity.InstanceConfig
;
...
@@ -8,9 +9,16 @@ import com.ctrip.framework.apollo.biz.repository.InstanceConfigRepository;
...
@@ -8,9 +9,16 @@ import com.ctrip.framework.apollo.biz.repository.InstanceConfigRepository;
import
com.ctrip.framework.apollo.biz.repository.InstanceRepository
;
import
com.ctrip.framework.apollo.biz.repository.InstanceRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Calendar
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
/**
/**
* @author Jason Song(song_s@ctrip.com)
* @author Jason Song(song_s@ctrip.com)
*/
*/
...
@@ -27,6 +35,14 @@ public class InstanceService {
...
@@ -27,6 +35,14 @@ public class InstanceService {
dataCenter
,
ip
);
dataCenter
,
ip
);
}
}
public
List
<
Instance
>
findInstancesByIds
(
Set
<
Long
>
instanceIds
)
{
Iterable
<
Instance
>
instances
=
instanceRepository
.
findAll
(
instanceIds
);
if
(
instances
==
null
)
{
return
Collections
.
emptyList
();
}
return
Lists
.
newArrayList
(
instances
);
}
@Transactional
@Transactional
public
Instance
createInstance
(
Instance
instance
)
{
public
Instance
createInstance
(
Instance
instance
)
{
instance
.
setId
(
0
);
//protection
instance
.
setId
(
0
);
//protection
...
@@ -40,6 +56,28 @@ public class InstanceService {
...
@@ -40,6 +56,28 @@ public class InstanceService {
instanceId
,
configAppId
,
configNamespaceName
);
instanceId
,
configAppId
,
configNamespaceName
);
}
}
public
List
<
InstanceConfig
>
findActiveInstanceConfigsByReleaseKey
(
String
releaseKey
,
Pageable
pageable
)
{
List
<
InstanceConfig
>
instanceConfigs
=
instanceConfigRepository
.
findByReleaseKeyAndDataChangeLastModifiedTimeAfter
(
releaseKey
,
getValidInstanceConfigDate
(),
pageable
);
if
(
instanceConfigs
==
null
)
{
return
Collections
.
emptyList
();
}
return
instanceConfigs
;
}
/**
* Currently the instance config is expired by 1 day, add one more hour to avoid possible time
* difference
*/
private
Date
getValidInstanceConfigDate
()
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
add
(
Calendar
.
DATE
,
-
1
);
cal
.
add
(
Calendar
.
HOUR
,
-
1
);
return
cal
.
getTime
();
}
@Transactional
@Transactional
public
InstanceConfig
createInstanceConfig
(
InstanceConfig
instanceConfig
)
{
public
InstanceConfig
createInstanceConfig
(
InstanceConfig
instanceConfig
)
{
instanceConfig
.
setId
(
0
);
//protection
instanceConfig
.
setId
(
0
);
//protection
...
...
apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/service/InstanceServiceTest.java
View file @
ee7148f1
package
com
.
ctrip
.
framework
.
apollo
.
biz
.
service
;
package
com
.
ctrip
.
framework
.
apollo
.
biz
.
service
;
import
com.google.common.collect.Sets
;
import
com.ctrip.framework.apollo.biz.AbstractIntegrationTest
;
import
com.ctrip.framework.apollo.biz.AbstractIntegrationTest
;
import
com.ctrip.framework.apollo.biz.entity.Instance
;
import
com.ctrip.framework.apollo.biz.entity.Instance
;
import
com.ctrip.framework.apollo.biz.entity.InstanceConfig
;
import
com.ctrip.framework.apollo.biz.entity.InstanceConfig
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.test.annotation.Rollback
;
import
org.springframework.test.annotation.Rollback
;
import
static
org
.
junit
.
Assert
.*;
import
java.util.Arrays
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertNotEquals
;
import
static
org
.
junit
.
Assert
.
assertNull
;
/**
/**
* @author Jason Song(song_s@ctrip.com)
* @author Jason Song(song_s@ctrip.com)
...
@@ -19,7 +32,7 @@ public class InstanceServiceTest extends AbstractIntegrationTest {
...
@@ -19,7 +32,7 @@ public class InstanceServiceTest extends AbstractIntegrationTest {
@Test
@Test
@Rollback
@Rollback
public
void
testInstance
()
throws
Exception
{
public
void
test
CreateAndFind
Instance
()
throws
Exception
{
String
someAppId
=
"someAppId"
;
String
someAppId
=
"someAppId"
;
String
someClusterName
=
"someClusterName"
;
String
someClusterName
=
"someClusterName"
;
String
someDataCenter
=
"someDataCenter"
;
String
someDataCenter
=
"someDataCenter"
;
...
@@ -41,7 +54,29 @@ public class InstanceServiceTest extends AbstractIntegrationTest {
...
@@ -41,7 +54,29 @@ public class InstanceServiceTest extends AbstractIntegrationTest {
@Test
@Test
@Rollback
@Rollback
public
void
testInstanceConfig
()
throws
Exception
{
public
void
testFindInstancesByIds
()
throws
Exception
{
String
someAppId
=
"someAppId"
;
String
someClusterName
=
"someClusterName"
;
String
someDataCenter
=
"someDataCenter"
;
String
someIp
=
"someIp"
;
String
anotherIp
=
"anotherIp"
;
Instance
someInstance
=
instanceService
.
createInstance
(
assembleInstance
(
someAppId
,
someClusterName
,
someDataCenter
,
someIp
));
Instance
anotherInstance
=
instanceService
.
createInstance
(
assembleInstance
(
someAppId
,
someClusterName
,
someDataCenter
,
anotherIp
));
List
<
Instance
>
instances
=
instanceService
.
findInstancesByIds
(
Sets
.
newHashSet
(
someInstance
.
getId
(),
anotherInstance
.
getId
()));
Set
<
String
>
ips
=
instances
.
stream
().
map
(
Instance:
:
getIp
).
collect
(
Collectors
.
toSet
());
assertEquals
(
2
,
instances
.
size
());
assertEquals
(
Sets
.
newHashSet
(
someIp
,
anotherIp
),
ips
);
}
@Test
@Rollback
public
void
testCreateAndFindInstanceConfig
()
throws
Exception
{
long
someInstanceId
=
1
;
long
someInstanceId
=
1
;
String
someConfigAppId
=
"someConfigAppId"
;
String
someConfigAppId
=
"someConfigAppId"
;
String
someConfigNamespaceName
=
"someConfigNamespaceName"
;
String
someConfigNamespaceName
=
"someConfigNamespaceName"
;
...
@@ -73,7 +108,40 @@ public class InstanceServiceTest extends AbstractIntegrationTest {
...
@@ -73,7 +108,40 @@ public class InstanceServiceTest extends AbstractIntegrationTest {
assertEquals
(
anotherReleaseKey
,
updated
.
getReleaseKey
());
assertEquals
(
anotherReleaseKey
,
updated
.
getReleaseKey
());
}
}
private
Instance
assembleInstance
(
String
appId
,
String
clusterName
,
String
dataCenter
,
String
ip
)
{
@Test
@Rollback
public
void
testFindActiveInstanceConfigs
()
throws
Exception
{
long
someInstanceId
=
1
;
long
anotherInstanceId
=
2
;
String
someConfigAppId
=
"someConfigAppId"
;
String
someConfigNamespaceName
=
"someConfigNamespaceName"
;
String
someReleaseKey
=
"someReleaseKey"
;
Date
someValidDate
=
new
Date
();
Pageable
pageable
=
new
PageRequest
(
0
,
10
);
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
add
(
Calendar
.
DATE
,
-
2
);
Date
someInvalidDate
=
calendar
.
getTime
();
InstanceConfig
someValidConfig
=
assembleInstanceConfig
(
someInstanceId
,
someConfigAppId
,
someConfigNamespaceName
,
someReleaseKey
);
someValidConfig
.
setDataChangeCreatedTime
(
someValidDate
);
InstanceConfig
someInvalidConfig
=
assembleInstanceConfig
(
anotherInstanceId
,
someConfigAppId
,
someConfigNamespaceName
,
someReleaseKey
);
someInvalidConfig
.
setDataChangeCreatedTime
(
someInvalidDate
);
instanceService
.
createInstanceConfig
(
someValidConfig
);
instanceService
.
createInstanceConfig
(
someInvalidConfig
);
List
<
InstanceConfig
>
validInstanceConfigs
=
instanceService
.
findActiveInstanceConfigsByReleaseKey
(
someReleaseKey
,
pageable
);
assertEquals
(
1
,
validInstanceConfigs
.
size
());
assertEquals
(
someInstanceId
,
validInstanceConfigs
.
get
(
0
).
getInstanceId
());
}
private
Instance
assembleInstance
(
String
appId
,
String
clusterName
,
String
dataCenter
,
String
ip
)
{
Instance
instance
=
new
Instance
();
Instance
instance
=
new
Instance
();
instance
.
setAppId
(
appId
);
instance
.
setAppId
(
appId
);
instance
.
setIp
(
ip
);
instance
.
setIp
(
ip
);
...
...
apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/InstanceConfigDTO.java
0 → 100644
View file @
ee7148f1
package
com
.
ctrip
.
framework
.
apollo
.
common
.
dto
;
import
java.util.Date
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
public
class
InstanceConfigDTO
{
private
ReleaseDTO
release
;
private
Date
dataChangeLastModifiedTime
;
public
ReleaseDTO
getRelease
()
{
return
release
;
}
public
void
setRelease
(
ReleaseDTO
release
)
{
this
.
release
=
release
;
}
public
Date
getDataChangeLastModifiedTime
()
{
return
dataChangeLastModifiedTime
;
}
public
void
setDataChangeLastModifiedTime
(
Date
dataChangeLastModifiedTime
)
{
this
.
dataChangeLastModifiedTime
=
dataChangeLastModifiedTime
;
}
}
apollo-common/src/main/java/com/ctrip/framework/apollo/common/dto/InstanceDTO.java
0 → 100644
View file @
ee7148f1
package
com
.
ctrip
.
framework
.
apollo
.
common
.
dto
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
public
class
InstanceDTO
{
private
long
id
;
private
String
appId
;
private
String
clusterName
;
private
String
dataCenter
;
private
String
ip
;
private
List
<
InstanceConfigDTO
>
configs
;
private
Date
dataChangeCreatedTime
;
public
long
getId
()
{
return
id
;
}
public
void
setId
(
long
id
)
{
this
.
id
=
id
;
}
public
String
getAppId
()
{
return
appId
;
}
public
void
setAppId
(
String
appId
)
{
this
.
appId
=
appId
;
}
public
String
getClusterName
()
{
return
clusterName
;
}
public
void
setClusterName
(
String
clusterName
)
{
this
.
clusterName
=
clusterName
;
}
public
String
getDataCenter
()
{
return
dataCenter
;
}
public
void
setDataCenter
(
String
dataCenter
)
{
this
.
dataCenter
=
dataCenter
;
}
public
String
getIp
()
{
return
ip
;
}
public
void
setIp
(
String
ip
)
{
this
.
ip
=
ip
;
}
public
List
<
InstanceConfigDTO
>
getConfigs
()
{
return
configs
;
}
public
void
setConfigs
(
List
<
InstanceConfigDTO
>
configs
)
{
this
.
configs
=
configs
;
}
public
Date
getDataChangeCreatedTime
()
{
return
dataChangeCreatedTime
;
}
public
void
setDataChangeCreatedTime
(
Date
dataChangeCreatedTime
)
{
this
.
dataChangeCreatedTime
=
dataChangeCreatedTime
;
}
}
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