author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Wed, 01 Feb 2017 22:26:03 +0000 | |
branch | jv |
changeset 1948 | 62328a88e632 |
parent 1567 | e17701a073f9 |
child 1974 | f2eaf05205d6 |
permissions | -rw-r--r-- |
1447 | 1 |
"{ Package: 'stx:goodies/regression' }" |
1172 | 2 |
|
3 |
"{ NameSpace: RegressionTests }" |
|
4 |
||
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1535
diff
changeset
|
5 |
VMSpawningTestCase subclass:#VMCrashTestCase |
1172 | 6 |
instanceVariableNames:'' |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1535
diff
changeset
|
7 |
classVariableNames:'' |
1172 | 8 |
poolDictionaries:'' |
9 |
category:'tests-Regression-Abstract' |
|
10 |
! |
|
11 |
||
12 |
!VMCrashTestCase class methodsFor:'documentation'! |
|
13 |
||
14 |
documentation |
|
15 |
" |
|
16 |
A specialized abstract test case class for writing |
|
17 |
VM crash tests. The test is run in separate process |
|
18 |
if it eventually crashes the VM, it won't take whole test |
|
19 |
suite with it. |
|
20 |
||
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
21 |
Each test case *must* be annotated by one <spawn:> annotation, |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
22 |
argument must be either `true` of `false`. If `true` then the |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
23 |
test is run in a freshly started VM. If `false`, test is run |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
24 |
in the same VM. |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
25 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
26 |
As this is meant as a base class for regression tests that used to |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
27 |
kill the VM, normally you should annotate tests with <spawn: true> |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
28 |
|
1172 | 29 |
[author:] |
1447 | 30 |
Jan Vrany <jan.vrany@fit.cvut.cz> |
1172 | 31 |
|
32 |
[instance variables:] |
|
33 |
||
34 |
[class variables:] |
|
35 |
||
36 |
[see also:] |
|
37 |
||
38 |
" |
|
39 |
! ! |
|
40 |
||
41 |
!VMCrashTestCase class methodsFor:'testing'! |
|
42 |
||
43 |
isAbstract |
|
44 |
^ self == RegressionTests::VMCrashTestCase |
|
45 |
! ! |
|
46 |
||
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
47 |
!VMCrashTestCase methodsFor:'accessing'! |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
48 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
49 |
timeout |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
50 |
"Returns a default timeout (sec) for the test. |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
51 |
If nil is returned, no timeout enforced. |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
52 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
53 |
Note that the timeout is set only when running under |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
54 |
report runner, interactive tools does not use it" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
55 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
56 |
| method | |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
57 |
method := self class lookupMethodFor: testSelector. |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
58 |
method annotationsAt:#timeout: do:[:annotation| |
1447 | 59 |
^annotation arguments first |
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
60 |
]. |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
61 |
^60"sec - default timeout" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
62 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
63 |
"Created: / 08-09-2014 / 13:00:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
64 |
! ! |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
65 |
|
1172 | 66 |
!VMCrashTestCase methodsFor:'running'! |
67 |
||
68 |
runCase |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
69 |
"Perform the testcase. |
1172 | 70 |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
71 |
If testcase is annotated by <spawn: false> the test is run in the |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
72 |
very same VM. If <spawn: true>, a new VM is started and the testcase |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
73 |
in run in that new VM" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
74 |
|
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1535
diff
changeset
|
75 |
| spawn | |
1172 | 76 |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
77 |
spawn := (self class lookupMethodFor: testSelector) annotationAt: #spawn:. |
1447 | 78 |
spawn isNil ifTrue:[ |
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
79 |
self error: 'No <spawn:> annotation'. |
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
80 |
]. |
1447 | 81 |
(spawn argumentAt: 1) == false ifTrue:[ |
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
82 |
^ super runCase. |
1447 | 83 |
] ifFalse:[ |
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
84 |
(spawn argumentAt: 1) ~~ true ifTrue:[ |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
85 |
self error: 'Argument to <spawn:> must be either `true` or `false`'. |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
86 |
] |
1172 | 87 |
]. |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1535
diff
changeset
|
88 |
self spawnSelector:#runCaseInternal |
1172 | 89 |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
90 |
" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
91 |
VMCrashTestCase run:#test_infrastructure |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
92 |
" |
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
93 |
|
1172 | 94 |
"Created: / 04-09-2014 / 18:13:11 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1530
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
95 |
"Modified: / 03-09-2016 / 07:56:21 / jv" |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1535
diff
changeset
|
96 |
"Modified: / 06-01-2017 / 21:34:31 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1172 | 97 |
! |
98 |
||
99 |
runCaseInternal |
|
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1535
diff
changeset
|
100 |
super runCase |
1172 | 101 |
|
102 |
"Created: / 04-09-2014 / 17:41:38 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1530
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
103 |
"Modified: / 03-09-2016 / 07:53:15 / jv" |
1567
e17701a073f9
Added abstract VMSpawningTestCase
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1535
diff
changeset
|
104 |
"Modified: / 05-01-2017 / 23:18:08 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1172 | 105 |
! ! |
106 |
||
107 |
!VMCrashTestCase methodsFor:'tests - infrastructure'! |
|
108 |
||
109 |
test_infrastructure |
|
110 |
" |
|
111 |
VMCrashTestCase run:#test_infrastructure |
|
112 |
" |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
113 |
<spawn: false> |
1172 | 114 |
|
115 |
| result | |
|
116 |
||
117 |
result := self class run: #tst_pass. |
|
118 |
self assert: result passedCount = 1. |
|
119 |
self assert: result failureCount = 0. |
|
120 |
self assert: result errorCount = 0. |
|
1530
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
121 |
self assert: result skippedCount = 0. |
1172 | 122 |
|
123 |
result := self class run: #tst_fail. |
|
124 |
self assert: result passedCount = 0. |
|
125 |
self assert: result failureCount = 1. |
|
126 |
self assert: result errorCount = 0. |
|
1530
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
127 |
self assert: result skippedCount = 0. |
1172 | 128 |
|
129 |
result := self class run: #tst_error. |
|
130 |
self assert: result passedCount = 0. |
|
131 |
self assert: result failureCount = 0. |
|
132 |
self assert: result errorCount = 1. |
|
1530
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
133 |
self assert: result skippedCount = 0. |
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
134 |
|
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
135 |
result := self class run: #tst_skip. |
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
136 |
self assert: result passedCount = 0. |
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
137 |
self assert: result failureCount = 0. |
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
138 |
self assert: result errorCount = 0. |
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
139 |
self assert: result skippedCount = 1. |
1172 | 140 |
|
141 |
" |
|
1447 | 142 |
VMCrashTestCase run: #tst_crash. |
1172 | 143 |
" |
144 |
result := self class run: #tst_crash. |
|
145 |
self assert: result passedCount = 0. |
|
146 |
self assert: result failureCount = 0. |
|
147 |
self assert: result errorCount = 1. |
|
1530
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
148 |
self assert: result skippedCount = 0. |
1172 | 149 |
|
150 |
"Created: / 05-09-2014 / 18:22:26 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
151 |
"Modified: / 08-09-2014 / 12:26:35 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1530
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
152 |
"Modified: / 03-09-2016 / 07:44:57 / jv" |
1172 | 153 |
! |
154 |
||
155 |
tst_crash |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
156 |
|
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
157 |
<spawn: true> |
1447 | 158 |
|
159 |
| bytes | |
|
1172 | 160 |
|
1194
01167ea2ad14
More support for debugging - file out also some scripts useful when debugging the test.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1189
diff
changeset
|
161 |
Stdout nextPutLine: 'Going to crash now!!'. |
01167ea2ad14
More support for debugging - file out also some scripts useful when debugging the test.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1189
diff
changeset
|
162 |
|
1172 | 163 |
bytes := ExternalBytes address: 16r10 size: 100. |
164 |
bytes byteAt: 1 put: 10. |
|
165 |
||
166 |
"Created: / 05-09-2014 / 18:24:49 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1194
01167ea2ad14
More support for debugging - file out also some scripts useful when debugging the test.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1189
diff
changeset
|
167 |
"Modified: / 16-09-2014 / 20:30:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1172 | 168 |
! |
169 |
||
170 |
tst_error |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
171 |
<spawn: true> |
1172 | 172 |
self error:'Error' |
173 |
||
174 |
"Created: / 05-09-2014 / 18:20:46 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
175 |
"Modified: / 08-09-2014 / 12:26:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1172 | 176 |
! |
177 |
||
178 |
tst_fail |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
179 |
<spawn: true> |
1172 | 180 |
self assert: false. |
181 |
||
182 |
"Created: / 05-09-2014 / 18:20:24 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
183 |
"Modified: / 08-09-2014 / 12:26:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1172 | 184 |
! |
185 |
||
1447 | 186 |
tst_pass |
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
187 |
<spawn: true> |
1172 | 188 |
|
189 |
"Created: / 05-09-2014 / 18:20:51 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1189
6c1c1eefa063
Added regression test #test_java_initialize
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1172
diff
changeset
|
190 |
"Modified: / 08-09-2014 / 12:26:28 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1530
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
191 |
! |
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
192 |
|
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
193 |
tst_skip |
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
194 |
<spawn: true> |
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
195 |
self skipIf: true description: 'Skip the test to test skipping' |
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
196 |
|
b21a5e9a6c26
VMCrashTestCase: Added support for test skipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1502
diff
changeset
|
197 |
"Created: / 03-09-2016 / 07:42:55 / jv" |
1172 | 198 |
! ! |
199 |
||
200 |
!VMCrashTestCase class methodsFor:'documentation'! |
|
201 |
||
202 |
version |
|
203 |
^ '$Header$' |
|
204 |
! |
|
205 |
||
206 |
version_CVS |
|
207 |
^ '$Header$' |
|
1502
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
208 |
! |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
209 |
|
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
210 |
version_HG |
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
211 |
|
b52f4f0d4a0b
Fixed exit code checking logic in VMCrashTestTest
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1500
diff
changeset
|
212 |
^ '$Changeset: <not expanded> $' |
1172 | 213 |
! ! |
214 |