Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿啄debugIT
transmittable-thread-local
提交
16ffb128
T
transmittable-thread-local
项目概览
阿啄debugIT
/
transmittable-thread-local
与 Fork 源项目一致
从无法访问的项目Fork
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
transmittable-thread-local
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
16ffb128
编写于
9月 24, 2018
作者:
oldratlee
🔥
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
clean test code
上级
ab001d77
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
117 addition
and
139 deletion
+117
-139
src/test/java/com/alibaba/Utils.kt
src/test/java/com/alibaba/Utils.kt
+23
-36
src/test/java/com/alibaba/demo/agent/AgentDemo.kt
src/test/java/com/alibaba/demo/agent/AgentDemo.kt
+2
-1
src/test/java/com/alibaba/demo/distributed_tracer/weakref/DistributedTracerUseDemo_WeakReferenceInsteadOfRefCounter.kt
...tributedTracerUseDemo_WeakReferenceInsteadOfRefCounter.kt
+8
-8
src/test/java/com/alibaba/demo/forkjoinpool/Demo.kt
src/test/java/com/alibaba/demo/forkjoinpool/Demo.kt
+1
-1
src/test/java/com/alibaba/third_part_lib_test/ForkJoinPoolTest.kt
.../java/com/alibaba/third_part_lib_test/ForkJoinPoolTest.kt
+1
-1
src/test/java/com/alibaba/ttl/TtlCallableTest.kt
src/test/java/com/alibaba/ttl/TtlCallableTest.kt
+1
-5
src/test/java/com/alibaba/ttl/TtlRunnableTest.kt
src/test/java/com/alibaba/ttl/TtlRunnableTest.kt
+1
-5
src/test/java/com/alibaba/ttl/forkjoin/recursive_action/TtlRecursiveActionTest.kt
...a/ttl/forkjoin/recursive_action/TtlRecursiveActionTest.kt
+17
-14
src/test/java/com/alibaba/ttl/forkjoin/recursive_task/TtlRecursiveTaskTest.kt
...ibaba/ttl/forkjoin/recursive_task/TtlRecursiveTaskTest.kt
+18
-14
src/test/java/com/alibaba/ttl/testmodel/DeepCopyFooTransmittableThreadLocal.kt
...baba/ttl/testmodel/DeepCopyFooTransmittableThreadLocal.kt
+1
-3
src/test/java/com/alibaba/ttl/threadpool/ScheduledExecutorServiceTtlWrapperTest.kt
.../ttl/threadpool/ScheduledExecutorServiceTtlWrapperTest.kt
+19
-22
src/test/java/com/alibaba/ttl/threadpool/agent/check/AgentCheckMain.kt
.../com/alibaba/ttl/threadpool/agent/check/AgentCheckMain.kt
+3
-10
src/test/java/com/alibaba/ttl/threadpool/agent/check/forkjoin/ForkJoinTaskClassAgentCheck.kt
...dpool/agent/check/forkjoin/ForkJoinTaskClassAgentCheck.kt
+20
-14
src/test/java/com/alibaba/ttl/user_api_test/TransmittableThreadLocal_Transmitter_UserTest.kt
...api_test/TransmittableThreadLocal_Transmitter_UserTest.kt
+2
-5
未找到文件。
src/test/java/com/alibaba/Utils.kt
浏览文件 @
16ffb128
...
...
@@ -6,7 +6,6 @@ import com.alibaba.ttl.TransmittableThreadLocal
import
org.junit.Assert.assertEquals
import
org.junit.Assert.assertNull
import
java.lang.Thread.sleep
import
java.util.*
import
java.util.concurrent.ConcurrentHashMap
import
java.util.concurrent.ConcurrentMap
import
java.util.concurrent.ExecutorService
...
...
@@ -107,7 +106,7 @@ fun <T> printTtlInstances(ttlInstances: TtlInstances<T>, title: String = "") {
val
headList
=
if
(
title
.
isBlank
())
emptyList
()
else
listOf
(
"## $title [${Thread.currentThread().name}] ##"
)
val
valueString
=
ttlInstances
.
filter
{
(
_
,
v
)
->
v
.
get
()
!=
null
}
val
valueString
=
ttlInstances
.
filter
Values
{
it
.
get
()
!=
null
}
.
map
{
(
k
,
v
)
->
"$k: ${v.get()}"
}
.
joinToString
()
val
output
=
(
headList
+
valueString
+
"^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^"
)
...
...
@@ -124,51 +123,39 @@ fun <T> printTtlInstances(ttlInstances: TtlInstances<T>, title: String = "") {
typealias
TtlValues
<
T
>
=
Map
<
String
,
T
>
fun
<
T
>
copyTtlValues
(
ttlInstances
:
TtlInstances
<
T
>):
TtlValues
<
T
>
=
ttlInstances
.
filter
{
(
_
,
v
)
->
v
.
get
()
!=
null
}.
map
{
(
k
,
v
)
->
Pair
(
k
,
v
.
get
())
}.
toMap
()
ttlInstances
.
filterValues
{
it
.
get
()
!=
null
}
.
mapValues
{
(
_
,
v
)
->
v
.
get
()
}
fun
<
T
>
assertTtlValues
(
copied
:
TtlValues
<
T
>,
vararg
asserts
:
String
?)
{
val
message
=
"Assert Fail:\ncopyTtlValues: $copied\n asserts: ${Arrays.toString(asserts)}"
if
(
asserts
.
size
%
2
!=
0
)
{
throw
IllegalStateException
(
"should even count! $message"
)
}
assertEquals
(
"assertTtlValues size not equals! $message"
,
(
asserts
.
size
/
2
).
toLong
(),
copied
.
size
.
toLong
())
var
i
=
0
while
(
i
<
asserts
.
size
)
{
val
expectedValue
=
asserts
[
i
]
val
ttlKey
=
asserts
[
i
+
1
]
val
actual
=
copied
[
ttlKey
]
assertEquals
(
message
,
expectedValue
,
actual
)
i
+=
2
}
fun
<
T
>
assertTtlValues
(
expected
:
TtlValues
<
T
>,
copied
:
TtlValues
<
T
>)
{
val
message
=
"Assert Fail:\nexpected: $expected\ncopyTtlValues: $copied"
assertEquals
(
"size not equals! $message"
,
expected
.
size
,
copied
.
size
)
assertEquals
(
message
,
expected
,
copied
)
}
fun
<
T
>
assertChildTtlValues
(
tag
:
String
,
values
:
TtlValues
<
T
>)
{
assertTtlValues
(
values
,
PARENT_CREATE_MODIFIED_IN_CHILD
+
tag
,
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
CHILD_CREATE
+
tag
,
CHILD_CREATE
+
tag
assertTtlValues
(
mapOf
(
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
+
tag
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
CHILD_CREATE
+
tag
to
CHILD_CREATE
+
tag
),
values
)
}
fun
<
T
>
assertChildTtlValuesWithParentCreateAfterCreateChild
(
tag
:
String
,
values
:
TtlValues
<
T
>)
{
assertTtlValues
(
values
,
PARENT_CREATE_MODIFIED_IN_CHILD
+
tag
,
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
CHILD_CREATE
+
tag
,
CHILD_CREATE
+
tag
,
PARENT_CREATE_AFTER_CREATE_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
+
tag
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
CHILD_CREATE
+
tag
to
CHILD_CREATE
+
tag
,
PARENT_CREATE_AFTER_CREATE_CHILD
to
PARENT_CREATE_AFTER_CREATE_CHILD
),
values
)
}
fun
<
T
>
assertParentTtlValues
(
values
:
TtlValues
<
T
>)
{
assertTtlValues
(
values
,
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
,
// restored after call!
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
,
// restored after call!
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
to
PARENT_CREATE_AFTER_CREATE_CHILD
),
values
)
}
src/test/java/com/alibaba/demo/agent/AgentDemo.kt
浏览文件 @
16ffb128
...
...
@@ -3,6 +3,7 @@
package
com.alibaba.demo.agent
import
com.alibaba.ttl.TransmittableThreadLocal
import
java.lang.IllegalStateException
import
java.util.concurrent.ExecutorService
import
java.util.concurrent.Executors
import
java.util.concurrent.TimeUnit
...
...
@@ -33,7 +34,7 @@ fun main(args: Array<String>) {
executorService
.
shutdown
()
if
(!
executorService
.
awaitTermination
(
3
,
TimeUnit
.
SECONDS
))
{
System
.
exit
(
1
)
throw
IllegalStateException
(
"Fail to shutdown executorService!"
)
}
}
...
...
src/test/java/com/alibaba/demo/distributed_tracer/weakref/DistributedTracerUseDemo_WeakReferenceInsteadOfRefCounter.kt
浏览文件 @
16ffb128
...
...
@@ -5,16 +5,19 @@ import com.alibaba.ttl.TransmittableThreadLocal
import
com.alibaba.ttl.threadpool.TtlExecutors
import
java.lang.Thread.sleep
import
java.util.concurrent.ConcurrentHashMap
import
java.util.concurrent.ExecutorService
import
java.util.concurrent.Executors
import
java.util.concurrent.atomic.AtomicInteger
import
java.util.concurrent.atomic.AtomicLong
import
kotlin.concurrent.thread
private
val
executorService
=
TtlExecutors
.
getTtlExecutorService
(
Executors
.
newFixedThreadPool
(
1
)
{
r
:
Runnable
->
Thread
(
r
,
"Executors"
).
apply
{
isDaemon
=
true
}
}
)
private
val
executorService
:
ExecutorService
=
Executors
.
newFixedThreadPool
(
1
)
{
r
:
Runnable
->
Thread
(
r
,
"Executors"
).
apply
{
isDaemon
=
true
}
}.
let
{
// ensure threads in pool is pre-created.
expandThreadPool
(
it
)
TtlExecutors
.
getTtlExecutorService
(
it
)
}
/**
* DistributedTracer(DT) use demo.
...
...
@@ -22,9 +25,6 @@ private val executorService = TtlExecutors.getTtlExecutorService(
* @author Jerry Lee (oldratlee at gmail dot com)
*/
fun
main
(
args
:
Array
<
String
>)
{
// ensure threads in pool is pre-created.
expandThreadPool
(
executorService
)
for
(
i
in
0
..
42
)
{
rpcInvokeIn
()
}
...
...
src/test/java/com/alibaba/demo/forkjoinpool/Demo.kt
浏览文件 @
16ffb128
...
...
@@ -22,7 +22,7 @@ fun main(args: Array<String>) {
}
internal
class
SumTask
(
private
val
numbers
:
LongRange
)
:
RecursiveTask
<
Long
>()
{
override
fun
compute
():
Long
?
=
override
fun
compute
():
Long
=
if
(
numbers
.
count
()
<=
16
)
{
// compute directly
numbers
.
asSequence
().
sum
()
...
...
src/test/java/com/alibaba/third_part_lib_test/ForkJoinPoolTest.kt
浏览文件 @
16ffb128
...
...
@@ -43,7 +43,7 @@ class ForkJoinPoolTest {
internal
class
SumTask
(
private
val
numbers
:
LongRange
)
:
RecursiveTask
<
Long
>()
{
val
execCounter
=
AtomicInteger
(
0
)
override
fun
compute
():
Long
?
{
override
fun
compute
():
Long
{
execCounter
.
incrementAndGet
()
return
if
(
numbers
.
count
()
<=
16
)
{
...
...
src/test/java/com/alibaba/ttl/TtlCallableTest.kt
浏览文件 @
16ffb128
...
...
@@ -151,11 +151,7 @@ class TtlCallableTest {
}
companion
object
{
private
val
executorService
=
Executors
.
newFixedThreadPool
(
3
)
init
{
expandThreadPool
(
executorService
)
}
private
val
executorService
=
Executors
.
newFixedThreadPool
(
3
).
also
{
expandThreadPool
(
it
)
}
@AfterClass
@Suppress
(
"unused"
)
...
...
src/test/java/com/alibaba/ttl/TtlRunnableTest.kt
浏览文件 @
16ffb128
...
...
@@ -241,11 +241,7 @@ class TtlRunnableTest {
}
companion
object
{
private
val
executorService
=
Executors
.
newFixedThreadPool
(
3
)
init
{
expandThreadPool
(
executorService
)
}
private
val
executorService
=
Executors
.
newFixedThreadPool
(
3
).
also
{
expandThreadPool
(
it
)
}
@AfterClass
@Suppress
(
"unused"
)
...
...
src/test/java/com/alibaba/ttl/forkjoin/recursive_action/TtlRecursiveActionTest.kt
浏览文件 @
16ffb128
...
...
@@ -69,29 +69,32 @@ private fun run_test_with_pool(forkJoinPool: ForkJoinPool) {
// child Inheritable
assertTtlValues
(
printAction
.
copied
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
,
PARENT_CREATE_MODIFIED_IN_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
),
printAction
.
copied
)
// left grand Task Inheritable, changed value
assertTtlValues
(
printAction
.
leftSubAction
.
copied
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
+
PrintAction
.
CHANGE_POSTFIX
/* CHANGED */
,
PARENT_CREATE_MODIFIED_IN_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
+
PrintAction
.
CHANGE_POSTFIX
/* CHANGED */
),
printAction
.
leftSubAction
.
copied
)
// right grand Task Inheritable, not change value
assertTtlValues
(
printAction
.
rightSubAction
.
copied
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
,
PARENT_CREATE_MODIFIED_IN_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
),
printAction
.
rightSubAction
.
copied
)
// child do not effect parent
assertTtlValues
(
copyTtlValues
(
ttlInstances
),
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
)
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
to
PARENT_CREATE_AFTER_CREATE_CHILD
),
copyTtlValues
(
ttlInstances
)
)
}
...
...
src/test/java/com/alibaba/ttl/forkjoin/recursive_task/TtlRecursiveTaskTest.kt
浏览文件 @
16ffb128
...
...
@@ -68,28 +68,32 @@ private fun run_test_with_pool(forkJoinPool: ForkJoinPool) {
// child Inheritable
assertTtlValues
(
sumTask
.
copied
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
,
PARENT_CREATE_MODIFIED_IN_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
),
sumTask
.
copied
)
// left grand Task Inheritable, changed value
assertTtlValues
(
sumTask
.
leftSubTask
.
copied
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
+
SumTask
.
CHANGE_POSTFIX
/* CHANGED */
,
PARENT_CREATE_MODIFIED_IN_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
+
SumTask
.
CHANGE_POSTFIX
/* CHANGED */
),
sumTask
.
leftSubTask
.
copied
)
// right grand Task Inheritable, not change value
assertTtlValues
(
sumTask
.
rightSubTask
.
copied
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
,
PARENT_CREATE_MODIFIED_IN_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
),
sumTask
.
rightSubTask
.
copied
)
// child do not effect parent
assertTtlValues
(
copyTtlValues
(
ttlInstances
),
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
to
PARENT_CREATE_AFTER_CREATE_CHILD
),
copyTtlValues
(
ttlInstances
)
)
}
...
...
@@ -107,7 +111,7 @@ private class SumTask(private val numbers: IntRange,
lateinit
var
leftSubTask
:
SumTask
lateinit
var
rightSubTask
:
SumTask
override
fun
compute
():
Int
?
{
override
fun
compute
():
Int
{
if
(
changeTtlValue
)
{
modifyParentTtlInstances
(
CHANGE_POSTFIX
,
ttlMap
)
}
...
...
src/test/java/com/alibaba/ttl/testmodel/DeepCopyFooTransmittableThreadLocal.kt
浏览文件 @
16ffb128
...
...
@@ -6,7 +6,5 @@ import com.alibaba.ttl.TransmittableThreadLocal
* @author Jerry Lee (oldratlee at gmail dot com)
*/
class
DeepCopyFooTransmittableThreadLocal
:
TransmittableThreadLocal
<
FooPojo
>()
{
override
fun
copy
(
parentValue
:
FooPojo
?):
FooPojo
?
=
if
(
parentValue
==
null
)
null
else
FooPojo
(
parentValue
.
name
,
parentValue
.
age
)
override
fun
copy
(
parentValue
:
FooPojo
?):
FooPojo
?
=
parentValue
?.
copy
()
}
src/test/java/com/alibaba/ttl/threadpool/ScheduledExecutorServiceTtlWrapperTest.kt
浏览文件 @
16ffb128
...
...
@@ -38,7 +38,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
executorService
!!
.
execute
(
task
)
executorService
.
execute
(
task
)
Thread
.
sleep
(
100
)
// child Inheritable
...
...
@@ -53,7 +53,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
future
=
executorService
!!
.
submit
(
call
)
val
future
=
executorService
.
submit
(
call
)
assertEquals
(
"ok"
,
future
.
get
())
// child Inheritable
...
...
@@ -68,7 +68,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
future
=
executorService
!!
.
submit
(
task
,
"ok"
)
val
future
=
executorService
.
submit
(
task
,
"ok"
)
assertEquals
(
"ok"
,
future
.
get
())
// child Inheritable
...
...
@@ -83,7 +83,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
future
=
executorService
!!
.
submit
(
task
)
val
future
=
executorService
.
submit
(
task
)
assertNull
(
future
.
get
())
// child Inheritable
...
...
@@ -99,7 +99,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
futures
=
executorService
!!
.
invokeAll
(
Arrays
.
asList
(
call1
,
call2
))
val
futures
=
executorService
.
invokeAll
(
Arrays
.
asList
(
call1
,
call2
))
for
(
future
in
futures
)
{
assertEquals
(
"ok"
,
future
.
get
())
}
...
...
@@ -118,7 +118,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
futures
=
executorService
!!
.
invokeAll
(
Arrays
.
asList
(
call1
,
call2
),
10
,
TimeUnit
.
SECONDS
)
val
futures
=
executorService
.
invokeAll
(
Arrays
.
asList
(
call1
,
call2
),
10
,
TimeUnit
.
SECONDS
)
for
(
future
in
futures
)
{
assertEquals
(
"ok"
,
future
.
get
())
}
...
...
@@ -137,7 +137,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
s
=
executorService
!!
.
invokeAny
(
Arrays
.
asList
(
call1
,
call2
))
val
s
=
executorService
.
invokeAny
(
Arrays
.
asList
(
call1
,
call2
))
assertEquals
(
"ok"
,
s
)
assertTrue
(
call1
.
isCopied
||
call2
.
isCopied
)
...
...
@@ -157,7 +157,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
s
=
executorService
!!
.
invokeAny
(
Arrays
.
asList
(
call1
,
call2
),
10
,
TimeUnit
.
SECONDS
)
val
s
=
executorService
.
invokeAny
(
Arrays
.
asList
(
call1
,
call2
),
10
,
TimeUnit
.
SECONDS
)
assertEquals
(
"ok"
,
s
)
assertTrue
(
call1
.
isCopied
||
call2
.
isCopied
)
...
...
@@ -177,7 +177,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
future
=
executorService
!!
.
schedule
(
task
,
1
,
TimeUnit
.
SECONDS
)
val
future
=
executorService
.
schedule
(
task
,
1
,
TimeUnit
.
SECONDS
)
assertNull
(
future
.
get
())
// child Inheritable
...
...
@@ -191,7 +191,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
// create after new Task, won't see parent value in in task!
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
future
=
executorService
!!
.
schedule
(
call
,
1
,
TimeUnit
.
SECONDS
)
val
future
=
executorService
.
schedule
(
call
,
1
,
TimeUnit
.
SECONDS
)
assertEquals
(
"ok"
,
future
.
get
())
// child Inheritable
...
...
@@ -205,7 +205,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
// create after new Task, won't see parent value in in task!
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
future
=
executorService
!!
.
scheduleAtFixedRate
(
task
,
0
,
100
,
TimeUnit
.
SECONDS
)
val
future
=
executorService
.
scheduleAtFixedRate
(
task
,
0
,
100
,
TimeUnit
.
SECONDS
)
Thread
.
sleep
(
100
)
future
.
cancel
(
true
)
...
...
@@ -221,7 +221,7 @@ class ScheduledExecutorServiceTtlWrapperTest {
createParentTtlInstancesAfterCreateChild
(
ttlInstances
)
val
future
=
executorService
!!
.
scheduleWithFixedDelay
(
task
,
0
,
50
,
TimeUnit
.
SECONDS
)
val
future
=
executorService
.
scheduleWithFixedDelay
(
task
,
0
,
50
,
TimeUnit
.
SECONDS
)
Thread
.
sleep
(
100
)
future
.
cancel
(
true
)
...
...
@@ -231,21 +231,18 @@ class ScheduledExecutorServiceTtlWrapperTest {
}
companion
object
{
private
var
executorService
:
ScheduledExecutorService
?
=
null
init
{
val
scheduledThreadPoolExecutor
=
ScheduledThreadPoolExecutor
(
3
)
scheduledThreadPoolExecutor
.
setKeepAliveTime
(
1024
,
TimeUnit
.
DAYS
)
executorService
=
TtlExecutors
.
getTtlScheduledExecutorService
(
scheduledThreadPoolExecutor
)
expandThreadPool
(
executorService
!!
)
private
val
executorService
:
ScheduledExecutorService
=
ScheduledThreadPoolExecutor
(
3
).
let
{
it
.
setKeepAliveTime
(
10
,
TimeUnit
.
SECONDS
)
expandThreadPool
(
it
)
TtlExecutors
.
getTtlScheduledExecutorService
(
it
)
}
@AfterClass
@Suppress
(
"unused"
)
fun
afterClass
()
{
executorService
!!
.
shutdown
()
executorService
!!
.
awaitTermination
(
100
,
TimeUnit
.
MILLISECONDS
)
if
(!
executorService
!!
.
isTerminated
)
fail
(
"Fail to shutdown thread pool"
)
executorService
.
shutdown
()
executorService
.
awaitTermination
(
100
,
TimeUnit
.
MILLISECONDS
)
if
(!
executorService
.
isTerminated
)
fail
(
"Fail to shutdown thread pool"
)
}
}
}
src/test/java/com/alibaba/ttl/threadpool/agent/check/AgentCheckMain.kt
浏览文件 @
16ffb128
...
...
@@ -5,15 +5,8 @@ package com.alibaba.ttl.threadpool.agent.check
import
com.alibaba.support.junit.conditional.BelowJava7
fun
main
(
args
:
Array
<
String
>)
{
try
{
com
.
alibaba
.
ttl
.
threadpool
.
agent
.
check
.
executor
.
main
(
args
)
com
.
alibaba
.
ttl
.
threadpool
.
agent
.
check
.
executor
.
main
(
args
)
if
(!
BelowJava7
().
isSatisfied
)
com
.
alibaba
.
ttl
.
threadpool
.
agent
.
check
.
forkjoin
.
main
(
args
)
}
catch
(
e
:
Throwable
)
{
println
(
"Exception when run AgentCheck: "
)
e
.
printStackTrace
(
System
.
out
)
System
.
exit
(
2
)
}
if
(!
BelowJava7
().
isSatisfied
)
com
.
alibaba
.
ttl
.
threadpool
.
agent
.
check
.
forkjoin
.
main
(
args
)
}
src/test/java/com/alibaba/ttl/threadpool/agent/check/forkjoin/ForkJoinTaskClassAgentCheck.kt
浏览文件 @
16ffb128
...
...
@@ -63,28 +63,34 @@ private fun run_test_with_pool(forkJoinPool: ForkJoinPool) {
// child Inheritable
assertTtlValues
(
sumTask
.
copied
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
,
PARENT_CREATE_MODIFIED_IN_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
),
sumTask
.
copied
)
// left grand Task Inheritable, changed value
assertTtlValues
(
sumTask
.
leftSubTask
.
copied
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
+
SumTask
.
CHANGE_POSTFIX
/* CHANGED */
,
PARENT_CREATE_MODIFIED_IN_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
+
SumTask
.
CHANGE_POSTFIX
/* CHANGED */
),
sumTask
.
leftSubTask
.
copied
)
// right grand Task Inheritable, not change value
assertTtlValues
(
sumTask
.
rightSubTask
.
copied
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
,
PARENT_CREATE_MODIFIED_IN_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
/* Not change*/
),
sumTask
.
rightSubTask
.
copied
)
// child do not effect parent
assertTtlValues
(
copyTtlValues
(
ttlInstances
),
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
assertTtlValues
(
mapOf
(
PARENT_CREATE_UNMODIFIED_IN_CHILD
to
PARENT_CREATE_UNMODIFIED_IN_CHILD
,
PARENT_CREATE_MODIFIED_IN_CHILD
to
PARENT_CREATE_MODIFIED_IN_CHILD
,
PARENT_CREATE_AFTER_CREATE_CHILD
to
PARENT_CREATE_AFTER_CREATE_CHILD
),
copyTtlValues
(
ttlInstances
)
)
}
...
...
@@ -103,7 +109,7 @@ private class SumTask(private val numbers: IntRange,
lateinit
var
leftSubTask
:
SumTask
lateinit
var
rightSubTask
:
SumTask
override
fun
compute
():
Int
?
{
override
fun
compute
():
Int
{
if
(
changeTtlValue
)
{
modifyParentTtlInstances
(
CHANGE_POSTFIX
,
ttlMap
)
}
...
...
src/test/java/com/alibaba/ttl/user_api_test/TransmittableThreadLocal_Transmitter_UserTest.kt
浏览文件 @
16ffb128
...
...
@@ -11,6 +11,7 @@ import org.junit.Assert.fail
import
org.junit.Rule
import
org.junit.Test
import
java.util.*
import
java.util.concurrent.ExecutorService
import
java.util.concurrent.Executors
import
java.util.concurrent.TimeUnit
...
...
@@ -101,11 +102,7 @@ class TransmittableThreadLocal_Transmitter_UserTest {
private
val
PARENT
=
"parent: "
+
Date
()
private
val
CHILD
=
"child: "
+
Date
()
private
val
executorService
=
Executors
.
newFixedThreadPool
(
3
)
init
{
expandThreadPool
(
executorService
)
}
private
val
executorService
:
ExecutorService
=
Executors
.
newFixedThreadPool
(
3
).
also
{
expandThreadPool
(
it
)
}
@AfterClass
@Suppress
(
"unused"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录