Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
superrain51
apollo
提交
330b501d
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,发现更多精彩内容 >>
提交
330b501d
编写于
8月 10, 2016
作者:
J
Jason Song
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add consumer audit ut
上级
f26c514b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
103 addition
and
2 deletion
+103
-2
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/util/ConsumerAuditUtil.java
...trip/framework/apollo/openapi/util/ConsumerAuditUtil.java
+8
-1
apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/util/ConsumerAuditUtilTest.java
.../framework/apollo/openapi/util/ConsumerAuditUtilTest.java
+93
-0
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/AllTests.java
...test/java/com/ctrip/framework/apollo/portal/AllTests.java
+2
-1
未找到文件。
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/util/ConsumerAuditUtil.java
浏览文件 @
330b501d
...
...
@@ -32,6 +32,9 @@ public class ConsumerAuditUtil implements InitializingBean {
private
BlockingQueue
<
ConsumerAudit
>
audits
=
Queues
.
newLinkedBlockingQueue
(
CONSUMER_AUDIT_MAX_SIZE
);
private
final
ExecutorService
auditExecutorService
;
private
final
AtomicBoolean
auditStopped
;
private
int
BATCH_SIZE
=
100
;
private
long
BATCH_TIMEOUT
=
5
;
private
TimeUnit
BATCH_TIMEUNIT
=
TimeUnit
.
SECONDS
;
@Autowired
private
ConsumerService
consumerService
;
...
...
@@ -66,7 +69,7 @@ public class ConsumerAuditUtil implements InitializingBean {
while
(!
auditStopped
.
get
()
&&
!
Thread
.
currentThread
().
isInterrupted
())
{
List
<
ConsumerAudit
>
toAudit
=
Lists
.
newArrayList
();
try
{
Queues
.
drain
(
audits
,
toAudit
,
100
,
5
,
TimeUnit
.
SECONDS
);
Queues
.
drain
(
audits
,
toAudit
,
BATCH_SIZE
,
BATCH_TIMEOUT
,
BATCH_TIMEUNIT
);
if
(!
toAudit
.
isEmpty
())
{
consumerService
.
createConsumerAudits
(
toAudit
);
}
...
...
@@ -76,4 +79,8 @@ public class ConsumerAuditUtil implements InitializingBean {
}
});
}
public
void
stopAudit
()
{
auditStopped
.
set
(
true
);
}
}
apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/util/ConsumerAuditUtilTest.java
0 → 100644
浏览文件 @
330b501d
package
com.ctrip.framework.apollo.openapi.util
;
import
com.google.common.util.concurrent.SettableFuture
;
import
com.ctrip.framework.apollo.openapi.entity.ConsumerAudit
;
import
com.ctrip.framework.apollo.openapi.service.ConsumerService
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.ArgumentCaptor
;
import
org.mockito.Mock
;
import
org.mockito.invocation.InvocationOnMock
;
import
org.mockito.runners.MockitoJUnitRunner
;
import
org.mockito.stubbing.Answer
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
java.util.List
;
import
java.util.Properties
;
import
java.util.concurrent.TimeUnit
;
import
javax.servlet.http.HttpServletRequest
;
import
static
org
.
junit
.
Assert
.*;
import
static
org
.
mockito
.
Matchers
.
anyCollectionOf
;
import
static
org
.
mockito
.
Mockito
.
doAnswer
;
import
static
org
.
mockito
.
Mockito
.
when
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@RunWith
(
MockitoJUnitRunner
.
class
)
public
class
ConsumerAuditUtilTest
{
private
ConsumerAuditUtil
consumerAuditUtil
;
@Mock
private
ConsumerService
consumerService
;
@Mock
private
HttpServletRequest
request
;
private
long
batchTimeout
=
50
;
private
TimeUnit
batchTimeUnit
=
TimeUnit
.
MILLISECONDS
;
@Before
public
void
setUp
()
throws
Exception
{
consumerAuditUtil
=
new
ConsumerAuditUtil
();
ReflectionTestUtils
.
setField
(
consumerAuditUtil
,
"consumerService"
,
consumerService
);
ReflectionTestUtils
.
setField
(
consumerAuditUtil
,
"BATCH_TIMEOUT"
,
batchTimeout
);
ReflectionTestUtils
.
setField
(
consumerAuditUtil
,
"BATCH_TIMEUNIT"
,
batchTimeUnit
);
consumerAuditUtil
.
afterPropertiesSet
();
}
@After
public
void
tearDown
()
throws
Exception
{
consumerAuditUtil
.
stopAudit
();
}
@Test
public
void
audit
()
throws
Exception
{
long
someConsumerId
=
1
;
String
someUri
=
"someUri"
;
String
someQuery
=
"someQuery"
;
String
someMethod
=
"someMethod"
;
when
(
request
.
getRequestURI
()).
thenReturn
(
someUri
);
when
(
request
.
getQueryString
()).
thenReturn
(
someQuery
);
when
(
request
.
getMethod
()).
thenReturn
(
someMethod
);
SettableFuture
<
List
<
ConsumerAudit
>>
result
=
SettableFuture
.
create
();
doAnswer
(
new
Answer
<
Void
>()
{
@Override
public
Void
answer
(
InvocationOnMock
invocation
)
throws
Throwable
{
Object
[]
args
=
invocation
.
getArguments
();
result
.
set
((
List
<
ConsumerAudit
>)
args
[
0
]);
return
null
;
}
}).
when
(
consumerService
).
createConsumerAudits
(
anyCollectionOf
(
ConsumerAudit
.
class
));
consumerAuditUtil
.
audit
(
request
,
someConsumerId
);
List
<
ConsumerAudit
>
audits
=
result
.
get
(
batchTimeout
*
5
,
batchTimeUnit
);
assertEquals
(
1
,
audits
.
size
());
ConsumerAudit
audit
=
audits
.
get
(
0
);
assertEquals
(
String
.
format
(
"%s?%s"
,
someUri
,
someQuery
),
audit
.
getUri
());
assertEquals
(
someMethod
,
audit
.
getMethod
());
assertEquals
(
someConsumerId
,
audit
.
getConsumerId
());
}
}
\ No newline at end of file
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/AllTests.java
浏览文件 @
330b501d
...
...
@@ -4,6 +4,7 @@ package com.ctrip.framework.apollo.portal;
import
com.ctrip.framework.apollo.openapi.filter.ConsumerAuthenticationFilterTest
;
import
com.ctrip.framework.apollo.openapi.service.ConsumerRolePermissionServiceTest
;
import
com.ctrip.framework.apollo.openapi.service.ConsumerServiceTest
;
import
com.ctrip.framework.apollo.openapi.util.ConsumerAuditUtilTest
;
import
com.ctrip.framework.apollo.openapi.util.ConsumerAuthUtilTest
;
import
com.ctrip.framework.apollo.portal.controller.ConsumerControllerTest
;
import
com.ctrip.framework.apollo.portal.service.AppNamespaceServiceTest
;
...
...
@@ -25,7 +26,7 @@ import org.junit.runners.Suite.SuiteClasses;
AppNamespaceServiceTest
.
class
,
RoleInitializationServiceTest
.
class
,
FileTextResolverTest
.
class
,
RetryableRestTemplateTest
.
class
,
ConsumerRolePermissionServiceTest
.
class
,
ConsumerAuthenticationFilterTest
.
class
,
ConsumerAuthUtilTest
.
class
,
ConsumerServiceTest
.
class
,
ConsumerControllerTest
.
class
ConsumerControllerTest
.
class
,
ConsumerAuditUtilTest
.
class
})
public
class
AllTests
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录