s/BenchmarkReportJSON.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 03 Dec 2014 23:53:25 +0000
changeset 262 8d2849dd3227
parent 195 6bb215884ead
child 285 0cf54ee76de5
permissions -rw-r--r--
Added support for (user-defined) benchmark instruments. * Introduced `BenchmarkMeasurementInstrument`, an abstraction to allow pluggin in a different aspects to measure - execution time, number scavenges, number fo full GC's... * Introduced `BenchmarkMeasurement`, a value object that holds a result of measurement done by a single `BenchmarkMeasurementInstrument`. * Code refactored so now `BenchmarkOutcome` now keeps a set of `BenchmarkMeasure`s * Measurements from each instrument are in reports. JSON report keep 'times' array for backward compatibility. * Each platform may define it's set of intruments that is used by default and __ALWAYS__. They should be non-intrusive. * Added command line option `-i` / `--instrument` to specify user-defined instrument to use. *
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:calipel/s' }"
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
BenchmarkReport subclass:#BenchmarkReportJSON
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
	instanceVariableNames:'json'
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'CalipeL-S-Core-Reports'
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!BenchmarkReportJSON methodsFor:'accessing'!
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
stream:something
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
    stream := something.
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
    json := BenchmarkReportJSONWriter on: stream.
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
    "Created: / 12-06-2013 / 14:22:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
! !
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
!BenchmarkReportJSON methodsFor:'writing'!
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
write
89
b37be3ddfeed Added timestamp to BenchmarkResult.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
    23
    json writeDictionaryWith:[ 
190
ab1b88f52b93 Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 180
diff changeset
    24
        json writeKey: 'tags' value: self name.
180
df8e7dcbfd8d Removed --machineid and added --name parameter to identify benchmark run.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 142
diff changeset
    25
        json writeElementSeparator.
89
b37be3ddfeed Added timestamp to BenchmarkResult.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
    26
        json writeKey: 'timestamp' value: result timestamp printISO8601.
b37be3ddfeed Added timestamp to BenchmarkResult.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
    27
        json writeElementSeparator.
88
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    28
        json writeKey: 'configuration' valueWith: [ self writeConfiguration ].
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    29
        json writeElementSeparator.
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
        json writeKey: 'outcomes' valueWith: [ self writeOutcomes ]
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
    ].
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
    "Created: / 12-06-2013 / 14:03:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
190
ab1b88f52b93 Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 180
diff changeset
    34
    "Modified: / 19-09-2013 / 23:27:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
!
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
writeBenchmark: benchmark
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    json writeDictionaryWith:[
90
af50db15da25 Added name, id and description to benchmark annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    39
        json writeKey: 'name' value: benchmark name.
af50db15da25 Added name, id and description to benchmark annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    40
        json writeElementSeparator.
af50db15da25 Added name, id and description to benchmark annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    41
        json writeKey: 'description' value: benchmark description.
af50db15da25 Added name, id and description to benchmark annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    42
        json writeElementSeparator.
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
        json writeKey: 'class' value: benchmark instance class name.
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
        json writeElementSeparator.
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
        json writeKey: 'selector' value: benchmark selector.
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    ]
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    "Created: / 12-06-2013 / 14:10:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
90
af50db15da25 Added name, id and description to benchmark annotation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    49
    "Modified: / 23-06-2013 / 02:27:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
!
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
88
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    52
writeConfiguration
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    53
    json writeDictionaryWith: [
190
ab1b88f52b93 Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 180
diff changeset
    54
        description notNil ifTrue:[
ab1b88f52b93 Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 180
diff changeset
    55
            json writeKey: 'description' value: self description.
194
55deffb7d7e7 Bug fix in BenchmarkReportJSON>>#writeConfiguration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 190
diff changeset
    56
            json writeElementSeparator.
190
ab1b88f52b93 Added option --description to describe current configuration. --name renamed to --tags.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 180
diff changeset
    57
        ].
88
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    58
        json writeKey: 'language'   value: 'Smalltalk'.
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    59
        json writeElementSeparator.
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    60
        json writeKey: 'runtime'    value: BenchmarkPlatform current configurationStringRuntime.
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    61
        json writeElementSeparator.
125
1449209198c1 Fixes for machine id handling an JSON output.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    62
        json writeKey: 'os'         value: BenchmarkPlatform current configurationStringOS.
122
9ad7296fc59a Added machine ID configuration value.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 96
diff changeset
    63
        json writeElementSeparator.
195
6bb215884ead Fixed typo in JSON report
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 194
diff changeset
    64
        json writeKey: 'machineid'   value: (BenchmarkPlatform current configurationStringMachineId)
88
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    65
    ].
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    66
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    67
    "Created: / 22-06-2013 / 22:43:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
