forked from pharo-project/pharo
/
TKTNewProcessTaskRunnerTest.class.st
51 lines (37 loc) · 1.6 KB
/
TKTNewProcessTaskRunnerTest.class.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Class {
#name : #TKTNewProcessTaskRunnerTest,
#superclass : #TKTTestCase,
#category : #'TaskIt-Tests-Kernel'
}
{ #category : #tests }
TKTNewProcessTaskRunnerTest >> testNewProcessTaskRunnerExceptionIsHandledByExceptionHandler [
| runner error future |
runner := TKTNewProcessTaskRunner new.
runner exceptionHandler: (TKTTestExceptionHandler new).
error := Error new.
runner schedule: [ error signal ].
"We wait until the error is signaled, trapped and we have it."
100 milliSeconds wait.
self assert: runner exceptionHandler error equals: error
]
{ #category : #tests }
TKTNewProcessTaskRunnerTest >> testNewProcessTaskRunnerRunsInNewProcessEveryTime [
| runner hashes futures hashesSet |
runner := TKTNewProcessTaskRunner new.
hashes := AtomicSharedQueue new.
futures := (1 to: 10) collect: [ :i | (runner future: [ Processor activeProcess identityHash ]) onSuccessDo: [ :v | hashes nextPut: v ] ].
futures do: [ :each | each waitForCompletion: 2 seconds ].
hashesSet := Set new.
[ hashes isEmpty ] whileFalse: [ hashesSet add: hashes next ].
self assert: hashesSet size equals: 10.
]
{ #category : #tests }
TKTNewProcessTaskRunnerTest >> testNewProcessTaskRunnerRunsNeverInLocalProcess [
| runner hashes futures |
runner := TKTNewProcessTaskRunner new.
hashes := AtomicSharedQueue new.
futures := (1 to: 10) collect: [ :i | (runner future: [ Processor activeProcess identityHash ]) onSuccessDo: [ :v | hashes nextPut: v ] ].
futures do: [ :each | each waitForCompletion: 2 seconds ].
[ hashes isEmpty ] whileFalse: [
self assert: hashes next ~= Processor activeProcess identityHash ].
]