author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 21 Mar 2016 13:15:35 +0100 | |
changeset 314 | 9ac0be200068 |
parent 302 | 30fc156ff773 |
permissions | -rw-r--r-- |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'jv:calipel/s' }" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
279
af5ed3f190d4
Renamed BenchmarkResult to BenchmarkResultC
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
262
diff
changeset
|
3 |
"{ NameSpace: Smalltalk }" |
af5ed3f190d4
Renamed BenchmarkResult to BenchmarkResultC
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
262
diff
changeset
|
4 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
Object subclass:#BenchmarkRunner |
147
91e4feb2c8b5
Moved error handling to command line adapter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
145
diff
changeset
|
6 |
instanceVariableNames:'suite result' |
302
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
7 |
classVariableNames:'StatusSuccess StatusFailure StatusError' |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
poolDictionaries:'' |
98
4266d340e722
Added user feedback info when running benchmarks using BenchmarkRunner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
76
diff
changeset
|
9 |
category:'CalipeL-S-Core-Runner' |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
!BenchmarkRunner class methodsFor:'documentation'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
documentation |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
" |
124
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
16 |
BechmarkRunner is the command line client for CalipeL. |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
17 |
It parses the command line arguments, sets up the |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
18 |
environment and run benchmarks. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
|
302
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
22 |
!BenchmarkRunner class methodsFor:'initialization'! |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
23 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
24 |
initialize |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
25 |
"Invoked at system start or when the class is dynamically loaded." |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
26 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
27 |
StatusSuccess := 0. |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
28 |
StatusFailure := 1. |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
29 |
StatusError := 2. |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
30 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
31 |
"Modified: / 22-10-2015 / 14:46:25 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
32 |
! ! |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
33 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
!BenchmarkRunner class methodsFor:'instance creation'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
new |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
"return an initialized instance" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
^ self basicNew initialize. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
|
302
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
42 |
!BenchmarkRunner class methodsFor:'accessing'! |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
43 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
44 |
statusError |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
45 |
^ StatusError |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
46 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
47 |
"Created: / 22-10-2015 / 14:57:33 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
48 |
! |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
49 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
50 |
statusFailure |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
51 |
^ StatusFailure |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
52 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
53 |
"Created: / 22-10-2015 / 14:57:27 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
54 |
! |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
55 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
56 |
statusSuccess |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
57 |
^ StatusSuccess |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
58 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
59 |
"Created: / 22-10-2015 / 14:57:21 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
60 |
! ! |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
61 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
!BenchmarkRunner methodsFor:'accessing'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
|
134
287e1365b137
Parameter resolution refactored. Added more tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
125
diff
changeset
|
64 |
result |
287e1365b137
Parameter resolution refactored. Added more tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
125
diff
changeset
|
65 |
^ result |
287e1365b137
Parameter resolution refactored. Added more tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
125
diff
changeset
|
66 |
! |
287e1365b137
Parameter resolution refactored. Added more tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
125
diff
changeset
|
67 |
|
287e1365b137
Parameter resolution refactored. Added more tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
125
diff
changeset
|
68 |
suite |
287e1365b137
Parameter resolution refactored. Added more tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
125
diff
changeset
|
69 |
^ suite |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
!BenchmarkRunner methodsFor:'main'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
|
143
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
74 |
main:argv0 |
302
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
75 |
"Main entry point for standalone benchmark runner. It parses (common) command line arguments, |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
76 |
builds the suite and run all benchmarks. It returns a status code to be passed to exit(). |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
|
302
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
78 |
Note, that platform-specific command line arguments are handled in a platform specific |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
79 |
runner adapter (see BenchmarkRunnerAdapterStX or BenchmarkRunnerAdapterPharo." |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
80 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
81 |
| statusCode i report instruments name file params classes runs argv desc setup setupScript teardown teardownScript executor | |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
82 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
83 |
statusCode := StatusSuccess. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
params := Dictionary new. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
classes := OrderedCollection new. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
report := BenchmarkReport text. |
262
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
87 |
instruments := OrderedCollection new. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
runs := 5. |
143
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
89 |
argv := argv0 asOrderedCollection. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
91 |
i := 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
92 |
[ i <= argv size ] whileTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
93 |
| arg | |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
arg := argv at: i. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
i := i + 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
arg first == $- ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
arg = '-n' ifTrue:[ |
124
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
99 |
i > argv size ifTrue:[ |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
100 |
self error:'-n requires an integer parameter' |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
101 |
]. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
runs := Integer readFrom: (argv at: i) onError:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
self error: '-n requires an integer parameter'. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
i := i + 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
107 |
arg = '-o' ifTrue:[ |
124
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
108 |
i > argv size ifTrue:[ |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
109 |
self error:'-o requires a filename parameter' |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
110 |
]. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
111 |
file := argv at: i. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
112 |
i := i + 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
113 |
]. |
205
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
114 |
(arg = '--arguments' or:[arg = '--script']) ifTrue:[ |
143
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
115 |
| arguments argumentsF | |
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
116 |
|
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
117 |
i > argv size ifTrue:[ |
205
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
118 |
self error: arg, ' requires a file parameter.' |
143
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
119 |
]. |
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
120 |
argumentsF := (arguments := (argv at: i)) asFilename. |
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
121 |
argumentsF exists ifFalse:[ |
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
122 |
self error:'no such file: ', arguments. |
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
123 |
]. |
204
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
124 |
argumentsF readingFileDo:[:f | self parseArguments: f into: argv ]. |
143
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
125 |
i := i + 1. |
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
126 |
]. |
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
127 |
|
e702a244cea5
Added --arguments argument to benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
128 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
129 |
arg = '-r' ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
130 |
| reportNm | |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
|
124
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
132 |
i > argv size ifTrue:[ |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
133 |
self error:'-r requires a valid class name parameter' |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
134 |
]. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
135 |
reportNm := (argv at: i). |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
136 |
i := i + 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
137 |
report := Smalltalk at: reportNm asSymbol. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
138 |
report isNil ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
139 |
self error: 'No report class named ''', reportNm, ''''. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
140 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
141 |
]. |
262
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
142 |
|
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
143 |
(arg = '-i' or:[arg = '--instrument']) ifTrue:[ |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
144 |
| instrumentNm instrumentCls | |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
145 |
|
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
146 |
i > argv size ifTrue:[ |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
147 |
self error: arg, ' requires a valid class name parameter' |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
148 |
]. |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
149 |
instrumentNm := (argv at: i). |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
150 |
i := i + 1. |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
151 |
instrumentCls := Smalltalk at: instrumentNm asSymbol. |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
152 |
instrumentCls isNil ifTrue:[ |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
153 |
self error: 'No instrument class named ''', instrumentNm, ''''. |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
154 |
] ifFalse:[ |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
155 |
instruments add: instrumentCls new. |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
156 |
]. |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
157 |
]. |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
158 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
159 |
arg = '--text' ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
160 |
report := BenchmarkReport text. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
161 |
]. |
29
00d2eaa41853
Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
162 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
163 |
arg = '--json' ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
164 |
report := BenchmarkReport json. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
165 |
]. |
29
00d2eaa41853
Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
166 |
|
185
68ba8ec6c406
Changes --name to --tag, which better describes what it means.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
180
diff
changeset
|
167 |
arg = '--tag' ifTrue:[ |
124
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
168 |
i > argv size ifTrue:[ |
185
68ba8ec6c406
Changes --name to --tag, which better describes what it means.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
180
diff
changeset
|
169 |
self error:'--tag requires a string parameter.' |
124
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
170 |
]. |
180
df8e7dcbfd8d
Removed --machineid and added --name parameter to identify benchmark run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
171 |
name := argv at: i. |
122
9ad7296fc59a
Added machine ID configuration value.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
98
diff
changeset
|
172 |
i := i + 1. |
9ad7296fc59a
Added machine ID configuration value.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
98
diff
changeset
|
173 |
]. |
9ad7296fc59a
Added machine ID configuration value.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
98
diff
changeset
|
174 |
|
205
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
175 |
arg = '--setup' ifTrue:[ |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
176 |
i > argv size ifTrue:[ |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
177 |
self error:'--setup requires a string parameter.' |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
178 |
]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
179 |
setup := argv at: i. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
180 |
i := i + 1. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
181 |
]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
182 |
arg = '--teardown' ifTrue:[ |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
183 |
i > argv size ifTrue:[ |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
184 |
self error:'--teardown requires a string parameter.' |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
185 |
]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
186 |
teardown := argv at: i. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
187 |
i := i + 1. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
188 |
]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
189 |
|
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
190 |
(arg = '--setup-script') ifTrue:[ |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
191 |
i > argv size ifTrue:[ |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
192 |
self error: arg, ' requires a file parameter.' |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
193 |
]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
194 |
setupScript := (argv at: i) asFilename. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
195 |
setupScript exists ifFalse:[ |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
196 |
self error:'no such file: ', (argv at: i). |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
197 |
]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
198 |
i := i + 1. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
199 |
]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
200 |
(arg = '--teardown-script') ifTrue:[ |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
201 |
i > argv size ifTrue:[ |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
202 |
self error: arg, ' requires a file parameter.' |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
203 |
]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
204 |
teardownScript := (argv at: i) asFilename. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
205 |
teardownScript exists ifFalse:[ |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
206 |
self error:'no such file: ', (argv at: i). |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
207 |
]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
208 |
i := i + 1. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
209 |
]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
210 |
|
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
211 |
|
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
212 |
|
190
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
213 |
arg = '--description' ifTrue:[ |
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
214 |
i > argv size ifTrue:[ |
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
215 |
self error:'--description requires a string parameter.' |
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
216 |
]. |
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
217 |
desc := argv at: i. |
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
218 |
i := i + 1. |
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
219 |
]. |
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
220 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
221 |
arg second = $D ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
222 |
| eqIdx | |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
((arg size > 2) and:[(eqIdx := arg indexOf: $= startingAt: 3) ~~ 0]) ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
225 |
params at: (arg copyFrom: 3 to: eqIdx - 1) put: (arg copyFrom: eqIdx + 1) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
] ifFalse:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
227 |
self error: 'No parameter value' |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
] |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
229 |
] |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
] ifFalse:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
231 |
classes add: arg. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
232 |
] |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
233 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
234 |
|
124
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
235 |
classes isEmpty ifTrue:[ |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
236 |
self error:'No suite or benchmark specified.' |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
237 |
]. |
e5582f62aab5
Fixed command line argument handling and error reporting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
122
diff
changeset
|
238 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
239 |
"Build suite" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
240 |
suite := BenchmarkSuite new. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
241 |
classes do:[:each| |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
242 |
| classNm class selector | |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
243 |
i := each indexOf: $#. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
244 |
i ~~ 0 ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
245 |
classNm := each copyTo: i - 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
246 |
selector := (each copyFrom: i + 1) asSymbol. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
247 |
] ifFalse:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
248 |
classNm := each. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
249 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
250 |
class := Smalltalk at: classNm asSymbol. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
251 |
class isNil ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
252 |
self error: 'Class ', classNm , ' does not exists'. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
253 |
]. |
76
97cf7bf849e6
Fix for Smalltalk/X: load the class if it is autoloaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
254 |
Smalltalk isSmalltalkX ifTrue:[ |
97cf7bf849e6
Fix for Smalltalk/X: load the class if it is autoloaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
255 |
class isLoaded ifFalse:[class autoload]. |
97cf7bf849e6
Fix for Smalltalk/X: load the class if it is autoloaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
256 |
]. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
257 |
selector isNil ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
258 |
suite addBenchmark: (BenchmarkSuite class: class) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
259 |
] ifFalse:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
260 |
suite addBenchmark: (BenchmarkSuite class:class selector:selector) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
261 |
] |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
262 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
263 |
|
289
256720089f87
Check for empty benchmarksuite in batch benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
279
diff
changeset
|
264 |
suite isEmpty ifTrue:[ |
256720089f87
Check for empty benchmarksuite in batch benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
279
diff
changeset
|
265 |
self error: 'No benchmarks to run (suite is empty)' |
256720089f87
Check for empty benchmarksuite in batch benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
279
diff
changeset
|
266 |
]. |
256720089f87
Check for empty benchmarksuite in batch benchmark runner
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
279
diff
changeset
|
267 |
|
205
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
268 |
"Run setup, if any" |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
269 |
setup notNil ifTrue:[ Compiler evaluate: setup ]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
270 |
setupScript notNil ifTrue:[ Compiler evaluate: setupScript asFilename contents asString ]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
271 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
272 |
"Run suite" |
279
af5ed3f190d4
Renamed BenchmarkResult to BenchmarkResultC
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
262
diff
changeset
|
273 |
result := BenchmarkResultC new. |
262
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
274 |
executor := BenchmarkRunnerExecutor new. |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
275 |
executor instruments: instruments. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
276 |
result runs: runs. |
302
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
277 |
[ |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
278 |
suite run: result with: params executor: executor. |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
279 |
] on: BenchmarkExecutionFailure do:[:ex | |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
280 |
"Note that there was an error, but do not |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
281 |
terminate the execution" |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
282 |
statusCode := StatusFailure. |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
283 |
ex resume. |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
284 |
]. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
285 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
286 |
"Write report" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
287 |
file notNil ifTrue:[ |
29
00d2eaa41853
Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
288 |
file asFilename writingFileDo:[:s| |
125
1449209198c1
Fixes for machine id handling an JSON output.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
124
diff
changeset
|
289 |
report |
180
df8e7dcbfd8d
Removed --machineid and added --name parameter to identify benchmark run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
290 |
name: name; |
190
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
291 |
description: desc; |
125
1449209198c1
Fixes for machine id handling an JSON output.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
124
diff
changeset
|
292 |
write: result on: s |
29
00d2eaa41853
Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
293 |
] |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
294 |
] ifFalse:[ |
125
1449209198c1
Fixes for machine id handling an JSON output.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
124
diff
changeset
|
295 |
report |
180
df8e7dcbfd8d
Removed --machineid and added --name parameter to identify benchmark run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
296 |
name: name; |
190
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
297 |
description: desc; |
125
1449209198c1
Fixes for machine id handling an JSON output.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
124
diff
changeset
|
298 |
write: result on: BenchmarkPlatform current stdout |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
299 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
300 |
|
205
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
301 |
"Run teardown" |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
302 |
teardown notNil ifTrue:[ Compiler evaluate: teardown ]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
303 |
teardownScript notNil ifTrue:[ Compiler evaluate: teardownScript asFilename contents asString ]. |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
304 |
|
302
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
305 |
^ statusCode |
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
306 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
307 |
"Modified: / 22-10-2015 / 15:05:02 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
308 |
! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
309 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
310 |
options |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
311 |
"Prints common command line options to stderr" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
312 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
313 |
BenchmarkPlatform current stderr nextPutAll: |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
314 |
' |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
315 |
Common options: |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
316 |
-o FILE ................ write output to FILE instead of to standard output (default: stdout) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
317 |
-n RUNS ................ how many times to run each bechmark (default: 5) |
262
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
318 |
-r REPORTCLASS ......... use REPORTCLASS to generate report (default: BenchmarkReportText) |
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
319 |
-i | --instrument CLS .. add instance if CLS to set instruments (may be specified multiple times) |
204
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
320 |
--arguments FILE ....... read additional arguments from FILE |
205
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
321 |
--setup EXPR ........... evaluate EXPR before actually running any benchmark |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
322 |
--setup-script FILE .... evaluate code in FILE before actually running any benchmark |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
323 |
--teardown EXPR ........ evaluate EXPR after all benchmarks are run |
63a0130d7951
Added new command line options.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
204
diff
changeset
|
324 |
--teardown-script FILE . evaluate code in FILE after all benchmarks are run |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
325 |
--text ................. generate text report (equivalent to -r BenchmarkReportText) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
326 |
--json ................. generate JSON report (equivalent to -r BenchmarkReportJSON) |
190
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
327 |
--tag TAG .............. tag for the current benchmark set (default: "default") |
ab1b88f52b93
Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
185
diff
changeset
|
328 |
--description .......... short string describing the current configuration (default: nothing) |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
329 |
-DNAME=VALUE ........... defines a parameter NAME with value of VALUE |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
330 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
331 |
Suitespec format: |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
332 |
<suitespec> is CLASSNAME[#SELECTOR] |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
333 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
334 |
More documetation: |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
335 |
see https://bitbucket.org/janvrany/jv-calipel/wiki/Home |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
336 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
337 |
' |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
338 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
339 |
"Created: / 06-06-2013 / 11:01:42 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
262
8d2849dd3227
Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
224
diff
changeset
|
340 |
"Modified: / 28-11-2014 / 00:16:52 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
204
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
341 |
! ! |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
342 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
343 |
!BenchmarkRunner methodsFor:'private-parsing'! |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
344 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
345 |
parseArgument:stream |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
346 |
| c | |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
347 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
348 |
[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
349 |
c := stream peek. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
350 |
c == $# |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
351 |
] whileTrue:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
352 |
self parseComment:stream. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
353 |
stream skipSeparators. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
354 |
stream atEnd ifTrue:[ ^ nil ]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
355 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
356 |
c == $\ ifTrue:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
357 |
stream next. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
358 |
[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
359 |
stream peek == Character space or:[ stream peek == Character tab ] |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
360 |
] whileTrue:[ stream next. ]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
361 |
stream peek == Character cr ifTrue:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
362 |
stream skipSeparators. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
363 |
^ self parseArgument:stream. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
364 |
] ifFalse:[ ^ '\' ]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
365 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
366 |
c == $" ifTrue:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
367 |
^ self parseQuoted1:stream |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
368 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
369 |
c == $' ifTrue:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
370 |
^ self parseQuoted2:stream |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
371 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
372 |
^ self parseToken:stream |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
373 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
374 |
"Created: / 08-03-2014 / 11:01:48 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
375 |
"Modified: / 08-03-2014 / 15:59:41 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
376 |
! |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
377 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
378 |
parseArguments: stream into: argv |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
379 |
[ stream skipSeparators. stream atEnd ] whileFalse:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
380 |
| arg | |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
381 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
382 |
arg := (self parseArgument: stream). |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
383 |
arg notNil ifTrue:[ argv add: arg ] |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
384 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
385 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
386 |
"Created: / 08-03-2014 / 10:59:26 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
387 |
"Modified: / 08-03-2014 / 15:59:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
388 |
! |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
389 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
390 |
parseComment: stream |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
391 |
stream nextLine. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
392 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
393 |
"Created: / 08-03-2014 / 11:18:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
394 |
! |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
395 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
396 |
parseQuoted1:stream |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
397 |
"Parse string quoted by $" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
398 |
stream next. "/ eat $" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
399 |
^ String streamContents:[:s| |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
400 |
[ stream peek == $"] whileFalse:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
401 |
stream peek == $\ ifTrue:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
402 |
stream next. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
403 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
404 |
stream atEnd ifTrue:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
405 |
self error:'Unterminated string'. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
406 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
407 |
s nextPut: stream next. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
408 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
409 |
stream next "/ eat $" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
410 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
411 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
412 |
"Created: / 08-03-2014 / 11:18:21 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
413 |
"Modified: / 08-03-2014 / 15:44:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
414 |
! |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
415 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
416 |
parseQuoted2:stream |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
417 |
"Parse string quoted by $'" |
224
703461d83b2f
Fixes to make it running on Pharo 3.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
223
diff
changeset
|
418 |
stream next. "/ eat $'" |
204
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
419 |
^ String streamContents:[:s| |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
420 |
[ stream peek == $'] whileFalse:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
421 |
stream atEnd ifTrue:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
422 |
self error:'Unterminated string'. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
423 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
424 |
s nextPut: stream next. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
425 |
]. |
224
703461d83b2f
Fixes to make it running on Pharo 3.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
223
diff
changeset
|
426 |
stream next. "/ eat $'" |
204
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
427 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
428 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
429 |
"Created: / 08-03-2014 / 11:18:22 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
430 |
"Modified: / 08-03-2014 / 15:44:41 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
431 |
! |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
432 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
433 |
parseToken: stream |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
434 |
^ String streamContents:[:s| |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
435 |
[ stream atEnd or:[stream peek isSeparator] ] whileFalse:[ |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
436 |
s nextPut: stream next. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
437 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
438 |
]. |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
439 |
|
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
440 |
"Created: / 08-03-2014 / 11:18:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
97b7cdaeb0e8
Better script file parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
190
diff
changeset
|
441 |
"Modified: / 08-03-2014 / 15:36:32 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
442 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
443 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
444 |
!BenchmarkRunner class methodsFor:'documentation'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
445 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
446 |
version_HG |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
447 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
448 |
^ '$Changeset: <not expanded> $' |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
449 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
450 |
|
302
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
451 |
|
30fc156ff773
Benchmark runner: do not abort benchmark execution when one benchmark fail to execute
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
289
diff
changeset
|
452 |
BenchmarkRunner initialize! |