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,160 @@
1
+ Description: Default Control – Import Limit
2
+ Category: Control
3
+ Classes:
4
+ - G
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+ - v1.3-beta/storage
9
+
10
+ Criteria:
11
+ checks:
12
+ - type: all-steps-complete
13
+ parameters: {}
14
+
15
+ Preconditions:
16
+ init_actions:
17
+ - type: set-comms-rate
18
+ parameters:
19
+ dcap_poll_seconds: 60
20
+ edev_list_poll_seconds: 60
21
+ fsa_list_poll_seconds: 60
22
+ der_list_poll_seconds: 60
23
+ derp_list_poll_seconds: 60
24
+ mup_post_seconds: 60
25
+ checks:
26
+ - type: end-device-contents
27
+ parameters: {}
28
+ - type: der-settings-contents
29
+ parameters: {}
30
+ actions:
31
+ - type: create-der-control
32
+ parameters:
33
+ start: $(now)
34
+ duration_seconds: 900
35
+ opModImpLimW: $(setMaxW * 2)
36
+ instructions:
37
+ - DER shall be importing at the connection point at least 50% of its active power rating.
38
+
39
+ Steps:
40
+
41
+ # (a, b)
42
+ GET-DEFAULT-DERC:
43
+ event:
44
+ type: GET-request-received
45
+ parameters:
46
+ endpoint: /edev/1/derp/1/dderc
47
+ actions:
48
+ - type: set-default-der-control
49
+ parameters:
50
+ opModImpLimW: $(setMaxW * 0.3)
51
+ - type: enable-steps
52
+ parameters:
53
+ steps:
54
+ - GET-DERC-1
55
+ - type: remove-steps
56
+ parameters:
57
+ steps:
58
+ - GET-DEFAULT-DERC
59
+
60
+ # (b, c, d) This will be the first poll after client has received the defaults
61
+ # the client will see the existing control but it will be cancelled immediately after
62
+ GET-DERC-1:
63
+ event:
64
+ type: GET-request-received
65
+ parameters:
66
+ endpoint: /edev/1/derp/1/derc
67
+ serve_request_first: true # Run this AFTER server receives the request
68
+ actions:
69
+ - type: cancel-active-der-controls
70
+ parameters: {}
71
+ - type: enable-steps
72
+ parameters:
73
+ steps:
74
+ - GET-DERC-2
75
+ - type: remove-steps
76
+ parameters:
77
+ steps:
78
+ - GET-DERC-1
79
+
80
+ # (d, e) On this poll, client will discover control was cancelled and a new control will be added at 200% of setMaxW
81
+ GET-DERC-2:
82
+ event:
83
+ type: GET-request-received
84
+ parameters:
85
+ endpoint: /edev/1/derp/1/derc
86
+ serve_request_first: true # Run this AFTER server receives the request
87
+ actions:
88
+ - type: create-der-control
89
+ parameters:
90
+ start: $(now)
91
+ duration_seconds: 600
92
+ opModImpLimW: $(setMaxW * 2)
93
+ - type: enable-steps
94
+ parameters:
95
+ steps:
96
+ - WAIT-CONTROL-END
97
+ - type: remove-steps
98
+ parameters:
99
+ steps:
100
+ - GET-DERC-2
101
+
102
+ # (f, g) Waits for the new control to finish (with a bit of overtime)
103
+ WAIT-CONTROL-END:
104
+ event:
105
+ type: wait
106
+ parameters:
107
+ duration_seconds: 660
108
+ actions:
109
+ - type: enable-steps
110
+ parameters:
111
+ steps:
112
+ - GET-DERC-3
113
+ - type: remove-steps
114
+ parameters:
115
+ steps:
116
+ - WAIT-CONTROL-END
117
+ instructions:
118
+ - DER should ramp down import to 30% at the rate of setGradW (default 0.27%/s)
119
+ - DER should then discover a new control and then ramp up to unconstrained at the rate of setGradW (default 0.27%/s)
120
+ - Upon control completion, DER should then ramp down to 30% at the rate of setGradW (default 0.27%/s)
121
+
122
+ # (h) On this poll, client will discover control the DefaultDERControl is cancelled and a new 0W control is in place
123
+ GET-DERC-3:
124
+ event:
125
+ type: GET-request-received
126
+ parameters:
127
+ endpoint: /edev/1/derp/1/derc
128
+ actions:
129
+ - type: create-der-control
130
+ parameters:
131
+ start: $(now)
132
+ duration_seconds: 600
133
+ opModImpLimW: 0
134
+ - type: set-default-der-control
135
+ parameters:
136
+ cancelled: true
137
+ - type: enable-steps
138
+ parameters:
139
+ steps:
140
+ - WAIT-TEST-END
141
+ - type: remove-steps
142
+ parameters:
143
+ steps:
144
+ - GET-DERC-3
145
+
146
+
147
+ WAIT-TEST-END:
148
+ event:
149
+ type: wait
150
+ parameters:
151
+ duration_seconds: 120
152
+ actions:
153
+ - type: remove-steps
154
+ parameters:
155
+ steps:
156
+ - WAIT-TEST-END
157
+ - type: finish-test
158
+ parameters: {}
159
+ instructions:
160
+ - DER shall ramp down import to 0W at the rate of setGradW (default 0.27%/s)
@@ -0,0 +1,161 @@
1
+ Description: Default Control – Load Limit
2
+ Category: Control
3
+ Classes:
4
+ - G
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+ - v1.3-beta/storage
9
+
10
+ Criteria:
11
+ checks:
12
+ - type: all-steps-complete
13
+ parameters: {}
14
+
15
+
16
+ Preconditions:
17
+ init_actions:
18
+ - type: set-comms-rate
19
+ parameters:
20
+ dcap_poll_seconds: 60
21
+ edev_list_poll_seconds: 60
22
+ fsa_list_poll_seconds: 60
23
+ der_list_poll_seconds: 60
24
+ derp_list_poll_seconds: 60
25
+ mup_post_seconds: 60
26
+ checks:
27
+ - type: end-device-contents
28
+ parameters: {}
29
+ - type: der-settings-contents
30
+ parameters: {}
31
+ actions:
32
+ - type: create-der-control
33
+ parameters:
34
+ start: $(now)
35
+ duration_seconds: 900
36
+ opModLoadLimW: $(setMaxW * 2)
37
+ instructions:
38
+ - DER shall be importing at least 50% of its active power rating.
39
+
40
+ Steps:
41
+
42
+ # (a, b)
43
+ GET-DEFAULT-DERC:
44
+ event:
45
+ type: GET-request-received
46
+ parameters:
47
+ endpoint: /edev/1/derp/1/dderc
48
+ actions:
49
+ - type: set-default-der-control
50
+ parameters:
51
+ opModLoadLimW: $(setMaxW * 0.3)
52
+ - type: enable-steps
53
+ parameters:
54
+ steps:
55
+ - GET-DERC-1
56
+ - type: remove-steps
57
+ parameters:
58
+ steps:
59
+ - GET-DEFAULT-DERC
60
+
61
+ # (b, c, d) This will be the first poll after client has received the defaults
62
+ # the client will see the existing control but it will be cancelled immediately after
63
+ GET-DERC-1:
64
+ event:
65
+ type: GET-request-received
66
+ parameters:
67
+ endpoint: /edev/1/derp/1/derc
68
+ serve_request_first: true # Run this AFTER server receives the request
69
+ actions:
70
+ - type: cancel-active-der-controls
71
+ parameters: {}
72
+ - type: enable-steps
73
+ parameters:
74
+ steps:
75
+ - GET-DERC-2
76
+ - type: remove-steps
77
+ parameters:
78
+ steps:
79
+ - GET-DERC-1
80
+
81
+ # (d, e) On this poll, client will discover control was cancelled and a new control will be added at 200% of setMaxW
82
+ GET-DERC-2:
83
+ event:
84
+ type: GET-request-received
85
+ parameters:
86
+ endpoint: /edev/1/derp/1/derc
87
+ serve_request_first: true # Run this AFTER server receives the request
88
+ actions:
89
+ - type: create-der-control
90
+ parameters:
91
+ start: $(now)
92
+ duration_seconds: 600
93
+ opModLoadLimW: $(setMaxW * 2)
94
+ - type: enable-steps
95
+ parameters:
96
+ steps:
97
+ - WAIT-CONTROL-END
98
+ - type: remove-steps
99
+ parameters:
100
+ steps:
101
+ - GET-DERC-2
102
+
103
+ # (f, g) Waits for the new control to finish (with a bit of overtime)
104
+ WAIT-CONTROL-END:
105
+ event:
106
+ type: wait
107
+ parameters:
108
+ duration_seconds: 660
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
118
+ instructions:
119
+ - DER should ramp down import to 30% at the rate of setGradW (default 0.27%/s)
120
+ - DER should then discover a new control and then ramp up to unconstrained at the rate of setGradW (default 0.27%/s)
121
+ - Upon control completion, DER should then ramp down to 30% at the rate of setGradW (default 0.27%/s)
122
+
123
+ # (h) On this poll, client will discover control the DefaultDERControl is cancelled and a new 0W control is in place
124
+ GET-DERC-3:
125
+ event:
126
+ type: GET-request-received
127
+ parameters:
128
+ endpoint: /edev/1/derp/1/derc
129
+ actions:
130
+ - type: create-der-control
131
+ parameters:
132
+ start: $(now)
133
+ duration_seconds: 600
134
+ opModLoadLimW: 0
135
+ - type: set-default-der-control
136
+ parameters:
137
+ cancelled: true
138
+ - type: enable-steps
139
+ parameters:
140
+ steps:
141
+ - WAIT-TEST-END
142
+ - type: remove-steps
143
+ parameters:
144
+ steps:
145
+ - GET-DERC-3
146
+
147
+
148
+ WAIT-TEST-END:
149
+ event:
150
+ type: wait
151
+ parameters:
152
+ duration_seconds: 120
153
+ actions:
154
+ - type: remove-steps
155
+ parameters:
156
+ steps:
157
+ - WAIT-TEST-END
158
+ - type: finish-test
159
+ parameters: {}
160
+ instructions:
161
+ - DER shall ramp down import to 0W at the rate of setGradW (default 0.27%/s)
@@ -0,0 +1,85 @@
1
+ Description: Active Controls – Import Limit
2
+ Category: Control
3
+ Classes:
4
+ - L
5
+ - S
6
+
7
+ TargetVersions:
8
+ - v1.2
9
+ - v1.3-beta/storage
10
+
11
+ Criteria:
12
+ checks:
13
+ - type: all-steps-complete
14
+ parameters: {}
15
+ - type: all-notifications-transmitted
16
+ parameters: {}
17
+
18
+ Preconditions:
19
+ init_actions:
20
+ - type: set-comms-rate
21
+ parameters:
22
+ dcap_poll_seconds: 60
23
+ edev_list_poll_seconds: 60
24
+ fsa_list_poll_seconds: 60
25
+ der_list_poll_seconds: 900 # Set to a large value - testing whether they respond due to notification - not polls
26
+ derp_list_poll_seconds: 900 # Set to a large value - testing whether they respond due to notification - not polls
27
+ mup_post_seconds: 60
28
+ checks:
29
+ - type: end-device-contents
30
+ parameters: {}
31
+ - type: der-settings-contents
32
+ parameters: {}
33
+ - type: subscription-contents
34
+ parameters:
35
+ subscribed_resource: /edev/1/derp/1/derc
36
+
37
+ actions:
38
+ - type: create-der-control
39
+ parameters:
40
+ start: $(now)
41
+ duration_seconds: 300
42
+ opModImpLimW: $(setMaxW * 2)
43
+ instructions:
44
+ - EndDevice should be registered with active subscriptions before starting.
45
+ - DER shall be importing from the connection point at least 50% of its active power rating.
46
+
47
+ Steps:
48
+
49
+ # NOTE - The majority of this test's validation is watching
50
+
51
+ # (a, b, c)
52
+ # After a short delay (to allow precondition actions to propagate subscriptions)
53
+ WAIT-CREATE-DERC:
54
+ event:
55
+ type: wait
56
+ parameters:
57
+ duration_seconds: 60
58
+ actions:
59
+ - type: create-der-control
60
+ parameters:
61
+ start: $(now + '5 minutes')
62
+ duration_seconds: 120
63
+ opModImpLimW: 0
64
+ - type: enable-steps
65
+ parameters:
66
+ steps:
67
+ - WAIT-TEST-FINISH
68
+ - type: remove-steps
69
+ parameters:
70
+ steps:
71
+ - WAIT-CREATE-DERC
72
+
73
+ # (a, b, c)
74
+ WAIT-TEST-FINISH:
75
+ event:
76
+ type: wait
77
+ parameters:
78
+ duration_seconds: 480 # enough time for the control to start, run and then finish
79
+ actions:
80
+ - type: remove-steps
81
+ parameters:
82
+ steps:
83
+ - WAIT-TEST-FINISH
84
+ instructions:
85
+ - DER should be observed ramping to and then from 0W control.
@@ -0,0 +1,85 @@
1
+ Description: Active Controls – Load Limit
2
+ Category: Control
3
+ Classes:
4
+ - L
5
+ - S
6
+
7
+ TargetVersions:
8
+ - v1.2
9
+ - v1.3-beta/storage
10
+
11
+ Criteria:
12
+ checks:
13
+ - type: all-steps-complete
14
+ parameters: {}
15
+ - type: all-notifications-transmitted
16
+ parameters: {}
17
+
18
+ Preconditions:
19
+ init_actions:
20
+ - type: set-comms-rate
21
+ parameters:
22
+ dcap_poll_seconds: 60
23
+ edev_list_poll_seconds: 60
24
+ fsa_list_poll_seconds: 60
25
+ der_list_poll_seconds: 900 # Set to a large value - testing whether they respond due to notification - not polls
26
+ derp_list_poll_seconds: 900 # Set to a large value - testing whether they respond due to notification - not polls
27
+ mup_post_seconds: 60
28
+ checks:
29
+ - type: end-device-contents
30
+ parameters: {}
31
+ - type: der-settings-contents
32
+ parameters: {}
33
+ - type: subscription-contents
34
+ parameters:
35
+ subscribed_resource: /edev/1/derp/1/derc
36
+
37
+ actions:
38
+ - type: create-der-control
39
+ parameters:
40
+ start: $(now)
41
+ duration_seconds: 300
42
+ opModLoadLimW: $(setMaxW * 2)
43
+ instructions:
44
+ - EndDevice should be registered with active subscriptions before starting.
45
+ - DER shall be consuming at least 50% of its active power rating.
46
+
47
+ Steps:
48
+
49
+ # NOTE - The majority of this test's validation is watching
50
+
51
+ # (a, b, c)
52
+ # After a short delay (to allow precondition actions to propagate subscriptions)
53
+ WAIT-CREATE-DERC:
54
+ event:
55
+ type: wait
56
+ parameters:
57
+ duration_seconds: 60
58
+ actions:
59
+ - type: create-der-control
60
+ parameters:
61
+ start: $(now + '5 minutes')
62
+ duration_seconds: 120
63
+ opModLoadLimW: 0
64
+ - type: enable-steps
65
+ parameters:
66
+ steps:
67
+ - WAIT-TEST-FINISH
68
+ - type: remove-steps
69
+ parameters:
70
+ steps:
71
+ - WAIT-CREATE-DERC
72
+
73
+ # (a, b, c)
74
+ WAIT-TEST-FINISH:
75
+ event:
76
+ type: wait
77
+ parameters:
78
+ duration_seconds: 480 # enough time for the control to start, run and then finish
79
+ actions:
80
+ - type: remove-steps
81
+ parameters:
82
+ steps:
83
+ - WAIT-TEST-FINISH
84
+ instructions:
85
+ - DER should be observed ramping to and then from 0W control.
@@ -0,0 +1,145 @@
1
+ Description: Default Controls – Import Limit
2
+ Category: Control
3
+ Classes:
4
+ - L
5
+ - S
6
+
7
+ TargetVersions:
8
+ - v1.2
9
+ - v1.3-beta/storage
10
+
11
+ Criteria:
12
+ checks:
13
+ - type: all-steps-complete
14
+ parameters: {}
15
+ - type: all-notifications-transmitted
16
+ parameters: {}
17
+
18
+ Preconditions:
19
+ init_actions:
20
+ - type: set-comms-rate
21
+ parameters:
22
+ dcap_poll_seconds: 60
23
+ edev_list_poll_seconds: 60
24
+ fsa_list_poll_seconds: 60
25
+ der_list_poll_seconds: 1800 # Set to a large value - testing whether they respond due to notification - not polls
26
+ derp_list_poll_seconds: 1800 # Set to a large value - testing whether they respond due to notification - not polls
27
+ mup_post_seconds: 60
28
+ - type: create-der-program
29
+ parameters:
30
+ primacy: 0
31
+
32
+ checks:
33
+ - type: end-device-contents
34
+ parameters: {}
35
+ - type: der-settings-contents
36
+ parameters: {}
37
+ - type: subscription-contents
38
+ parameters:
39
+ subscribed_resource: /edev/1/derp/1/derc
40
+ - type: subscription-contents
41
+ parameters:
42
+ subscribed_resource: /edev/1/derp/1/dderc
43
+
44
+ actions:
45
+ - type: create-der-control
46
+ parameters:
47
+ start: $(now)
48
+ duration_seconds: 300
49
+ opModImpLimW: $(setMaxW * 2)
50
+ # (a, b)
51
+ - type: set-default-der-control
52
+ parameters:
53
+ opModImpLimW: $(setMaxW * 0.3)
54
+ instructions:
55
+ - EndDevice should be registered with active subscriptions before starting.
56
+ - DER shall be importing from the connection point with at least 50% of its active power rating.
57
+
58
+ Steps:
59
+
60
+ # (c)
61
+ # Give enough time for precondition notifications to propagate before cancelling all DERControls
62
+ WAIT-CANCEL-DERC:
63
+ event:
64
+ type: wait
65
+ parameters:
66
+ duration_seconds: 60
67
+ actions:
68
+ - type: cancel-active-der-controls
69
+ parameters: {}
70
+
71
+ - type: enable-steps
72
+ parameters:
73
+ steps:
74
+ - WAIT-DEVICE-RAMP
75
+ - type: remove-steps
76
+ parameters:
77
+ steps:
78
+ - WAIT-CANCEL-DERC
79
+
80
+ # (d, e)
81
+ WAIT-DEVICE-RAMP:
82
+ event:
83
+ type: wait
84
+ parameters:
85
+ duration_seconds: 120
86
+ actions:
87
+ - type: create-der-control
88
+ parameters:
89
+ start: $(now)
90
+ duration_seconds: 600
91
+ opModImpLimW: $(setMaxW * 2)
92
+ - type: enable-steps
93
+ parameters:
94
+ steps:
95
+ - WAIT-CONTROL-FINISH
96
+ - type: remove-steps
97
+ parameters:
98
+ steps:
99
+ - WAIT-DEVICE-RAMP
100
+ instructions:
101
+ - DER should be ramping to the DefaultDERControl value of 30% max power at rate setGradW (default 0.27%/s).
102
+
103
+ # (f, g, h)
104
+ WAIT-CONTROL-FINISH:
105
+ event:
106
+ type: wait
107
+ parameters:
108
+ duration_seconds: 720
109
+ actions:
110
+ - type: create-der-control
111
+ parameters:
112
+ start: $(now)
113
+ duration_seconds: 600
114
+ opModImpLimW: 0
115
+ - type: set-default-der-control
116
+ parameters:
117
+ cancelled: true
118
+
119
+ - type: enable-steps
120
+ parameters:
121
+ steps:
122
+ - WAIT-TEST-FINISH
123
+ - type: remove-steps
124
+ parameters:
125
+ steps:
126
+ - WAIT-CONTROL-FINISH
127
+ instructions:
128
+ - DER should be ramping to the active DERControl unconstrained value at rate setGradW (default 0.27%/s).
129
+ - Upon completion of the active DERControl (10 minutes) the DER should ramp to the DefaultDERControl value of 30% max power.
130
+
131
+ # (i)
132
+ WAIT-TEST-FINISH:
133
+ event:
134
+ type: wait
135
+ parameters:
136
+ duration_seconds: 720
137
+ actions:
138
+ - type: remove-steps
139
+ parameters:
140
+ steps:
141
+ - WAIT-TEST-FINISH
142
+ - type: finish-test
143
+ parameters: {}
144
+ instructions:
145
+ - DER should be ramping to the active DERControl 0W value at rate setGradW (default 0.27%/s).