cactus-test-definitions 1.8.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.
Files changed (173) 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 +30 -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/__pycache__/validate.cpython-312.pyc +0 -0
  21. cactus_test_definitions/client/actions.py +99 -0
  22. cactus_test_definitions/client/checks.py +128 -0
  23. cactus_test_definitions/client/events.py +71 -0
  24. cactus_test_definitions/client/procedures/ALL-01.yaml +94 -0
  25. cactus_test_definitions/client/procedures/ALL-02.yaml +113 -0
  26. cactus_test_definitions/client/procedures/ALL-03-REJ.yaml +69 -0
  27. cactus_test_definitions/client/procedures/ALL-03.yaml +110 -0
  28. cactus_test_definitions/client/procedures/ALL-04.yaml +69 -0
  29. cactus_test_definitions/client/procedures/ALL-05.yaml +117 -0
  30. cactus_test_definitions/client/procedures/ALL-06.yaml +128 -0
  31. cactus_test_definitions/client/procedures/ALL-07.yaml +76 -0
  32. cactus_test_definitions/client/procedures/ALL-08.yaml +78 -0
  33. cactus_test_definitions/client/procedures/ALL-09.yaml +111 -0
  34. cactus_test_definitions/client/procedures/ALL-10.yaml +128 -0
  35. cactus_test_definitions/client/procedures/ALL-11.yaml +111 -0
  36. cactus_test_definitions/client/procedures/ALL-12.yaml +126 -0
  37. cactus_test_definitions/client/procedures/ALL-13.yaml +112 -0
  38. cactus_test_definitions/client/procedures/ALL-14.yaml +165 -0
  39. cactus_test_definitions/client/procedures/ALL-15.yaml +109 -0
  40. cactus_test_definitions/client/procedures/ALL-16.yaml +102 -0
  41. cactus_test_definitions/client/procedures/ALL-17.yaml +63 -0
  42. cactus_test_definitions/client/procedures/ALL-18.yaml +289 -0
  43. cactus_test_definitions/client/procedures/ALL-19.yaml +78 -0
  44. cactus_test_definitions/client/procedures/ALL-20.yaml +136 -0
  45. cactus_test_definitions/client/procedures/ALL-21.yaml +203 -0
  46. cactus_test_definitions/client/procedures/ALL-22.yaml +82 -0
  47. cactus_test_definitions/client/procedures/ALL-23.yaml +158 -0
  48. cactus_test_definitions/client/procedures/ALL-24.yaml +132 -0
  49. cactus_test_definitions/client/procedures/ALL-25-EXT.yaml +228 -0
  50. cactus_test_definitions/client/procedures/ALL-25.yaml +136 -0
  51. cactus_test_definitions/client/procedures/ALL-26.yaml +147 -0
  52. cactus_test_definitions/client/procedures/ALL-27.yaml +144 -0
  53. cactus_test_definitions/client/procedures/ALL-28.yaml +273 -0
  54. cactus_test_definitions/client/procedures/ALL-29.yaml +87 -0
  55. cactus_test_definitions/client/procedures/ALL-30.yaml +188 -0
  56. cactus_test_definitions/client/procedures/BES-01.yaml +136 -0
  57. cactus_test_definitions/client/procedures/BES-02.yaml +137 -0
  58. cactus_test_definitions/client/procedures/BES-03.yaml +135 -0
  59. cactus_test_definitions/client/procedures/BES-04.yaml +228 -0
  60. cactus_test_definitions/client/procedures/DRA-01.yaml +54 -0
  61. cactus_test_definitions/client/procedures/DRA-02.yaml +64 -0
  62. cactus_test_definitions/client/procedures/DRD-01.yaml +667 -0
  63. cactus_test_definitions/client/procedures/DRL-01.yaml +327 -0
  64. cactus_test_definitions/client/procedures/GEN-01.yaml +73 -0
  65. cactus_test_definitions/client/procedures/GEN-02.yaml +72 -0
  66. cactus_test_definitions/client/procedures/GEN-03.yaml +160 -0
  67. cactus_test_definitions/client/procedures/GEN-04.yaml +161 -0
  68. cactus_test_definitions/client/procedures/GEN-05.yaml +89 -0
  69. cactus_test_definitions/client/procedures/GEN-06.yaml +90 -0
  70. cactus_test_definitions/client/procedures/GEN-07.yaml +145 -0
  71. cactus_test_definitions/client/procedures/GEN-08.yaml +145 -0
  72. cactus_test_definitions/client/procedures/GEN-09.yaml +117 -0
  73. cactus_test_definitions/client/procedures/GEN-10.yaml +793 -0
  74. cactus_test_definitions/client/procedures/GEN-11.yaml +402 -0
  75. cactus_test_definitions/client/procedures/GEN-12.yaml +402 -0
  76. cactus_test_definitions/client/procedures/GEN-13.yaml +70 -0
  77. cactus_test_definitions/client/procedures/LOA-01.yaml +73 -0
  78. cactus_test_definitions/client/procedures/LOA-02.yaml +73 -0
  79. cactus_test_definitions/client/procedures/LOA-03.yaml +160 -0
  80. cactus_test_definitions/client/procedures/LOA-04.yaml +161 -0
  81. cactus_test_definitions/client/procedures/LOA-05.yaml +89 -0
  82. cactus_test_definitions/client/procedures/LOA-06.yaml +89 -0
  83. cactus_test_definitions/client/procedures/LOA-07.yaml +145 -0
  84. cactus_test_definitions/client/procedures/LOA-08.yaml +145 -0
  85. cactus_test_definitions/client/procedures/LOA-09.yaml +117 -0
  86. cactus_test_definitions/client/procedures/LOA-10.yaml +793 -0
  87. cactus_test_definitions/client/procedures/LOA-11.yaml +402 -0
  88. cactus_test_definitions/client/procedures/LOA-12.yaml +402 -0
  89. cactus_test_definitions/client/procedures/LOA-13.yaml +71 -0
  90. cactus_test_definitions/client/procedures/MUL-01.yaml +92 -0
  91. cactus_test_definitions/client/procedures/MUL-02.yaml +80 -0
  92. cactus_test_definitions/client/procedures/MUL-03.yaml +74 -0
  93. cactus_test_definitions/client/test_procedures.py +185 -0
  94. cactus_test_definitions/client/validate.py +98 -0
  95. cactus_test_definitions/csipaus.py +83 -0
  96. cactus_test_definitions/errors.py +15 -0
  97. cactus_test_definitions/parameters.py +153 -0
  98. cactus_test_definitions/py.typed +0 -0
  99. cactus_test_definitions/schema.py +22 -0
  100. cactus_test_definitions/server/README.md +172 -0
  101. cactus_test_definitions/server/__init__.py +27 -0
  102. cactus_test_definitions/server/__pycache__/__init__.cpython-312.pyc +0 -0
  103. cactus_test_definitions/server/__pycache__/actions.cpython-312.pyc +0 -0
  104. cactus_test_definitions/server/__pycache__/checks.cpython-312.pyc +0 -0
  105. cactus_test_definitions/server/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
  106. cactus_test_definitions/server/__pycache__/validate.cpython-312.pyc +0 -0
  107. cactus_test_definitions/server/actions.py +140 -0
  108. cactus_test_definitions/server/checks.py +152 -0
  109. cactus_test_definitions/server/procedures/S-ALL-01.yaml +45 -0
  110. cactus_test_definitions/server/procedures/S-ALL-02.yaml +65 -0
  111. cactus_test_definitions/server/procedures/S-ALL-03.yaml +65 -0
  112. cactus_test_definitions/server/procedures/S-ALL-04.yaml +137 -0
  113. cactus_test_definitions/server/procedures/S-ALL-05.yaml +111 -0
  114. cactus_test_definitions/server/procedures/S-ALL-06.yaml +111 -0
  115. cactus_test_definitions/server/procedures/S-ALL-07.yaml +100 -0
  116. cactus_test_definitions/server/procedures/S-ALL-08.yaml +77 -0
  117. cactus_test_definitions/server/procedures/S-ALL-09.yaml +43 -0
  118. cactus_test_definitions/server/procedures/S-ALL-10.yaml +68 -0
  119. cactus_test_definitions/server/procedures/S-ALL-11.yaml +36 -0
  120. cactus_test_definitions/server/procedures/S-ALL-12.yaml +36 -0
  121. cactus_test_definitions/server/procedures/S-ALL-13.yaml +36 -0
  122. cactus_test_definitions/server/procedures/S-ALL-14.yaml +36 -0
  123. cactus_test_definitions/server/procedures/S-ALL-15.yaml +79 -0
  124. cactus_test_definitions/server/procedures/S-ALL-16.yaml +79 -0
  125. cactus_test_definitions/server/procedures/S-ALL-17.yaml +39 -0
  126. cactus_test_definitions/server/procedures/S-ALL-18.yaml +35 -0
  127. cactus_test_definitions/server/procedures/S-ALL-19.yaml +34 -0
  128. cactus_test_definitions/server/procedures/S-ALL-20.yaml +34 -0
  129. cactus_test_definitions/server/procedures/S-ALL-21.yaml +34 -0
  130. cactus_test_definitions/server/procedures/S-ALL-22.yaml +34 -0
  131. cactus_test_definitions/server/procedures/S-ALL-23.yaml +34 -0
  132. cactus_test_definitions/server/procedures/S-ALL-24.yaml +37 -0
  133. cactus_test_definitions/server/procedures/S-ALL-25.yaml +151 -0
  134. cactus_test_definitions/server/procedures/S-ALL-41.yaml +343 -0
  135. cactus_test_definitions/server/procedures/S-ALL-42.yaml +81 -0
  136. cactus_test_definitions/server/procedures/S-ALL-43.yaml +146 -0
  137. cactus_test_definitions/server/procedures/S-ALL-44.yaml +51 -0
  138. cactus_test_definitions/server/procedures/S-ALL-45.yaml +34 -0
  139. cactus_test_definitions/server/procedures/S-ALL-48.yaml +29 -0
  140. cactus_test_definitions/server/procedures/S-ALL-49.yaml +56 -0
  141. cactus_test_definitions/server/procedures/S-ALL-51.yaml +35 -0
  142. cactus_test_definitions/server/procedures/S-ALL-52.yaml +35 -0
  143. cactus_test_definitions/server/procedures/S-ALL-53.yaml +42 -0
  144. cactus_test_definitions/server/procedures/S-ALL-55.yaml +45 -0
  145. cactus_test_definitions/server/procedures/S-ALL-56.yaml +36 -0
  146. cactus_test_definitions/server/procedures/S-ALL-57.yaml +62 -0
  147. cactus_test_definitions/server/procedures/S-OPT-01.yaml +42 -0
  148. cactus_test_definitions/server/procedures/S-OPT-02.yaml +40 -0
  149. cactus_test_definitions/server/procedures/S-OPT-03.yaml +47 -0
  150. cactus_test_definitions/server/procedures/S-OPT-04.yaml +32 -0
  151. cactus_test_definitions/server/procedures/S-OPT-05.yaml +33 -0
  152. cactus_test_definitions/server/test_procedures.py +156 -0
  153. cactus_test_definitions/server/validate.py +30 -0
  154. cactus_test_definitions/variable_expressions.py +419 -0
  155. cactus_test_definitions-1.8.0.dist-info/METADATA +289 -0
  156. cactus_test_definitions-1.8.0.dist-info/RECORD +173 -0
  157. cactus_test_definitions-1.8.0.dist-info/WHEEL +5 -0
  158. cactus_test_definitions-1.8.0.dist-info/licenses/LICENSE.txt +22 -0
  159. cactus_test_definitions-1.8.0.dist-info/top_level.txt +2 -0
  160. tests/__init__.py +0 -0
  161. tests/unit/__init__.py +0 -0
  162. tests/unit/client/__init__.py +0 -0
  163. tests/unit/client/test_actions.py +72 -0
  164. tests/unit/client/test_checks.py +71 -0
  165. tests/unit/client/test_events.py +36 -0
  166. tests/unit/client/test_test_procedures.py +103 -0
  167. tests/unit/client/test_validate.py +200 -0
  168. tests/unit/server/__init__.py +0 -0
  169. tests/unit/server/test_test_procedures.py +60 -0
  170. tests/unit/server/test_validate.py +75 -0
  171. tests/unit/test_csipaus.py +49 -0
  172. tests/unit/test_parameters.py +197 -0
  173. tests/unit/test_variable_expressions.py +402 -0