194
55deffb7d7e7 Bug fix in BenchmarkReportJSON>>#writeConfiguration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 190
diff changeset
    68
    "Modified: / 08-11-2013 / 21:45:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
88
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    69
!
7939ec1b572b Added configuration identification into JSON report (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    70
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
writeFooter
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    "superclass BenchmarkReport says that I am responsible to implement this method"
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    "Modified: / 12-06-2013 / 14:14:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
!
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
writeHeader
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    "superclass BenchmarkReport says that I am responsible to implement this method"
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    "Modified: / 12-06-2013 / 14:14:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
!
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
262
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    83
writeMeasurement: measurement
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    84
    measurement value ~~ BenchmarkMeasurementValueNotAvailable instance ifTrue:[  
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    85
        json writeDictionaryWith:[
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    86
            json writeKey: 'instrument' valueWith: [ self writeMeasurementInstrument: measurement instrument ].
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    87
            json writeElementSeparator.
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    88
            json writeKey: 'value' value: measurement value
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    89
        ].
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    90
    ].
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    91
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    92
    "Created: / 24-11-2014 / 23:41:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    93
    "Modified: / 01-12-2014 / 03:04:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    94
!
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    95
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    96
writeMeasurementInstrument: instrument
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    97
    json writeDictionaryWith:[
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    98
        json writeKey: 'name' value: instrument name.
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    99
        json writeElementSeparator.
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   100
        json writeKey: 'class' value: instrument class name.
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   101
        json writeElementSeparator.
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   102
        json writeKey: 'unit' value: instrument measurementUnit.        
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   103
    ].
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   104
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   105
    "Created: / 24-11-2014 / 23:46:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   106
!
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   107
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   108
writeMeasurements: measurements
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   109
    json writeArrayWith:[
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   110
        measurements do:[:run | 
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   111
            json writeArrayWith:[
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   112
                run do:[:measurement |  
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   113
                    self writeMeasurement: measurement
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   114
                ] separatedBy:[  
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   115
                    json writeElementSeparator
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   116
                ].
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   117
            ].
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   118
        ] separatedBy:[ 
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   119
            json writeElementSeparator
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   120
        ].
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   121
    ].
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   122
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   123
    "Created: / 24-11-2014 / 23:37:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   124
!
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   125
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
writeOutcome:outcome
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
    json writeDictionaryWith:[
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
        json writeKey: 'benchmark' valueWith: [ self writeBenchmark: outcome benchmark ].
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
        json writeElementSeparator.
262
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   130
        json writeKey: 'measurements' valueWith: [ self writeMeasurements: outcome measurements ].
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
        json writeElementSeparator.        
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
        json writeKey: 'parameters' valueWith: [ self writeParameters: outcome ].
262
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   133
        json writeElementSeparator.        
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   134
        "For backward compatibility, will wanish"
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   135
        json writeKey: 'times' value: outcome times.
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    ]
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
262
8d2849dd3227 Added support for (user-defined) benchmark instruments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   138
    "Modified: / 24-11-2014 / 23:36:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
!
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
writeOutcomes
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    "raise an error: must be redefined in concrete subclass(es)"
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
    json writeArrayWith:[
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
        result 
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
           outcomesDo: [:outcome| self writeOutcome: outcome] 
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
           separatedBy:[json writeElementSeparator]
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    ]
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
    "Created: / 11-06-2013 / 23:39:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    "Modified (format): / 12-06-2013 / 14:06:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
!
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
writeParameters: outcome
142
c69d1eb92d91 Include parameters and their values in JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 125
diff changeset
   154
    json writeDictionaryWith: [
c69d1eb92d91 Include parameters and their values in JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 125
diff changeset
   155
        outcome parameters do:[:paramAndValue |
c69d1eb92d91 Include parameters and their values in JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 125
diff changeset
   156
            json writeKey: paramAndValue key name value: paramAndValue value 
c69d1eb92d91 Include parameters and their values in JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 125
diff changeset
   157
        ] separatedBy:[
c69d1eb92d91 Include parameters and their values in JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 125
diff changeset
   158
            json writeElementSeparator
c69d1eb92d91 Include parameters and their values in JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 125
diff changeset
   159
        ]
c69d1eb92d91 Include parameters and their values in JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 125
diff changeset
   160
    ]
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
    "Created: / 12-06-2013 / 14:10:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
142
c69d1eb92d91 Include parameters and their values in JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 125
diff changeset
   163
    "Modified: / 30-07-2013 / 23:58:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
! !
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
!BenchmarkReportJSON class methodsFor:'documentation'!
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
version_HG
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
    ^ '$Changeset: <not expanded> $'
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
! !
00d2eaa41853 Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172