cactus-test-definitions 1.0.0__py3-none-any.whl

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.

Potentially problematic release.


This version of cactus-test-definitions might be problematic. Click here for more details.

Files changed (135) hide show
  1. cactus_test_definitions/__init__.py +39 -0
  2. cactus_test_definitions/__pycache__/__init__.cpython-312.pyc +0 -0
  3. cactus_test_definitions/__pycache__/actions.cpython-312.pyc +0 -0
  4. cactus_test_definitions/__pycache__/checks.cpython-312.pyc +0 -0
  5. cactus_test_definitions/__pycache__/csipaus.cpython-312.pyc +0 -0
  6. cactus_test_definitions/__pycache__/errors.cpython-312.pyc +0 -0
  7. cactus_test_definitions/__pycache__/events.cpython-312.pyc +0 -0
  8. cactus_test_definitions/__pycache__/parameters.cpython-312.pyc +0 -0
  9. cactus_test_definitions/__pycache__/schema.cpython-312.pyc +0 -0
  10. cactus_test_definitions/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
  11. cactus_test_definitions/__pycache__/test_procedures.cpython-312.pyc +0 -0
  12. cactus_test_definitions/__pycache__/variable_expressions.cpython-312.pyc +0 -0
  13. cactus_test_definitions/__pycache__/version.cpython-312.pyc +0 -0
  14. cactus_test_definitions/client/__init__.py +26 -0
  15. cactus_test_definitions/client/__pycache__/__init__.cpython-312.pyc +0 -0
  16. cactus_test_definitions/client/__pycache__/actions.cpython-312.pyc +0 -0
  17. cactus_test_definitions/client/__pycache__/checks.cpython-312.pyc +0 -0
  18. cactus_test_definitions/client/__pycache__/events.cpython-312.pyc +0 -0
  19. cactus_test_definitions/client/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
  20. cactus_test_definitions/client/actions.py +98 -0
  21. cactus_test_definitions/client/checks.py +117 -0
  22. cactus_test_definitions/client/events.py +71 -0
  23. cactus_test_definitions/client/procedures/ALL-01.yaml +94 -0
  24. cactus_test_definitions/client/procedures/ALL-02.yaml +108 -0
  25. cactus_test_definitions/client/procedures/ALL-03-REJ.yaml +69 -0
  26. cactus_test_definitions/client/procedures/ALL-03.yaml +110 -0
  27. cactus_test_definitions/client/procedures/ALL-04.yaml +69 -0
  28. cactus_test_definitions/client/procedures/ALL-05.yaml +117 -0
  29. cactus_test_definitions/client/procedures/ALL-06.yaml +128 -0
  30. cactus_test_definitions/client/procedures/ALL-07.yaml +76 -0
  31. cactus_test_definitions/client/procedures/ALL-08.yaml +78 -0
  32. cactus_test_definitions/client/procedures/ALL-09.yaml +103 -0
  33. cactus_test_definitions/client/procedures/ALL-10.yaml +128 -0
  34. cactus_test_definitions/client/procedures/ALL-11.yaml +111 -0
  35. cactus_test_definitions/client/procedures/ALL-12.yaml +108 -0
  36. cactus_test_definitions/client/procedures/ALL-13.yaml +112 -0
  37. cactus_test_definitions/client/procedures/ALL-14.yaml +165 -0
  38. cactus_test_definitions/client/procedures/ALL-15.yaml +109 -0
  39. cactus_test_definitions/client/procedures/ALL-16.yaml +102 -0
  40. cactus_test_definitions/client/procedures/ALL-17.yaml +63 -0
  41. cactus_test_definitions/client/procedures/ALL-18.yaml +288 -0
  42. cactus_test_definitions/client/procedures/ALL-19.yaml +78 -0
  43. cactus_test_definitions/client/procedures/ALL-20.yaml +136 -0
  44. cactus_test_definitions/client/procedures/ALL-21.yaml +203 -0
  45. cactus_test_definitions/client/procedures/ALL-22.yaml +82 -0
  46. cactus_test_definitions/client/procedures/ALL-23.yaml +158 -0
  47. cactus_test_definitions/client/procedures/ALL-24.yaml +132 -0
  48. cactus_test_definitions/client/procedures/ALL-25.yaml +136 -0
  49. cactus_test_definitions/client/procedures/ALL-26.yaml +147 -0
  50. cactus_test_definitions/client/procedures/ALL-27.yaml +144 -0
  51. cactus_test_definitions/client/procedures/ALL-28.yaml +274 -0
  52. cactus_test_definitions/client/procedures/ALL-29.yaml +87 -0
  53. cactus_test_definitions/client/procedures/ALL-30.yaml +188 -0
  54. cactus_test_definitions/client/procedures/BES-01.yaml +136 -0
  55. cactus_test_definitions/client/procedures/BES-02.yaml +137 -0
  56. cactus_test_definitions/client/procedures/BES-03.yaml +135 -0
  57. cactus_test_definitions/client/procedures/BES-04.yaml +228 -0
  58. cactus_test_definitions/client/procedures/DRA-01.yaml +54 -0
  59. cactus_test_definitions/client/procedures/DRA-02.yaml +64 -0
  60. cactus_test_definitions/client/procedures/DRD-01.yaml +667 -0
  61. cactus_test_definitions/client/procedures/DRL-01.yaml +327 -0
  62. cactus_test_definitions/client/procedures/GEN-01.yaml +73 -0
  63. cactus_test_definitions/client/procedures/GEN-02.yaml +72 -0
  64. cactus_test_definitions/client/procedures/GEN-03.yaml +160 -0
  65. cactus_test_definitions/client/procedures/GEN-04.yaml +161 -0
  66. cactus_test_definitions/client/procedures/GEN-05.yaml +89 -0
  67. cactus_test_definitions/client/procedures/GEN-06.yaml +90 -0
  68. cactus_test_definitions/client/procedures/GEN-07.yaml +145 -0
  69. cactus_test_definitions/client/procedures/GEN-08.yaml +145 -0
  70. cactus_test_definitions/client/procedures/GEN-09.yaml +117 -0
  71. cactus_test_definitions/client/procedures/GEN-10.yaml +737 -0
  72. cactus_test_definitions/client/procedures/GEN-11.yaml +376 -0
  73. cactus_test_definitions/client/procedures/GEN-12.yaml +376 -0
  74. cactus_test_definitions/client/procedures/GEN-13.yaml +70 -0
  75. cactus_test_definitions/client/procedures/LOA-01.yaml +73 -0
  76. cactus_test_definitions/client/procedures/LOA-02.yaml +73 -0
  77. cactus_test_definitions/client/procedures/LOA-03.yaml +160 -0
  78. cactus_test_definitions/client/procedures/LOA-04.yaml +161 -0
  79. cactus_test_definitions/client/procedures/LOA-05.yaml +85 -0
  80. cactus_test_definitions/client/procedures/LOA-06.yaml +85 -0
  81. cactus_test_definitions/client/procedures/LOA-07.yaml +145 -0
  82. cactus_test_definitions/client/procedures/LOA-08.yaml +145 -0
  83. cactus_test_definitions/client/procedures/LOA-09.yaml +117 -0
  84. cactus_test_definitions/client/procedures/LOA-10.yaml +739 -0
  85. cactus_test_definitions/client/procedures/LOA-11.yaml +376 -0
  86. cactus_test_definitions/client/procedures/LOA-12.yaml +376 -0
  87. cactus_test_definitions/client/procedures/LOA-13.yaml +71 -0
  88. cactus_test_definitions/client/procedures/MUL-01.yaml +92 -0
  89. cactus_test_definitions/client/procedures/MUL-02.yaml +80 -0
  90. cactus_test_definitions/client/procedures/MUL-03.yaml +78 -0
  91. cactus_test_definitions/client/procedures/OPT-1-IN-BAND.yaml +115 -0
  92. cactus_test_definitions/client/procedures/OPT-1-OUT-OF-BAND.yaml +101 -0
  93. cactus_test_definitions/client/procedures/test-procedures.yaml +75 -0
  94. cactus_test_definitions/client/test_procedures.py +296 -0
  95. cactus_test_definitions/csipaus.py +81 -0
  96. cactus_test_definitions/errors.py +15 -0
  97. cactus_test_definitions/parameters.py +149 -0
  98. cactus_test_definitions/py.typed +0 -0
  99. cactus_test_definitions/schema.py +22 -0
  100. cactus_test_definitions/server/README.md +170 -0
  101. cactus_test_definitions/server/__pycache__/actions.cpython-312.pyc +0 -0
  102. cactus_test_definitions/server/__pycache__/checks.cpython-312.pyc +0 -0
  103. cactus_test_definitions/server/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
  104. cactus_test_definitions/server/actions.py +139 -0
  105. cactus_test_definitions/server/checks.py +117 -0
  106. cactus_test_definitions/server/procedures/S-ALL-01.yaml +42 -0
  107. cactus_test_definitions/server/procedures/S-ALL-02.yaml +65 -0
  108. cactus_test_definitions/server/procedures/S-ALL-03.yaml +65 -0
  109. cactus_test_definitions/server/procedures/S-ALL-04.yaml +137 -0
  110. cactus_test_definitions/server/procedures/S-ALL-05.yaml +111 -0
  111. cactus_test_definitions/server/procedures/S-OPT-01.yaml +42 -0
  112. cactus_test_definitions/server/procedures/S-OPT-02.yaml +40 -0
  113. cactus_test_definitions/server/procedures/S-OPT-03.yaml +44 -0
  114. cactus_test_definitions/server/procedures/S-OPT-04.yaml +32 -0
  115. cactus_test_definitions/server/procedures/test-procedures.yaml +14 -0
  116. cactus_test_definitions/server/test_procedures.py +183 -0
  117. cactus_test_definitions/variable_expressions.py +419 -0
  118. cactus_test_definitions-1.0.0.dist-info/METADATA +288 -0
  119. cactus_test_definitions-1.0.0.dist-info/RECORD +135 -0
  120. cactus_test_definitions-1.0.0.dist-info/WHEEL +5 -0
  121. cactus_test_definitions-1.0.0.dist-info/licenses/LICENSE.txt +22 -0
  122. cactus_test_definitions-1.0.0.dist-info/top_level.txt +2 -0
  123. tests/__init__.py +0 -0
  124. tests/unit/__init__.py +0 -0
  125. tests/unit/client/__init__.py +0 -0
  126. tests/unit/client/test_actions.py +72 -0
  127. tests/unit/client/test_checks.py +47 -0
  128. tests/unit/client/test_config.py +61 -0
  129. tests/unit/client/test_events.py +36 -0
  130. tests/unit/client/test_test_procedures.py +150 -0
  131. tests/unit/server/__init__.py +0 -0
  132. tests/unit/server/test_test_procedures.py +86 -0
  133. tests/unit/test_csipaus.py +49 -0
  134. tests/unit/test_parameters.py +197 -0
  135. tests/unit/test_variable_expressions.py +402 -0
