@@ -9,48 +9,67 @@ inputs:
9
9
description : " Java distribution to use"
10
10
default : " microsoft"
11
11
required : true
12
- testPath :
13
- description : " Path to the Gatling Test Suite"
12
+ pomPath :
13
+ description : " Path to the Gatling Test Suite's pom.xml file "
14
14
default : " test"
15
15
required : true
16
- repoName :
17
- description : " Name of the repository to checkout ('org/repo')"
18
- required : false
19
- repoRef :
20
- description : " Tag, Branch, or Commit SHA for the Test Suite repository"
21
- default : " main"
22
- required : false
23
16
simulationClass :
24
17
description : " Full classpath of the simulation to run"
25
18
required : false
26
19
runs :
27
20
using : " composite"
28
21
steps :
29
- - name : Checkout action code
30
- uses : actions/checkout@v3
31
-
32
- - name : Checkout Test Suite if not local
33
- if : ${{ !hashFiles(inputs.testPath) }}
34
- uses : actions/checkout@v3
35
- with :
36
- repository : ${{ inputs.repoName }}
37
- ref : ${{ inputs.repoRef }}
38
- path : ${{ inputs.testPath }}
39
-
40
22
- name : Execute Gatling Test Suite
41
23
uses : actions/setup-java@v3
42
24
with :
43
25
distribution : ${{ inputs.javaDistribution }}
44
26
java-version : ${{ inputs.javaVersion }}
45
27
46
- - run : mvn -f $GITHUB_WORKSPACE/${{ inputs.testPath }} gatling:test ${{ inputs.simulationClass != '' && '-Dgatling.simulationClass=' || '' }}${{ inputs.simulationClass }}
28
+ - run : mvn -f $GITHUB_WORKSPACE/${{ inputs.pomPath }} gatling:test ${{ inputs.simulationClass != '' && '-Dgatling.simulationClass=' || '' }}${{ inputs.simulationClass }}
47
29
shell : bash
48
30
49
31
- name : Generate Job Summary
50
32
uses : actions/github-script@v6
51
33
env :
52
- TEST_PATH : ${{ inputs.testPath }}
34
+ TEST_PATH : ${{ inputs.pomPath }}
53
35
with :
54
36
script : |
55
- const script = require(`${process.env.GITHUB_WORKSPACE}/dist/index.js`)
56
- await script({github, context, core})
37
+ const fs = require('fs')
38
+ const pomPath = process.env.TEST_PATH
39
+ const lastRuns = fs.readFileSync(`${pomPath}/target/gatling/lastRun.txt`).toString().trim().split('\n');
40
+
41
+ for(const run of lastRuns) {
42
+ const results = JSON.parse(fs.readFileSync(`${pomPath}/target/gatling/${run}/js/stats.json`).toString());
43
+ let tableContent = [
44
+ [
45
+ {data: 'Request', header: true},
46
+ {data: 'Success ✅', header: true},
47
+ {data: 'Errors ❌', header: true},
48
+ {data: 'Min', header: true},
49
+ {data: 'Max', header: true},
50
+ {data: 'Avg.', header: true},
51
+ {data: 'Std. Dev.', header: true},
52
+ {data: 'RPS', header: true},
53
+ ]
54
+ ];
55
+
56
+ for(const result in results.contents) {
57
+ const requestMetrics = results.contents[result].stats;
58
+ tableContent.push([
59
+ requestMetrics.name,
60
+ requestMetrics.numberOfRequests.ok.toString(),
61
+ requestMetrics.numberOfRequests.ko.toString(),
62
+ requestMetrics.minResponseTime.total.toString(),
63
+ requestMetrics.maxResponseTime.total.toString(),
64
+ requestMetrics.meanResponseTime.total.toString(),
65
+ requestMetrics.standardDeviation.total.toString(),
66
+ requestMetrics.meanNumberOfRequestsPerSecond.total.toString(),
67
+ ]);
68
+ }
69
+
70
+ await core.summary
71
+ .addHeading(`Results for ${run}`)
72
+ .addTable(tableContent)
73
+ .addQuote('All times are in millisecond (ms). RPS means "Requests per Second"')
74
+ .write()
75
+ }
0 commit comments