@@ -0,0 +1,51 @@
1
+ Description: Scheduling
2
+ Category: Control
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: (A) PRECONDITION
15
+ repeat_until_pass: true
16
+ client: client
17
+ instructions:
18
+ - The utility server is configured to generate a schedule of 24 sequential, non-overlapping controls with a range of export and/or import limits, each with 1min duration.
19
+ action:
20
+ type: discovery
21
+ parameters:
22
+ resources:
23
+ - EndDevice
24
+ - DERControl
25
+ checks:
26
+ - type: der-control
27
+ parameters:
28
+ minimum_count: 24
29
+ opModExpLimW: $(setMaxW * 2)
30
+ opModImpLimW: $(setMaxW)
31
+ event_status: 0 # Scheduled (will ensure non overlapping , superseeded)
32
+ duration: 60
33
+
34
+ - id: (1) DERControlQuery
35
+ client: client
36
+ action:
37
+ type: discovery
38
+ parameters:
39
+ list_limit: 10 # sets s=0, l=10 for paging
40
+ resources:
41
+ - DERControl
42
+ checks:
43
+ - type: der-control
44
+ parameters:
45
+ minimum_count: 10
46
+ maximum_count: 10
47
+ opModExpLimW: $(setMaxW * 2)
48
+ opModImpLimW: $(setMaxW)
49
+ event_status: 0
50
+ duration: 60
51
+
@@ -0,0 +1,34 @@
1
+ Description: Randomisation
2
+ Category: Control
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: (A) PRECONDITION
15
+ repeat_until_pass: true
16
+ client: client
17
+ instructions:
18
+ - The utility server is configured with five sequential, non-overlapping active controls, each with - Duration = 120s, randomizeStart = 60s, opModExpLimW = 200% of the DER's rated active power.
19
+ action:
20
+ type: discovery
21
+ parameters:
22
+ resources:
23
+ - EndDevice
24
+ - DERControl
25
+ checks:
26
+ - type: der-control
27
+ parameters:
28
+ minimum_count: 5
29
+ maximum_count: 5
30
+ opModExpLimW: $(setMaxW * 2)
31
+ randomizeStart: 60
32
+ event_status: 0 # Scheduled (non-overlapping)
33
+ duration: 120
34
+
@@ -0,0 +1,29 @@
1
+ Description: Changing Ramp-Rates
2
+ Category: Control
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: (A) PRECONDITION
15
+ repeat_until_pass: true
16
+ client: client
17
+ instructions:
18
+ - The utility server is configured with a DefaultDERControl with setGradW = 1% per second.
19
+ action:
20
+ type: discovery
21
+ parameters:
22
+ resources:
23
+ - EndDevice
24
+ - DefaultDERControl
25
+ checks:
26
+ - type: default-der-control
27
+ parameters:
28
+ minimum_count: 1
29
+ setGradW: 1
@@ -0,0 +1,56 @@
1
+ Description: Multiple DER Programs
2
+ Category: Control
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: (A) PRECONDITION
15
+ repeat_until_pass: true
16
+ client: client
17
+ instructions:
18
+ - Configure two FunctionSetAssignments - FSA1 and FSA2
19
+ - Each FunctionSetAssignment contains one DERProgram configured under it (DERP1 and DERP2 respectively). DERP1 has a primacy of 1 and DERP2 has a primacy of 2.
20
+ - Give DERP1 a default DER control with opModExpLimW set to 30% of the DER's rated active power.
21
+ - Give DERP2 an active control with opModExpLimW = 200% of the DER's rated active power.
22
+ action:
23
+ type: discovery
24
+ parameters:
25
+ resources:
26
+ - EndDevice
27
+ - DefaultDERControl
28
+ - FunctionSetAssignments
29
+ checks:
30
+ - type: function-set-assignment
31
+ parameters:
32
+ minimum_count: 2
33
+ maximum_count: 2
34
+ matches_client_edev: True
35
+ - type: der-program # DERP 1
36
+ parameters:
37
+ minimum_count: 1
38
+ maximum_count: 1
39
+ primacy: 1
40
+ fsa_index: 1
41
+ - type: der-program # DERP 2
42
+ parameters:
43
+ minimum_count: 1
44
+ maximum_count: 1
45
+ primacy: 2
46
+ fsa_index: 2
47
+ - type: default-der-control
48
+ parameters:
49
+ minimum_count: 1
50
+ derp_primacy: 1
51
+ opModExpLimW: $(setMaxW * 0.3)
52
+ - type: der-control
53
+ parameters:
54
+ minimum_count: 1
55
+ derp_primacy: 2
56
+ opModExpLimW: $(setMaxW * 2)
@@ -0,0 +1,35 @@
1
+ Description: End Device Duplication
2
+ Category: Edge Cases
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: PRECONDITION
15
+ repeat_until_pass: true
16
+ instructions:
17
+ - Create an EndDevice registration for client.
18
+ action:
19
+ type: discovery
20
+ parameters:
21
+ resources:
22
+ - EndDevice
23
+ - DeviceCapability
24
+ - MirrorUsagePointList
25
+ - DER
26
+ checks:
27
+ - type: end-device # This will be the check that will block UNTIL there is an existing EndDevice registration
28
+ parameters:
29
+ matches_client: true
30
+
31
+ - id: Step 1 - Register device with same LFDI.
32
+ action:
33
+ type: insert-end-device
34
+ parameters:
35
+ expect_rejection: True # By default the lfdi will be the same as the existing end device.
@@ -0,0 +1,35 @@
1
+ Description: LFDI Doesn't Match Certificate
2
+ Category: Edge Cases
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: CLIENT-A
12
+ - id: CLIENT-B
13
+
14
+ Steps:
15
+ - id: PRECONDITION - register end device on clientA.
16
+ client: CLIENT-A
17
+ repeat_until_pass: true
18
+ instructions:
19
+ - Create an EndDevice registration for clientA.
20
+ action:
21
+ type: discovery
22
+ parameters:
23
+ resources:
24
+ - EndDevice
25
+ checks:
26
+ - type: end-device # This will be the check that will block UNTIL there is an existing EndDevice registration
27
+ parameters:
28
+ matches_client: true
29
+
30
+ - id: Step 1 - Attempt to upsert end device with that the client doesnt own - expect rejection
31
+ client: CLIENT-B
32
+ action:
33
+ type: insert-end-device
34
+ parameters:
35
+ expect_rejection: True
@@ -0,0 +1,42 @@
1
+ Description: Update Connection Point
2
+ Category: Edge Cases
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: PRECONDITION
15
+ repeat_until_pass: true
16
+ instructions:
17
+ - Create an EndDevice registration.
18
+ action:
19
+ type: discovery
20
+ parameters:
21
+ resources:
22
+ - EndDevice
23
+ - DeviceCapability
24
+ - MirrorUsagePointList
25
+ - DER
26
+ checks:
27
+ - type: end-device # This will be the check that will block UNTIL there is an existing EndDevice registration
28
+ parameters:
29
+ matches_client: true
30
+
31
+ - id: SEND CONNECTION POINT ID
32
+ action:
33
+ type: upsert-connection-point
34
+ parameters:
35
+ connectionPointId: "1234567890" # A valid NMI (in the testing range)
36
+
37
+ - id: UPSERT CONNECTION POINT ID
38
+ action:
39
+ type: upsert-connection-point
40
+ parameters:
41
+ connectionPointId: "2345667890" # Upsert automatically checks server response
42
+
@@ -0,0 +1,45 @@
1
+ Description: Reject Incomplete DER Settings
2
+ Category: Edge Cases
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: PRECONDITION
15
+ repeat_until_pass: true
16
+ instructions:
17
+ - Create an EndDevice registration.
18
+ action:
19
+ type: discovery
20
+ parameters:
21
+ resources:
22
+ - EndDevice
23
+ - DeviceCapability
24
+ - DER
25
+ checks:
26
+ - type: end-device # This will be the check that will block UNTIL there is an existing EndDevice registration
27
+ parameters:
28
+ matches_client: true
29
+
30
+ - id: 1 - SEND MALFORMED DERSettings
31
+ action:
32
+ type: send-malformed-der-settings
33
+ parameters:
34
+ updatedTime_missing: True
35
+
36
+ - id: 2 - Upsert modes enabled
37
+ # NOTE: Cannot test for 400 error when sending int vs hexBinary - the server cannot distinguish them.
38
+ # Instead, this test verifies the server correctly handles valid hexBinary values.
39
+ action:
40
+ type: upsert-der-settings
41
+ parameters:
42
+ setMaxW: 10000
43
+ setGradW: 1000
44
+ modesEnabled: 12 # Double digit, will be checked by the upsert and refetch
45
+ doeModesEnabled: 3
@@ -0,0 +1,36 @@
1
+ Description: Reject String LFDIs
2
+ Category: Edge Cases
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: PRECONDITION
15
+ repeat_until_pass: true
16
+ instructions:
17
+ - Ensure no end devices are registered.
18
+ action:
19
+ type: discovery
20
+ parameters:
21
+ resources:
22
+ - DeviceCapability
23
+ - Time
24
+ - MirrorUsagePointList
25
+ - EndDevice
26
+ checks:
27
+ - type: end-device # Block UNTIL there is no existing EndDevice registration
28
+ parameters:
29
+ matches_client: false
30
+
31
+ - id: 1 - Register EndDevice - Expect rejection from malformed LFDI
32
+ action:
33
+ type: insert-end-device
34
+ parameters:
35
+ force_lfdi: ZZZZZZZZZZZZZZZZ
36
+ expect_rejection: True
@@ -0,0 +1,62 @@
1
+ Description: Invalid Control Responses
2
+ Category: Control
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: PRECONDITION
15
+ repeat_until_pass: true
16
+ instructions:
17
+ - The utility server is configured with active control with opModExpLimW / opModImpLimW = 200% of the DER's rated active power, responseRequired = 03, and replyTo set to the response endpoint on the test utility server.
18
+ action:
19
+ type: discovery
20
+ parameters:
21
+ resources:
22
+ - EndDevice
23
+ - DERControl
24
+ checks:
25
+ - type: end-device
26
+ parameters:
27
+ matches_client: true
28
+ - type: der-control
29
+ parameters:
30
+ minimum_count: 1
31
+ maximum_count: 1
32
+ opModExpLimW: $(setMaxW * 2)
33
+ opModImpLimW: $(setMaxW * 2)
34
+ responseRequired: 3
35
+ event_status: 1 # Active
36
+ # replyTo should also be set but this check is implicit in later communications
37
+
38
+ - id: (1) Malformed response - mrid doesnt exist # Expects 4XX response
39
+ action:
40
+ type: send-malformed-response
41
+ parameters:
42
+ mrid_unknown: True
43
+ endDeviceLFDI_unknown: False
44
+ response_invalid: False
45
+
46
+ - id: (2) Malformed response - lfdi doesnt exist # Expects 4XX response
47
+ action:
48
+ type: send-malformed-response
49
+ parameters:
50
+ mrid_unknown: False
51
+ endDeviceLFDI_unknown: True
52
+ response_invalid: False
53
+
54
+ - id: (3) Malformed response - lfdi doesnt exist # Expects 4XX response
55
+ action:
56
+ type: send-malformed-response
57
+ parameters:
58
+ mrid_unknown: False
59
+ endDeviceLFDI_unknown: False
60
+ response_invalid: True
61
+
62
+
@@ -0,0 +1,42 @@
1
+ Description: Discovery Rejecting In-Band Registration
2
+ Category: Registration
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: PRECONDITION
15
+ repeat_until_pass: true
16
+ instructions:
17
+ - Create an EndDevice registration for client (or rerun S-ALL-02 / S-ALL-03).
18
+ action:
19
+ type: discovery
20
+ parameters:
21
+ resources:
22
+ - DeviceCapability
23
+ - Time
24
+ - MirrorUsagePointList
25
+ - EndDevice
26
+ - DER
27
+ checks:
28
+ - type: end-device # This will be the check that will block UNTIL there is an existing EndDevice registration
29
+ parameters:
30
+ matches_client: true
31
+
32
+ - id: REGISTER AGAIN
33
+ action:
34
+ type: insert-end-device
35
+ parameters:
36
+ expect_rejection: true
37
+ checks:
38
+ - type: end-device
39
+ parameters:
40
+ matches_client: true
41
+
42
+
@@ -0,0 +1,40 @@
1
+ Description: Incorrect Connection Point Registration
2
+ Category: Registration
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: PRECONDITION
15
+ repeat_until_pass: true
16
+ instructions:
17
+ - Create an EndDevice registration for client (or rerun S-ALL-02 / S-ALL-03).
18
+ action:
19
+ type: discovery
20
+ parameters:
21
+ resources:
22
+ - DeviceCapability
23
+ - Time
24
+ - MirrorUsagePointList
25
+ - EndDevice
26
+ - DER
27
+ checks:
28
+ - type: end-device # This will be the check that will block UNTIL there is an existing EndDevice registration
29
+ parameters:
30
+ matches_client: true
31
+
32
+ - id: SEND BAD CONNECTION POINT ID
33
+ action:
34
+ type: upsert-connection-point
35
+ parameters:
36
+ connectionPointId: NOTAVALIDID
37
+ expect_rejection: true
38
+
39
+
40
+
@@ -0,0 +1,47 @@
1
+ Description: Connection Point Registration
2
+ Category: Registration
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: PRECONDITION
15
+ repeat_until_pass: true
16
+ instructions:
17
+ - Create an EndDevice registration for client (or rerun S-ALL-02 / S-ALL-03).
18
+ action:
19
+ type: discovery
20
+ parameters:
21
+ resources:
22
+ - DeviceCapability
23
+ - Time
24
+ - MirrorUsagePointList
25
+ - EndDevice
26
+ - DER
27
+ checks:
28
+ - type: end-device # This will be the check that will block UNTIL there is an existing EndDevice registration
29
+ parameters:
30
+ matches_client: true
31
+ - type: discovered
32
+ parameters:
33
+ resources:
34
+ - EndDevice
35
+ links:
36
+ - ConnectionPoint
37
+
38
+
39
+ - id: SEND CONNECTION POINT ID
40
+ action:
41
+ type: upsert-connection-point
42
+ parameters:
43
+ connectionPointId: "1234567890" # A valid NMI (in the testing range)
44
+
45
+
46
+
47
+
@@ -0,0 +1,32 @@
1
+ Description: Client Registration and PIN Validation
2
+ Category: Registration
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: MATCH PIN
15
+ repeat_until_pass: true
16
+ instructions:
17
+ - Create an EndDevice (with RegistrationLink) registration for client (or rerun S-ALL-02 / S-ALL-03).
18
+ action:
19
+ type: discovery
20
+ parameters:
21
+ resources:
22
+ - Registration
23
+ checks:
24
+ - type: end-device # This will be the check that will block UNTIL there is an existing EndDevice registration
25
+ parameters:
26
+ matches_client: true
27
+ matches_pin: true
28
+
29
+
30
+
31
+
32
+
@@ -0,0 +1,33 @@
1
+ Description: S-OPT-05 Update Telemetry Post Rates
2
+ Category: Monitoring
3
+ Classes:
4
+ - A
5
+
6
+ TargetVersions:
7
+ - v1.2
8
+
9
+ Preconditions:
10
+ required_clients:
11
+ - id: client
12
+
13
+ Steps:
14
+ - id: PRECONDITION
15
+ repeat_until_pass: true
16
+ instructions:
17
+ - The utility server shall be configured to change all default MirrorUsagePoint post-rates for the test client from 60s to 300s.
18
+ action:
19
+ type: discovery
20
+ parameters:
21
+ resources:
22
+ - EndDevice
23
+ - DER
24
+ - MirrorUsagePoint
25
+ checks:
26
+ - type: end-device
27
+ parameters:
28
+ matches_client: true
29
+ - type: discovered
30
+ - type: mirror-usage-point
31
+ parameters:
32
+ matches: True
33
+ post_rate_seconds: 300