@@ -0,0 +1,228 @@
1
+ Description: Storage control with export limits - opModStorageTargetW with opModExpLimW
2
+ Category: Control
3
+ Classes:
4
+ - L
5
+
6
+ TargetVersions:
7
+ - v1.3-beta/storage
8
+
9
+ Criteria:
10
+ checks:
11
+ - type: all-steps-complete
12
+ parameters: {}
13
+
14
+ Preconditions:
15
+ init_actions:
16
+ - type: set-comms-rate
17
+ parameters:
18
+ dcap_poll_seconds: 60
19
+ edev_list_poll_seconds: 60
20
+ fsa_list_poll_seconds: 60
21
+ der_list_poll_seconds: 60
22
+ derp_list_poll_seconds: 60
23
+ mup_post_seconds: 60
24
+ actions:
25
+ - type: set-default-der-control
26
+ parameters:
27
+ opModExpLimW: 1500
28
+ - type: create-der-control
29
+ parameters:
30
+ start: $(now + '300 seconds')
31
+ duration_seconds: 900
32
+ opModStorageTargetW: $(rtgMaxDischargeRateW)
33
+ opModExpLimW: $(2 * rtgMaxDischargeRateW)
34
+ checks:
35
+ - type: end-device-contents
36
+ parameters: {}
37
+ - type: der-capability-contents
38
+ parameters: {
39
+ "rtgMaxChargeRateW": "$(this == rtgMaxVA)",
40
+ "rtgMaxDischargeRateW": "$(this == rtgMaxVA)",
41
+ }
42
+ # Confirm stored energy requirement (which should contain 50% charge upon inspection)
43
+ - type: readings-der-stored-energy
44
+ parameters: {
45
+ "minimum_count": 1
46
+ }
47
+
48
+ Steps:
49
+ # Client discovers control for opModStorageTargetW and opModExpLimW
50
+ GET-DERC-1:
51
+ event:
52
+ type: GET-request-received
53
+ parameters:
54
+ endpoint: /edev/1/derp/1/derc
55
+ actions:
56
+ - type: enable-steps
57
+ parameters:
58
+ steps:
59
+ - WAIT-CONTROL-END-1
60
+ - type: remove-steps
61
+ parameters:
62
+ steps:
63
+ - GET-DERC-1
64
+
65
+ # Waits for the new control to finish (with a bit of overtime)
66
+ WAIT-CONTROL-END-1:
67
+ event:
68
+ type: wait
69
+ parameters:
70
+ duration_seconds: 1260
71
+ actions:
72
+ - type: enable-steps
73
+ parameters:
74
+ steps:
75
+ - GET-DERC-2
76
+ - type: remove-steps
77
+ parameters:
78
+ steps:
79
+ - WAIT-CONTROL-END-1
80
+
81
+ # Client discovers a new control for opModStorageTargetW and opModExpLimW
82
+ GET-DERC-2:
83
+ event:
84
+ type: GET-request-received
85
+ parameters:
86
+ endpoint: /edev/1/derp/1/derc
87
+ actions:
88
+ - type: create-der-control
89
+ parameters:
90
+ start: $(now + '300 seconds')
91
+ duration_seconds: 900
92
+ opModStorageTargetW: $(rtgMaxDischargeRateW)
93
+ opModExpLimW: $(0.5 * rtgMaxDischargeRateW)
94
+ - type: enable-steps
95
+ parameters:
96
+ steps:
97
+ - WAIT-CONTROL-END-2
98
+ - type: remove-steps
99
+ parameters:
100
+ steps:
101
+ - GET-DERC-2
102
+
103
+ # Waits for the new control to finish (with a bit of overtime)
104
+ WAIT-CONTROL-END-2:
105
+ event:
106
+ type: wait
107
+ parameters:
108
+ duration_seconds: 1260
109
+ actions:
110
+ - type: enable-steps
111
+ parameters:
112
+ steps:
113
+ - GET-DERC-3
114
+ - type: remove-steps
115
+ parameters:
116
+ steps:
117
+ - WAIT-CONTROL-END-2
118
+
119
+ # On this poll, client will discover negative value storage target control
120
+ GET-DERC-3:
121
+ event:
122
+ type: GET-request-received
123
+ parameters:
124
+ endpoint: /edev/1/derp/1/derc
125
+ actions:
126
+ - type: create-der-control
127
+ parameters:
128
+ start: $(now + '300 seconds')
129
+ duration_seconds: 900
130
+ opModStorageTargetW: $(0 - rtgMaxChargeRateW) # Hack to obtain negative direction control
131
+ opModExpLimW: $(0.5 * rtgMaxDischargeRateW)
132
+ - type: enable-steps
133
+ parameters:
134
+ steps:
135
+ - WAIT-CONTROL-END-3
136
+ - type: remove-steps
137
+ parameters:
138
+ steps:
139
+ - GET-DERC-3
140
+
141
+ # Waits for the new control to finish (with a bit of overtime)
142
+ WAIT-CONTROL-END-3:
143
+ event:
144
+ type: wait
145
+ parameters:
146
+ duration_seconds: 1260
147
+ actions:
148
+ - type: enable-steps
149
+ parameters:
150
+ steps:
151
+ - GET-DERC-4
152
+ - type: remove-steps
153
+ parameters:
154
+ steps:
155
+ - WAIT-CONTROL-END-3
156
+
157
+ # On this poll, client will discover zero value storage target control
158
+ GET-DERC-4:
159
+ event:
160
+ type: GET-request-received
161
+ parameters:
162
+ endpoint: /edev/1/derp/1/derc
163
+ actions:
164
+ - type: create-der-control
165
+ parameters:
166
+ start: $(now + '300 seconds')
167
+ duration_seconds: 900
168
+ opModStorageTargetW: 0
169
+ opModExpLimW: 0
170
+ - type: enable-steps
171
+ parameters:
172
+ steps:
173
+ - WAIT-CONTROL-END-4
174
+ - type: remove-steps
175
+ parameters:
176
+ steps:
177
+ - GET-DERC-4
178
+
179
+ # Waits for the new control to finish (with a bit of overtime)
180
+ WAIT-CONTROL-END-4:
181
+ event:
182
+ type: wait
183
+ parameters:
184
+ duration_seconds: 1260
185
+ actions:
186
+ - type: enable-steps
187
+ parameters:
188
+ steps:
189
+ - GET-DERC-5
190
+ - type: remove-steps
191
+ parameters:
192
+ steps:
193
+ - WAIT-CONTROL-END-4
194
+
195
+ # On this poll, client will discover negative storage target control
196
+ GET-DERC-5:
197
+ event:
198
+ type: GET-request-received
199
+ parameters:
200
+ endpoint: /edev/1/derp/1/derc
201
+ actions:
202
+ - type: create-der-control
203
+ parameters:
204
+ start: $(now + '300 seconds')
205
+ duration_seconds: 900
206
+ opModStorageTargetW: $(0.3 * rtgMaxDischargeRateW)
207
+ opModExpLimW: $(rtgMaxDischargeRateW)
208
+ - type: enable-steps
209
+ parameters:
210
+ steps:
211
+ - WAIT-CONTROL-END-5
212
+ - type: remove-steps
213
+ parameters:
214
+ steps:
215
+ - GET-DERC-5
216
+
217
+ # Waits for the new control to finish (with a bit of overtime)
218
+ WAIT-CONTROL-END-5:
219
+ event:
220
+ type: wait
221
+ parameters:
222
+ duration_seconds: 1260
223
+ actions:
224
+ - type: remove-steps
225
+ parameters:
226
+ steps:
227
+ - WAIT-CONTROL-END-5
228
+
@@ -0,0 +1,54 @@
1
+ Description: Configuration
2
+ Category: Demand Response
3
+ Classes:
4
+ - DR-A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+ - v1.3-beta/storage
9
+
10
+
11
+ Criteria:
12
+ checks:
13
+ - type: all-steps-complete
14
+ parameters: {}
15
+ - type: end-device-contents
16
+ parameters:
17
+ deviceCategory_anyset: '20098' # any of bits 3, 4, 7 and 17 being set (for the device type)
18
+ - type: der-capability-contents
19
+ parameters:
20
+ modesSupported_set: '80' # bit 7 is set - opModFixedW.
21
+
22
+ Preconditions:
23
+ immediate_start: true # There will be no "init" phase - all interactions will be immediately logged against the test
24
+
25
+ Steps:
26
+
27
+ # The test will "start" once the DER list is fetched (signalling the end of ALL-01/ALL-02 discovery)
28
+ GET-DER:
29
+ event:
30
+ type: GET-request-received
31
+ parameters:
32
+ endpoint: /edev/1/der
33
+ actions:
34
+ - type: enable-steps
35
+ parameters:
36
+ steps:
37
+ - PUT-DER-CAPABILITY
38
+ - type: remove-steps
39
+ parameters:
40
+ steps:
41
+ - GET-DER
42
+
43
+ PUT-DER-CAPABILITY:
44
+ event:
45
+ type: PUT-request-received
46
+ parameters:
47
+ endpoint: /edev/1/der/1/dercap
48
+ actions:
49
+ - type: remove-steps
50
+ parameters:
51
+ steps:
52
+ - PUT-DER-CAPABILITY
53
+
54
+
@@ -0,0 +1,64 @@
1
+ Description: Disconnect Instruction
2
+ Category: Demand Response
3
+ Classes:
4
+ - DR-L
5
+ - DR-G
6
+
7
+ TargetVersions:
8
+ - v1.2
9
+ - v1.3-beta/storage
10
+
11
+ Criteria:
12
+ checks:
13
+ - type: all-steps-complete
14
+ parameters: {}
15
+
16
+ Preconditions:
17
+ checks:
18
+ - type: end-device-contents
19
+ parameters: {}
20
+ - type: der-settings-contents
21
+ parameters: {}
22
+ instructions:
23
+ - The controlled device is connected to the grid and consuming/generating power of at least 50% of its nameplate rating
24
+
25
+ Steps:
26
+
27
+ # (a)
28
+ GET-DERC:
29
+ event:
30
+ type: GET-request-received
31
+ parameters:
32
+ endpoint: /edev/1/derp/1/derc
33
+ actions:
34
+ - type: create-der-control
35
+ parameters:
36
+ start: $(now)
37
+ duration_seconds: 60
38
+ opModConnect: false
39
+ - type: enable-steps
40
+ parameters:
41
+ steps:
42
+ - PUT-DERSTATUS
43
+ - type: remove-steps
44
+ parameters:
45
+ steps:
46
+ - GET-DERC
47
+
48
+ # (b)
49
+ PUT-DERSTATUS:
50
+ event:
51
+ type: PUT-request-received
52
+ parameters:
53
+ endpoint: /edev/1/der/1/ders
54
+ serve_request_first: true # Run this AFTER server receives the request
55
+ checks:
56
+ type: der-status-contents
57
+ parameters:
58
+ alarmStatus: 0
59
+ operationalModeStatus: 100
60
+ actions:
61
+ - type: remove-steps
62
+ parameters:
63
+ steps:
64
+ - PUT-DERSTATUS