@ocpp-debugkit/toolkit 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +234 -12
- package/dist/cli/commands/anonymize.d.ts +15 -0
- package/dist/cli/commands/anonymize.d.ts.map +1 -0
- package/dist/cli/commands/anonymize.js +104 -0
- package/dist/cli/commands/anonymize.js.map +1 -0
- package/dist/cli/commands/ci.d.ts +10 -0
- package/dist/cli/commands/ci.d.ts.map +1 -0
- package/dist/cli/commands/ci.js +96 -0
- package/dist/cli/commands/ci.js.map +1 -0
- package/dist/cli/commands/diff.d.ts +10 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +71 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +6 -3
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/scenario.d.ts +11 -3
- package/dist/cli/commands/scenario.d.ts.map +1 -1
- package/dist/cli/commands/scenario.js +41 -4
- package/dist/cli/commands/scenario.js.map +1 -1
- package/dist/cli/index.js +41 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/core/__fixtures__/connector-fault.d.ts +6 -0
- package/dist/core/__fixtures__/connector-fault.d.ts.map +1 -1
- package/dist/core/__fixtures__/connector-fault.js +11 -1
- package/dist/core/__fixtures__/connector-fault.js.map +1 -1
- package/dist/core/__fixtures__/normal-session.d.ts +6 -0
- package/dist/core/__fixtures__/normal-session.d.ts.map +1 -1
- package/dist/core/__fixtures__/normal-session.js +10 -0
- package/dist/core/__fixtures__/normal-session.js.map +1 -1
- package/dist/core/assertions.d.ts +36 -0
- package/dist/core/assertions.d.ts.map +1 -0
- package/dist/core/assertions.js +335 -0
- package/dist/core/assertions.js.map +1 -0
- package/dist/core/detection.d.ts +20 -3
- package/dist/core/detection.d.ts.map +1 -1
- package/dist/core/detection.js +624 -6
- package/dist/core/detection.js.map +1 -1
- package/dist/core/diff.d.ts +68 -0
- package/dist/core/diff.d.ts.map +1 -0
- package/dist/core/diff.js +199 -0
- package/dist/core/diff.js.map +1 -0
- package/dist/core/fixtures/index.d.ts +12 -0
- package/dist/core/fixtures/index.d.ts.map +1 -1
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/types.d.ts +77 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/react/components.d.ts +9 -45
- package/dist/react/components.d.ts.map +1 -1
- package/dist/react/components.js +120 -38
- package/dist/react/components.js.map +1 -1
- package/dist/reporter/html.d.ts +25 -0
- package/dist/reporter/html.d.ts.map +1 -0
- package/dist/reporter/html.js +396 -0
- package/dist/reporter/html.js.map +1 -0
- package/dist/reporter/index.d.ts +1 -0
- package/dist/reporter/index.d.ts.map +1 -1
- package/dist/reporter/index.js +1 -0
- package/dist/reporter/index.js.map +1 -1
- package/dist/scenarios/__scenarios__/diagnostics-failure.d.ts +58 -0
- package/dist/scenarios/__scenarios__/diagnostics-failure.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/diagnostics-failure.js +91 -0
- package/dist/scenarios/__scenarios__/diagnostics-failure.js.map +1 -0
- package/dist/scenarios/__scenarios__/heartbeat-irregular.d.ts +51 -0
- package/dist/scenarios/__scenarios__/heartbeat-irregular.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/heartbeat-irregular.js +81 -0
- package/dist/scenarios/__scenarios__/heartbeat-irregular.js.map +1 -0
- package/dist/scenarios/__scenarios__/invalid-stop-reason.d.ts +118 -0
- package/dist/scenarios/__scenarios__/invalid-stop-reason.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/invalid-stop-reason.js +226 -0
- package/dist/scenarios/__scenarios__/invalid-stop-reason.js.map +1 -0
- package/dist/scenarios/__scenarios__/meter-anomaly.d.ts +115 -0
- package/dist/scenarios/__scenarios__/meter-anomaly.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/meter-anomaly.js +152 -0
- package/dist/scenarios/__scenarios__/meter-anomaly.js.map +1 -0
- package/dist/scenarios/__scenarios__/meter-value-gap.d.ts +103 -0
- package/dist/scenarios/__scenarios__/meter-value-gap.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/meter-value-gap.js +196 -0
- package/dist/scenarios/__scenarios__/meter-value-gap.js.map +1 -0
- package/dist/scenarios/__scenarios__/short-session.d.ts +111 -0
- package/dist/scenarios/__scenarios__/short-session.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/short-session.js +129 -0
- package/dist/scenarios/__scenarios__/short-session.js.map +1 -0
- package/dist/scenarios/__scenarios__/slow-csms-response.d.ts +52 -0
- package/dist/scenarios/__scenarios__/slow-csms-response.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/slow-csms-response.js +61 -0
- package/dist/scenarios/__scenarios__/slow-csms-response.js.map +1 -0
- package/dist/scenarios/__scenarios__/station-offline.d.ts +6 -0
- package/dist/scenarios/__scenarios__/station-offline.d.ts.map +1 -1
- package/dist/scenarios/__scenarios__/station-offline.js +10 -0
- package/dist/scenarios/__scenarios__/station-offline.js.map +1 -1
- package/dist/scenarios/__scenarios__/status-transition-violation.d.ts +52 -0
- package/dist/scenarios/__scenarios__/status-transition-violation.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/status-transition-violation.js +112 -0
- package/dist/scenarios/__scenarios__/status-transition-violation.js.map +1 -0
- package/dist/scenarios/__scenarios__/unexpected-start.d.ts +80 -0
- package/dist/scenarios/__scenarios__/unexpected-start.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/unexpected-start.js +124 -0
- package/dist/scenarios/__scenarios__/unexpected-start.js.map +1 -0
- package/dist/scenarios/__scenarios__/unexpected-stop-reason.d.ts +6 -0
- package/dist/scenarios/__scenarios__/unexpected-stop-reason.d.ts.map +1 -1
- package/dist/scenarios/__scenarios__/unexpected-stop-reason.js +10 -0
- package/dist/scenarios/__scenarios__/unexpected-stop-reason.js.map +1 -1
- package/dist/scenarios/__scenarios__/unresponsive-csms.d.ts +53 -0
- package/dist/scenarios/__scenarios__/unresponsive-csms.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/unresponsive-csms.js +53 -0
- package/dist/scenarios/__scenarios__/unresponsive-csms.js.map +1 -0
- package/dist/scenarios/compare.d.ts +39 -0
- package/dist/scenarios/compare.d.ts.map +1 -0
- package/dist/scenarios/compare.js +77 -0
- package/dist/scenarios/compare.js.map +1 -0
- package/dist/scenarios/index.d.ts +15 -3
- package/dist/scenarios/index.d.ts.map +1 -1
- package/dist/scenarios/index.js +45 -4
- package/dist/scenarios/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
trace: {
|
|
5
|
+
traceId: string;
|
|
6
|
+
metadata: {
|
|
7
|
+
stationId: string;
|
|
8
|
+
ocppVersion: string;
|
|
9
|
+
source: string;
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
events: ({
|
|
13
|
+
timestamp: string;
|
|
14
|
+
direction: string;
|
|
15
|
+
message: (string | number | {
|
|
16
|
+
connectorId: number;
|
|
17
|
+
idTag: string;
|
|
18
|
+
meterStart: number;
|
|
19
|
+
timestamp: string;
|
|
20
|
+
})[];
|
|
21
|
+
} | {
|
|
22
|
+
timestamp: string;
|
|
23
|
+
direction: string;
|
|
24
|
+
message: (string | number | {
|
|
25
|
+
transactionId: number;
|
|
26
|
+
idTagInfo: {
|
|
27
|
+
status: string;
|
|
28
|
+
};
|
|
29
|
+
})[];
|
|
30
|
+
} | {
|
|
31
|
+
timestamp: string;
|
|
32
|
+
direction: string;
|
|
33
|
+
message: (string | number | {
|
|
34
|
+
connectorId: number;
|
|
35
|
+
status: string;
|
|
36
|
+
errorCode: string;
|
|
37
|
+
})[];
|
|
38
|
+
} | {
|
|
39
|
+
timestamp: string;
|
|
40
|
+
direction: string;
|
|
41
|
+
message: {}[];
|
|
42
|
+
} | {
|
|
43
|
+
timestamp: string;
|
|
44
|
+
direction: string;
|
|
45
|
+
message: (string | number | {
|
|
46
|
+
connectorId: number;
|
|
47
|
+
transactionId: number;
|
|
48
|
+
meterValue: {
|
|
49
|
+
timestamp: string;
|
|
50
|
+
sampledValue: {
|
|
51
|
+
value: string;
|
|
52
|
+
measurand: string;
|
|
53
|
+
unit: string;
|
|
54
|
+
}[];
|
|
55
|
+
}[];
|
|
56
|
+
})[];
|
|
57
|
+
} | {
|
|
58
|
+
timestamp: string;
|
|
59
|
+
direction: string;
|
|
60
|
+
message: (string | number | {
|
|
61
|
+
transactionId: number;
|
|
62
|
+
idTag: string;
|
|
63
|
+
meterStop: number;
|
|
64
|
+
timestamp: string;
|
|
65
|
+
reason: string;
|
|
66
|
+
})[];
|
|
67
|
+
} | {
|
|
68
|
+
timestamp: string;
|
|
69
|
+
direction: string;
|
|
70
|
+
message: (string | number | {
|
|
71
|
+
idTagInfo: {
|
|
72
|
+
status: string;
|
|
73
|
+
};
|
|
74
|
+
})[];
|
|
75
|
+
})[];
|
|
76
|
+
};
|
|
77
|
+
expectedFailures: string[];
|
|
78
|
+
};
|
|
79
|
+
export default _default;
|
|
80
|
+
//# sourceMappingURL=unexpected-start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unexpected-start.d.ts","sourceRoot":"","sources":["../../../src/scenarios/__scenarios__/unexpected-start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA4HE"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
name: 'unexpected-start',
|
|
3
|
+
description: 'StartTransaction without preceding BootNotification or Authorize. Expects UNEXPECTED_START failure.',
|
|
4
|
+
trace: {
|
|
5
|
+
traceId: 'scenario-unexpected-start',
|
|
6
|
+
metadata: {
|
|
7
|
+
stationId: 'CS-SYNTHETIC-008',
|
|
8
|
+
ocppVersion: '1.6',
|
|
9
|
+
source: 'synthetic-scenario',
|
|
10
|
+
description: 'Station sends StartTransaction without BootNotification or Authorize — transaction started without proper initialization.',
|
|
11
|
+
},
|
|
12
|
+
events: [
|
|
13
|
+
{
|
|
14
|
+
timestamp: '2024-01-15T22:00:00.000Z',
|
|
15
|
+
direction: 'CS_TO_CSMS',
|
|
16
|
+
message: [
|
|
17
|
+
2,
|
|
18
|
+
'msg-001',
|
|
19
|
+
'StartTransaction',
|
|
20
|
+
{
|
|
21
|
+
connectorId: 1,
|
|
22
|
+
idTag: 'SYNTHETIC-TAG-008',
|
|
23
|
+
meterStart: 0,
|
|
24
|
+
timestamp: '2024-01-15T22:00:00.000Z',
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
timestamp: '2024-01-15T22:00:00.500Z',
|
|
30
|
+
direction: 'CSMS_TO_CS',
|
|
31
|
+
message: [
|
|
32
|
+
3,
|
|
33
|
+
'msg-001',
|
|
34
|
+
{
|
|
35
|
+
transactionId: 100008,
|
|
36
|
+
idTagInfo: {
|
|
37
|
+
status: 'Accepted',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
timestamp: '2024-01-15T22:00:01.000Z',
|
|
44
|
+
direction: 'CS_TO_CSMS',
|
|
45
|
+
message: [
|
|
46
|
+
2,
|
|
47
|
+
'msg-002',
|
|
48
|
+
'StatusNotification',
|
|
49
|
+
{
|
|
50
|
+
connectorId: 1,
|
|
51
|
+
status: 'Charging',
|
|
52
|
+
errorCode: 'NoError',
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
timestamp: '2024-01-15T22:00:01.500Z',
|
|
58
|
+
direction: 'CSMS_TO_CS',
|
|
59
|
+
message: [3, 'msg-002', {}],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
timestamp: '2024-01-15T22:00:10.000Z',
|
|
63
|
+
direction: 'CS_TO_CSMS',
|
|
64
|
+
message: [
|
|
65
|
+
2,
|
|
66
|
+
'msg-003',
|
|
67
|
+
'MeterValues',
|
|
68
|
+
{
|
|
69
|
+
connectorId: 1,
|
|
70
|
+
transactionId: 100008,
|
|
71
|
+
meterValue: [
|
|
72
|
+
{
|
|
73
|
+
timestamp: '2024-01-15T22:00:10.000Z',
|
|
74
|
+
sampledValue: [
|
|
75
|
+
{
|
|
76
|
+
value: '100',
|
|
77
|
+
measurand: 'Energy.Active.Import.Register',
|
|
78
|
+
unit: 'Wh',
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
timestamp: '2024-01-15T22:00:10.500Z',
|
|
88
|
+
direction: 'CSMS_TO_CS',
|
|
89
|
+
message: [3, 'msg-003', {}],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
timestamp: '2024-01-15T22:01:30.000Z',
|
|
93
|
+
direction: 'CS_TO_CSMS',
|
|
94
|
+
message: [
|
|
95
|
+
2,
|
|
96
|
+
'msg-004',
|
|
97
|
+
'StopTransaction',
|
|
98
|
+
{
|
|
99
|
+
transactionId: 100008,
|
|
100
|
+
idTag: 'SYNTHETIC-TAG-008',
|
|
101
|
+
meterStop: 100,
|
|
102
|
+
timestamp: '2024-01-15T22:01:30.000Z',
|
|
103
|
+
reason: 'EVDisconnected',
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
timestamp: '2024-01-15T22:01:30.500Z',
|
|
109
|
+
direction: 'CSMS_TO_CS',
|
|
110
|
+
message: [
|
|
111
|
+
3,
|
|
112
|
+
'msg-004',
|
|
113
|
+
{
|
|
114
|
+
idTagInfo: {
|
|
115
|
+
status: 'Accepted',
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
expectedFailures: ['UNEXPECTED_START'],
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=unexpected-start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unexpected-start.js","sourceRoot":"","sources":["../../../src/scenarios/__scenarios__/unexpected-start.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,qGAAqG;IACvG,KAAK,EAAE;QACL,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE;YACR,SAAS,EAAE,kBAAkB;YAC7B,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,oBAAoB;YAC5B,WAAW,EACT,2HAA2H;SAC9H;QACD,MAAM,EAAE;YACN;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE;oBACP,CAAC;oBACD,SAAS;oBACT,kBAAkB;oBAClB;wBACE,WAAW,EAAE,CAAC;wBACd,KAAK,EAAE,mBAAmB;wBAC1B,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,0BAA0B;qBACtC;iBACF;aACF;YACD;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE;oBACP,CAAC;oBACD,SAAS;oBACT;wBACE,aAAa,EAAE,MAAM;wBACrB,SAAS,EAAE;4BACT,MAAM,EAAE,UAAU;yBACnB;qBACF;iBACF;aACF;YACD;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE;oBACP,CAAC;oBACD,SAAS;oBACT,oBAAoB;oBACpB;wBACE,WAAW,EAAE,CAAC;wBACd,MAAM,EAAE,UAAU;wBAClB,SAAS,EAAE,SAAS;qBACrB;iBACF;aACF;YACD;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;aAC5B;YACD;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE;oBACP,CAAC;oBACD,SAAS;oBACT,aAAa;oBACb;wBACE,WAAW,EAAE,CAAC;wBACd,aAAa,EAAE,MAAM;wBACrB,UAAU,EAAE;4BACV;gCACE,SAAS,EAAE,0BAA0B;gCACrC,YAAY,EAAE;oCACZ;wCACE,KAAK,EAAE,KAAK;wCACZ,SAAS,EAAE,+BAA+B;wCAC1C,IAAI,EAAE,IAAI;qCACX;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;YACD;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;aAC5B;YACD;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE;oBACP,CAAC;oBACD,SAAS;oBACT,iBAAiB;oBACjB;wBACE,aAAa,EAAE,MAAM;wBACrB,KAAK,EAAE,mBAAmB;wBAC1B,SAAS,EAAE,GAAG;wBACd,SAAS,EAAE,0BAA0B;wBACrC,MAAM,EAAE,gBAAgB;qBACzB;iBACF;aACF;YACD;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE;oBACP,CAAC;oBACD,SAAS;oBACT;wBACE,SAAS,EAAE;4BACT,MAAM,EAAE,UAAU;yBACnB;qBACF;iBACF;aACF;SACF;KACF;IACD,gBAAgB,EAAE,CAAC,kBAAkB,CAAC;CACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unexpected-stop-reason.d.ts","sourceRoot":"","sources":["../../../src/scenarios/__scenarios__/unexpected-stop-reason.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unexpected-stop-reason.d.ts","sourceRoot":"","sources":["../../../src/scenarios/__scenarios__/unexpected-stop-reason.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAkOE"}
|
|
@@ -131,6 +131,16 @@ export default {
|
|
|
131
131
|
direction: 'CSMS_TO_CS',
|
|
132
132
|
message: [3, 'msg-005', {}],
|
|
133
133
|
},
|
|
134
|
+
{
|
|
135
|
+
timestamp: '2024-01-15T16:07:30.000Z',
|
|
136
|
+
direction: 'CS_TO_CSMS',
|
|
137
|
+
message: [2, 'msg-hb-1', 'Heartbeat', {}],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
timestamp: '2024-01-15T16:07:30.500Z',
|
|
141
|
+
direction: 'CSMS_TO_CS',
|
|
142
|
+
message: [3, 'msg-hb-1', { currentTime: '2024-01-15T16:07:30.500Z' }],
|
|
143
|
+
},
|
|
134
144
|
{
|
|
135
145
|
timestamp: '2024-01-15T16:20:00.000Z',
|
|
136
146
|
direction: 'CS_TO_CSMS',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unexpected-stop-reason.js","sourceRoot":"","sources":["../../../src/scenarios/__scenarios__/unexpected-stop-reason.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unexpected-stop-reason.js","sourceRoot":"","sources":["../../../src/scenarios/__scenarios__/unexpected-stop-reason.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
trace: {
|
|
5
|
+
traceId: string;
|
|
6
|
+
metadata: {
|
|
7
|
+
stationId: string;
|
|
8
|
+
ocppVersion: string;
|
|
9
|
+
source: string;
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
events: ({
|
|
13
|
+
timestamp: string;
|
|
14
|
+
direction: string;
|
|
15
|
+
message: (string | number | {
|
|
16
|
+
chargePointVendor: string;
|
|
17
|
+
chargePointModel: string;
|
|
18
|
+
chargePointSerialNumber: string;
|
|
19
|
+
firmwareVersion: string;
|
|
20
|
+
})[];
|
|
21
|
+
} | {
|
|
22
|
+
timestamp: string;
|
|
23
|
+
direction: string;
|
|
24
|
+
message: {}[];
|
|
25
|
+
} | {
|
|
26
|
+
timestamp: string;
|
|
27
|
+
direction: string;
|
|
28
|
+
message: (string | number | {
|
|
29
|
+
currentTime: string;
|
|
30
|
+
})[];
|
|
31
|
+
})[];
|
|
32
|
+
};
|
|
33
|
+
expectedFailures: string[];
|
|
34
|
+
assertions: ({
|
|
35
|
+
type: string;
|
|
36
|
+
params: {
|
|
37
|
+
code: string;
|
|
38
|
+
severity: string;
|
|
39
|
+
min?: undefined;
|
|
40
|
+
max?: undefined;
|
|
41
|
+
};
|
|
42
|
+
} | {
|
|
43
|
+
type: string;
|
|
44
|
+
params: {
|
|
45
|
+
code: string;
|
|
46
|
+
min: number;
|
|
47
|
+
max: number;
|
|
48
|
+
severity?: undefined;
|
|
49
|
+
};
|
|
50
|
+
})[];
|
|
51
|
+
};
|
|
52
|
+
export default _default;
|
|
53
|
+
//# sourceMappingURL=unresponsive-csms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unresponsive-csms.d.ts","sourceRoot":"","sources":["../../../src/scenarios/__scenarios__/unresponsive-csms.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAoDE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
name: 'unresponsive-csms',
|
|
3
|
+
description: 'BootNotification Call sent but CSMS never responds — no CallResult or CallError. Expects UNRESPONSIVE_CSMS failure. Uses failure_severity and failure_count assertions.',
|
|
4
|
+
trace: {
|
|
5
|
+
traceId: 'scenario-unresponsive-csms',
|
|
6
|
+
metadata: {
|
|
7
|
+
stationId: 'CS-SYNTHETIC-015',
|
|
8
|
+
ocppVersion: '1.6',
|
|
9
|
+
source: 'synthetic-scenario',
|
|
10
|
+
description: 'CSMS never responds to BootNotification — unresponsive CSMS.',
|
|
11
|
+
},
|
|
12
|
+
events: [
|
|
13
|
+
{
|
|
14
|
+
timestamp: '2024-01-15T08:00:00.000Z',
|
|
15
|
+
direction: 'CS_TO_CSMS',
|
|
16
|
+
message: [
|
|
17
|
+
2,
|
|
18
|
+
'msg-001',
|
|
19
|
+
'BootNotification',
|
|
20
|
+
{
|
|
21
|
+
chargePointVendor: 'SyntheticVendor',
|
|
22
|
+
chargePointModel: 'SM-100',
|
|
23
|
+
chargePointSerialNumber: 'CS-SYNTHETIC-015',
|
|
24
|
+
firmwareVersion: '1.0.0',
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
// No CallResult for msg-001 — CSMS unresponsive
|
|
29
|
+
{
|
|
30
|
+
timestamp: '2024-01-15T08:00:05.000Z',
|
|
31
|
+
direction: 'CS_TO_CSMS',
|
|
32
|
+
message: [2, 'msg-002', 'Heartbeat', {}],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
timestamp: '2024-01-15T08:00:05.500Z',
|
|
36
|
+
direction: 'CSMS_TO_CS',
|
|
37
|
+
message: [3, 'msg-002', { currentTime: '2024-01-15T08:00:05.500Z' }],
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
expectedFailures: ['UNRESPONSIVE_CSMS'],
|
|
42
|
+
assertions: [
|
|
43
|
+
{
|
|
44
|
+
type: 'failure_severity',
|
|
45
|
+
params: { code: 'UNRESPONSIVE_CSMS', severity: 'critical' },
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: 'failure_count',
|
|
49
|
+
params: { code: 'UNRESPONSIVE_CSMS', min: 1, max: 1 },
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=unresponsive-csms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unresponsive-csms.js","sourceRoot":"","sources":["../../../src/scenarios/__scenarios__/unresponsive-csms.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,yKAAyK;IAC3K,KAAK,EAAE;QACL,OAAO,EAAE,4BAA4B;QACrC,QAAQ,EAAE;YACR,SAAS,EAAE,kBAAkB;YAC7B,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,oBAAoB;YAC5B,WAAW,EAAE,8DAA8D;SAC5E;QACD,MAAM,EAAE;YACN;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE;oBACP,CAAC;oBACD,SAAS;oBACT,kBAAkB;oBAClB;wBACE,iBAAiB,EAAE,iBAAiB;wBACpC,gBAAgB,EAAE,QAAQ;wBAC1B,uBAAuB,EAAE,kBAAkB;wBAC3C,eAAe,EAAE,OAAO;qBACzB;iBACF;aACF;YACD,gDAAgD;YAChD;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC;aACzC;YACD;gBACE,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;aACrE;SACF;KACF;IACD,gBAAgB,EAAE,CAAC,mBAAmB,CAAC;IACvC,UAAU,EAAE;QACV;YACE,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE;SAC5D;QACD;YACE,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;SACtD;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scenario comparison — compare two scenario evaluation results.
|
|
3
|
+
*
|
|
4
|
+
* Useful for regression testing: did the fix change the detected failures?
|
|
5
|
+
* Compare a "before" run against an "after" run to see what changed.
|
|
6
|
+
*
|
|
7
|
+
* @module @ocpp-debugkit/toolkit/scenarios
|
|
8
|
+
*/
|
|
9
|
+
import type { FailureCode, ScenarioEvalResult } from '../core/index.js';
|
|
10
|
+
/** Result of comparing two scenario evaluation reports. */
|
|
11
|
+
export interface ScenarioComparison {
|
|
12
|
+
/** Whether both scenarios passed all assertions. */
|
|
13
|
+
bothPassed: boolean;
|
|
14
|
+
/** Whether the first scenario (a) passed. */
|
|
15
|
+
aPassed: boolean;
|
|
16
|
+
/** Whether the second scenario (b) passed. */
|
|
17
|
+
bPassed: boolean;
|
|
18
|
+
/** Failure codes detected in A but not B. */
|
|
19
|
+
failuresOnlyInA: FailureCode[];
|
|
20
|
+
/** Failure codes detected in B but not A. */
|
|
21
|
+
failuresOnlyInB: FailureCode[];
|
|
22
|
+
/** Assertion results that changed (passed→failed or failed→passed). */
|
|
23
|
+
changedAssertions: {
|
|
24
|
+
assertionType: string;
|
|
25
|
+
passedInA: boolean;
|
|
26
|
+
passedInB: boolean;
|
|
27
|
+
}[];
|
|
28
|
+
/** Human-readable summary of changes. */
|
|
29
|
+
summary: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Compare two scenario evaluation results.
|
|
33
|
+
*
|
|
34
|
+
* @param a - First scenario evaluation result
|
|
35
|
+
* @param b - Second scenario evaluation result
|
|
36
|
+
* @returns A {@link ScenarioComparison} describing the differences
|
|
37
|
+
*/
|
|
38
|
+
export declare function compareScenarioReports(a: ScenarioEvalResult, b: ScenarioEvalResult): ScenarioComparison;
|
|
39
|
+
//# sourceMappingURL=compare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/scenarios/compare.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMxE,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,6CAA6C;IAC7C,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,uEAAuE;IACvE,iBAAiB,EAAE;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;KACpB,EAAE,CAAC;IACJ,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,kBAAkB,EACrB,CAAC,EAAE,kBAAkB,GACpB,kBAAkB,CAgEpB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scenario comparison — compare two scenario evaluation results.
|
|
3
|
+
*
|
|
4
|
+
* Useful for regression testing: did the fix change the detected failures?
|
|
5
|
+
* Compare a "before" run against an "after" run to see what changed.
|
|
6
|
+
*
|
|
7
|
+
* @module @ocpp-debugkit/toolkit/scenarios
|
|
8
|
+
*/
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Comparison
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
/**
|
|
13
|
+
* Compare two scenario evaluation results.
|
|
14
|
+
*
|
|
15
|
+
* @param a - First scenario evaluation result
|
|
16
|
+
* @param b - Second scenario evaluation result
|
|
17
|
+
* @returns A {@link ScenarioComparison} describing the differences
|
|
18
|
+
*/
|
|
19
|
+
export function compareScenarioReports(a, b) {
|
|
20
|
+
const aPassed = a.allPassed;
|
|
21
|
+
const bPassed = b.allPassed;
|
|
22
|
+
const bothPassed = aPassed && bPassed;
|
|
23
|
+
// Failure code diff
|
|
24
|
+
const aCodes = new Set(a.detectedFailureCodes);
|
|
25
|
+
const bCodes = new Set(b.detectedFailureCodes);
|
|
26
|
+
const failuresOnlyInA = a.detectedFailureCodes.filter((c) => !bCodes.has(c));
|
|
27
|
+
const failuresOnlyInB = b.detectedFailureCodes.filter((c) => !aCodes.has(c));
|
|
28
|
+
// Assertion diff — compare assertions at the same index
|
|
29
|
+
const maxLen = Math.max(a.assertions.length, b.assertions.length);
|
|
30
|
+
const changedAssertions = [];
|
|
31
|
+
for (let i = 0; i < maxLen; i++) {
|
|
32
|
+
const aResult = a.assertions[i];
|
|
33
|
+
const bResult = b.assertions[i];
|
|
34
|
+
if (!aResult || !bResult)
|
|
35
|
+
continue;
|
|
36
|
+
if (aResult.passed !== bResult.passed) {
|
|
37
|
+
changedAssertions.push({
|
|
38
|
+
assertionType: aResult.assertion.type,
|
|
39
|
+
passedInA: aResult.passed,
|
|
40
|
+
passedInB: bResult.passed,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Summary
|
|
45
|
+
const parts = [];
|
|
46
|
+
if (aPassed && !bPassed) {
|
|
47
|
+
parts.push('Scenario A passed but B failed — regression detected');
|
|
48
|
+
}
|
|
49
|
+
else if (!aPassed && bPassed) {
|
|
50
|
+
parts.push('Scenario A failed but B passed — improvement detected');
|
|
51
|
+
}
|
|
52
|
+
else if (bothPassed) {
|
|
53
|
+
parts.push('Both scenarios passed all assertions');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
parts.push('Both scenarios failed');
|
|
57
|
+
}
|
|
58
|
+
if (failuresOnlyInA.length > 0) {
|
|
59
|
+
parts.push(`Failures only in A: ${failuresOnlyInA.join(', ')}`);
|
|
60
|
+
}
|
|
61
|
+
if (failuresOnlyInB.length > 0) {
|
|
62
|
+
parts.push(`Failures only in B: ${failuresOnlyInB.join(', ')}`);
|
|
63
|
+
}
|
|
64
|
+
if (changedAssertions.length > 0) {
|
|
65
|
+
parts.push(`${changedAssertions.length} assertion(s) changed result`);
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
bothPassed,
|
|
69
|
+
aPassed,
|
|
70
|
+
bPassed,
|
|
71
|
+
failuresOnlyInA,
|
|
72
|
+
failuresOnlyInB,
|
|
73
|
+
changedAssertions,
|
|
74
|
+
summary: parts.join('. '),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/scenarios/compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,21 @@ declare const failedAuthScenario: Scenario;
|
|
|
10
10
|
declare const connectorFaultScenario: Scenario;
|
|
11
11
|
declare const stationOfflineScenario: Scenario;
|
|
12
12
|
declare const unexpectedStopReasonScenario: Scenario;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
declare const meterValueGapScenario: Scenario;
|
|
14
|
+
declare const invalidStopReasonScenario: Scenario;
|
|
15
|
+
declare const unexpectedStartScenario: Scenario;
|
|
16
|
+
declare const statusTransitionViolationScenario: Scenario;
|
|
17
|
+
declare const diagnosticsFailureScenario: Scenario;
|
|
18
|
+
declare const slowCsmsResponseScenario: Scenario;
|
|
19
|
+
declare const meterAnomalyScenario: Scenario;
|
|
20
|
+
declare const shortSessionScenario: Scenario;
|
|
21
|
+
declare const heartbeatIrregularScenario: Scenario;
|
|
22
|
+
declare const unresponsiveCsmsScenario: Scenario;
|
|
23
|
+
export declare const scenarios: readonly [Scenario, Scenario, Scenario, Scenario, Scenario, Scenario, Scenario, Scenario, Scenario, Scenario, Scenario, Scenario, Scenario, Scenario, Scenario];
|
|
24
|
+
export declare const scenarioNames: readonly ["normal-session", "failed-auth", "connector-fault", "station-offline", "unexpected-stop-reason", "meter-value-gap", "invalid-stop-reason", "unexpected-start", "status-transition-violation", "diagnostics-failure", "slow-csms-response", "meter-anomaly", "short-session", "heartbeat-irregular", "unresponsive-csms"];
|
|
25
|
+
export { normalSessionScenario, failedAuthScenario, connectorFaultScenario, stationOfflineScenario, unexpectedStopReasonScenario, meterValueGapScenario, invalidStopReasonScenario, unexpectedStartScenario, statusTransitionViolationScenario, diagnosticsFailureScenario, slowCsmsResponseScenario, meterAnomalyScenario, shortSessionScenario, heartbeatIrregularScenario, unresponsiveCsmsScenario, };
|
|
26
|
+
export { compareScenarioReports } from './compare.js';
|
|
27
|
+
export type { ScenarioComparison } from './compare.js';
|
|
16
28
|
/**
|
|
17
29
|
* Get a scenario by name.
|
|
18
30
|
* @returns The scenario, or undefined if not found.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scenarios/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAS,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scenarios/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAS,MAAM,kBAAkB,CAAC;AAoBxD,QAAA,MAAM,qBAAqB,EAAE,QAM5B,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,QAMzB,CAAC;AAEF,QAAA,MAAM,sBAAsB,EAAE,QAM7B,CAAC;AAMF,QAAA,MAAM,sBAAsB,EAAE,QAAgD,CAAC;AAC/E,QAAA,MAAM,4BAA4B,EAAE,QAAsD,CAAC;AAC3F,QAAA,MAAM,qBAAqB,EAAE,QAA+C,CAAC;AAC7E,QAAA,MAAM,yBAAyB,EAAE,QAAmD,CAAC;AACrF,QAAA,MAAM,uBAAuB,EAAE,QAAiD,CAAC;AACjF,QAAA,MAAM,iCAAiC,EAAE,QACS,CAAC;AACnD,QAAA,MAAM,0BAA0B,EAAE,QAAoD,CAAC;AACvF,QAAA,MAAM,wBAAwB,EAAE,QAAkD,CAAC;AACnF,QAAA,MAAM,oBAAoB,EAAE,QAA8C,CAAC;AAC3E,QAAA,MAAM,oBAAoB,EAAE,QAA8C,CAAC;AAC3E,QAAA,MAAM,0BAA0B,EAAE,QAAoD,CAAC;AACvF,QAAA,MAAM,wBAAwB,EAAE,QAAkD,CAAC;AAMnF,eAAO,MAAM,SAAS,iKAgBZ,CAAC;AAEX,eAAO,MAAM,aAAa,oUAgBhB,CAAC;AAEX,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,iCAAiC,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,GACzB,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE9D"}
|
package/dist/scenarios/index.js
CHANGED
|
@@ -7,18 +7,28 @@
|
|
|
7
7
|
import { fixtures } from '../core/index.js';
|
|
8
8
|
import stationOffline from './__scenarios__/station-offline.js';
|
|
9
9
|
import unexpectedStopReason from './__scenarios__/unexpected-stop-reason.js';
|
|
10
|
+
import meterValueGap from './__scenarios__/meter-value-gap.js';
|
|
11
|
+
import invalidStopReason from './__scenarios__/invalid-stop-reason.js';
|
|
12
|
+
import unexpectedStart from './__scenarios__/unexpected-start.js';
|
|
13
|
+
import statusTransitionViolation from './__scenarios__/status-transition-violation.js';
|
|
14
|
+
import diagnosticsFailure from './__scenarios__/diagnostics-failure.js';
|
|
15
|
+
import slowCsmsResponse from './__scenarios__/slow-csms-response.js';
|
|
16
|
+
import meterAnomaly from './__scenarios__/meter-anomaly.js';
|
|
17
|
+
import shortSession from './__scenarios__/short-session.js';
|
|
18
|
+
import heartbeatIrregular from './__scenarios__/heartbeat-irregular.js';
|
|
19
|
+
import unresponsiveCsms from './__scenarios__/unresponsive-csms.js';
|
|
10
20
|
// ---------------------------------------------------------------------------
|
|
11
21
|
// Scenarios derived from core fixtures
|
|
12
22
|
// ---------------------------------------------------------------------------
|
|
13
23
|
const normalSessionScenario = {
|
|
14
24
|
name: 'normal-session',
|
|
15
|
-
description: 'Normal charging session: boot
|
|
25
|
+
description: 'Normal charging session: boot, authorize, start transaction, meter values, stop transaction. No failures expected.',
|
|
16
26
|
trace: fixtures.normalSession,
|
|
17
27
|
expectedFailures: [],
|
|
18
28
|
};
|
|
19
29
|
const failedAuthScenario = {
|
|
20
30
|
name: 'failed-auth',
|
|
21
|
-
description: 'Failed authorization: station
|
|
31
|
+
description: 'Failed authorization: station prepares, idTag is rejected by CSMS. StartTransaction is not attempted. Expects FAILED_AUTHORIZATION failure.',
|
|
22
32
|
trace: fixtures.failedAuth,
|
|
23
33
|
expectedFailures: ['FAILED_AUTHORIZATION'],
|
|
24
34
|
};
|
|
@@ -29,10 +39,20 @@ const connectorFaultScenario = {
|
|
|
29
39
|
expectedFailures: ['CONNECTOR_FAULT'],
|
|
30
40
|
};
|
|
31
41
|
// ---------------------------------------------------------------------------
|
|
32
|
-
// Scenarios from
|
|
42
|
+
// Scenarios from fixture files
|
|
33
43
|
// ---------------------------------------------------------------------------
|
|
34
44
|
const stationOfflineScenario = stationOffline;
|
|
35
45
|
const unexpectedStopReasonScenario = unexpectedStopReason;
|
|
46
|
+
const meterValueGapScenario = meterValueGap;
|
|
47
|
+
const invalidStopReasonScenario = invalidStopReason;
|
|
48
|
+
const unexpectedStartScenario = unexpectedStart;
|
|
49
|
+
const statusTransitionViolationScenario = statusTransitionViolation;
|
|
50
|
+
const diagnosticsFailureScenario = diagnosticsFailure;
|
|
51
|
+
const slowCsmsResponseScenario = slowCsmsResponse;
|
|
52
|
+
const meterAnomalyScenario = meterAnomaly;
|
|
53
|
+
const shortSessionScenario = shortSession;
|
|
54
|
+
const heartbeatIrregularScenario = heartbeatIrregular;
|
|
55
|
+
const unresponsiveCsmsScenario = unresponsiveCsms;
|
|
36
56
|
// ---------------------------------------------------------------------------
|
|
37
57
|
// Registry
|
|
38
58
|
// ---------------------------------------------------------------------------
|
|
@@ -42,6 +62,16 @@ export const scenarios = [
|
|
|
42
62
|
connectorFaultScenario,
|
|
43
63
|
stationOfflineScenario,
|
|
44
64
|
unexpectedStopReasonScenario,
|
|
65
|
+
meterValueGapScenario,
|
|
66
|
+
invalidStopReasonScenario,
|
|
67
|
+
unexpectedStartScenario,
|
|
68
|
+
statusTransitionViolationScenario,
|
|
69
|
+
diagnosticsFailureScenario,
|
|
70
|
+
slowCsmsResponseScenario,
|
|
71
|
+
meterAnomalyScenario,
|
|
72
|
+
shortSessionScenario,
|
|
73
|
+
heartbeatIrregularScenario,
|
|
74
|
+
unresponsiveCsmsScenario,
|
|
45
75
|
];
|
|
46
76
|
export const scenarioNames = [
|
|
47
77
|
'normal-session',
|
|
@@ -49,8 +79,19 @@ export const scenarioNames = [
|
|
|
49
79
|
'connector-fault',
|
|
50
80
|
'station-offline',
|
|
51
81
|
'unexpected-stop-reason',
|
|
82
|
+
'meter-value-gap',
|
|
83
|
+
'invalid-stop-reason',
|
|
84
|
+
'unexpected-start',
|
|
85
|
+
'status-transition-violation',
|
|
86
|
+
'diagnostics-failure',
|
|
87
|
+
'slow-csms-response',
|
|
88
|
+
'meter-anomaly',
|
|
89
|
+
'short-session',
|
|
90
|
+
'heartbeat-irregular',
|
|
91
|
+
'unresponsive-csms',
|
|
52
92
|
];
|
|
53
|
-
export { normalSessionScenario, failedAuthScenario, connectorFaultScenario, stationOfflineScenario, unexpectedStopReasonScenario, };
|
|
93
|
+
export { normalSessionScenario, failedAuthScenario, connectorFaultScenario, stationOfflineScenario, unexpectedStopReasonScenario, meterValueGapScenario, invalidStopReasonScenario, unexpectedStartScenario, statusTransitionViolationScenario, diagnosticsFailureScenario, slowCsmsResponseScenario, meterAnomalyScenario, shortSessionScenario, heartbeatIrregularScenario, unresponsiveCsmsScenario, };
|
|
94
|
+
export { compareScenarioReports } from './compare.js';
|
|
54
95
|
/**
|
|
55
96
|
* Get a scenario by name.
|
|
56
97
|
* @returns The scenario, or undefined if not found.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scenarios/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,cAAc,MAAM,oCAAoC,CAAC;AAChE,OAAO,oBAAoB,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scenarios/index.ts"],"names":[],"mappings":"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"}
|