cactus-test-definitions 1.1.0__tar.gz → 1.3.0__tar.gz

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 (141) hide show
  1. {cactus_test_definitions-1.1.0/cactus_test_definitions.egg-info → cactus_test_definitions-1.3.0}/PKG-INFO +7 -7
  2. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/README.md +6 -6
  3. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__init__.py +1 -1
  4. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/__init__.cpython-312.pyc +0 -0
  5. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/checks.py +16 -6
  6. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-02.yaml +20 -15
  7. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/BES-01.yaml +8 -8
  8. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/parameters.py +4 -0
  9. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0/cactus_test_definitions.egg-info}/PKG-INFO +7 -7
  10. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/client/test_checks.py +25 -1
  11. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/LICENSE.txt +0 -0
  12. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/MANIFEST.in +0 -0
  13. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/actions.cpython-312.pyc +0 -0
  14. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/checks.cpython-312.pyc +0 -0
  15. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/csipaus.cpython-312.pyc +0 -0
  16. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/errors.cpython-312.pyc +0 -0
  17. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/events.cpython-312.pyc +0 -0
  18. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/parameters.cpython-312.pyc +0 -0
  19. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/schema.cpython-312.pyc +0 -0
  20. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
  21. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/test_procedures.cpython-312.pyc +0 -0
  22. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/variable_expressions.cpython-312.pyc +0 -0
  23. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/__pycache__/version.cpython-312.pyc +0 -0
  24. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/__init__.py +0 -0
  25. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/__pycache__/__init__.cpython-312.pyc +0 -0
  26. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/__pycache__/actions.cpython-312.pyc +0 -0
  27. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/__pycache__/checks.cpython-312.pyc +0 -0
  28. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/__pycache__/events.cpython-312.pyc +0 -0
  29. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
  30. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/actions.py +0 -0
  31. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/events.py +0 -0
  32. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-01.yaml +0 -0
  33. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-03-REJ.yaml +0 -0
  34. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-03.yaml +0 -0
  35. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-04.yaml +0 -0
  36. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-05.yaml +0 -0
  37. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-06.yaml +0 -0
  38. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-07.yaml +0 -0
  39. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-08.yaml +0 -0
  40. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-09.yaml +0 -0
  41. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-10.yaml +0 -0
  42. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-11.yaml +0 -0
  43. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-12.yaml +0 -0
  44. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-13.yaml +0 -0
  45. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-14.yaml +0 -0
  46. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-15.yaml +0 -0
  47. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-16.yaml +0 -0
  48. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-17.yaml +0 -0
  49. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-18.yaml +0 -0
  50. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-19.yaml +0 -0
  51. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-20.yaml +0 -0
  52. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-21.yaml +0 -0
  53. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-22.yaml +0 -0
  54. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-23.yaml +0 -0
  55. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-24.yaml +0 -0
  56. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-25.yaml +0 -0
  57. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-26.yaml +0 -0
  58. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-27.yaml +0 -0
  59. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-28.yaml +0 -0
  60. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-29.yaml +0 -0
  61. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/ALL-30.yaml +0 -0
  62. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/BES-02.yaml +0 -0
  63. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/BES-03.yaml +0 -0
  64. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/BES-04.yaml +0 -0
  65. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/DRA-01.yaml +0 -0
  66. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/DRA-02.yaml +0 -0
  67. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/DRD-01.yaml +0 -0
  68. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/DRL-01.yaml +0 -0
  69. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-01.yaml +0 -0
  70. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-02.yaml +0 -0
  71. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-03.yaml +0 -0
  72. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-04.yaml +0 -0
  73. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-05.yaml +0 -0
  74. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-06.yaml +0 -0
  75. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-07.yaml +0 -0
  76. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-08.yaml +0 -0
  77. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-09.yaml +0 -0
  78. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-10.yaml +0 -0
  79. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-11.yaml +0 -0
  80. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-12.yaml +0 -0
  81. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/GEN-13.yaml +0 -0
  82. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-01.yaml +0 -0
  83. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-02.yaml +0 -0
  84. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-03.yaml +0 -0
  85. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-04.yaml +0 -0
  86. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-05.yaml +0 -0
  87. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-06.yaml +0 -0
  88. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-07.yaml +0 -0
  89. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-08.yaml +0 -0
  90. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-09.yaml +0 -0
  91. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-10.yaml +0 -0
  92. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-11.yaml +0 -0
  93. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-12.yaml +0 -0
  94. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/LOA-13.yaml +0 -0
  95. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/MUL-01.yaml +0 -0
  96. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/MUL-02.yaml +0 -0
  97. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/MUL-03.yaml +0 -0
  98. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/OPT-1-IN-BAND.yaml +0 -0
  99. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/OPT-1-OUT-OF-BAND.yaml +0 -0
  100. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/procedures/test-procedures.yaml +0 -0
  101. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/client/test_procedures.py +0 -0
  102. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/csipaus.py +0 -0
  103. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/errors.py +0 -0
  104. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/py.typed +0 -0
  105. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/schema.py +0 -0
  106. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/README.md +0 -0
  107. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/__pycache__/actions.cpython-312.pyc +0 -0
  108. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/__pycache__/checks.cpython-312.pyc +0 -0
  109. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
  110. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/actions.py +0 -0
  111. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/checks.py +0 -0
  112. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/procedures/S-ALL-01.yaml +0 -0
  113. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/procedures/S-ALL-02.yaml +0 -0
  114. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/procedures/S-ALL-03.yaml +0 -0
  115. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/procedures/S-ALL-04.yaml +0 -0
  116. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/procedures/S-ALL-05.yaml +0 -0
  117. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/procedures/S-OPT-01.yaml +0 -0
  118. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/procedures/S-OPT-02.yaml +0 -0
  119. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/procedures/S-OPT-03.yaml +0 -0
  120. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/procedures/S-OPT-04.yaml +0 -0
  121. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/procedures/test-procedures.yaml +0 -0
  122. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/server/test_procedures.py +0 -0
  123. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions/variable_expressions.py +0 -0
  124. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions.egg-info/SOURCES.txt +0 -0
  125. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions.egg-info/dependency_links.txt +0 -0
  126. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions.egg-info/requires.txt +0 -0
  127. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/cactus_test_definitions.egg-info/top_level.txt +0 -0
  128. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/pyproject.toml +0 -0
  129. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/setup.cfg +0 -0
  130. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/__init__.py +0 -0
  131. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/__init__.py +0 -0
  132. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/client/__init__.py +0 -0
  133. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/client/test_actions.py +0 -0
  134. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/client/test_config.py +0 -0
  135. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/client/test_events.py +0 -0
  136. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/client/test_test_procedures.py +0 -0
  137. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/server/__init__.py +0 -0
  138. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/server/test_test_procedures.py +0 -0
  139. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/test_csipaus.py +0 -0
  140. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/test_parameters.py +0 -0
  141. {cactus_test_definitions-1.1.0 → cactus_test_definitions-1.3.0}/tests/unit/test_variable_expressions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cactus-test-definitions
3
- Version: 1.1.0
3
+ Version: 1.3.0
4
4
  Summary: CSIP-AUS Client Test Harness Test Definitions
5
5
  Author-email: Mike Turner <mike.turner@anu.edu.au>, Josh Vote <joshua.vote@anu.edu.au>
6
6
  Maintainer-email: Mike Turner <mike.turner@anu.edu.au>, Josh Vote <joshua.vote@anu.edu.au>
@@ -203,11 +203,11 @@ checks:
203
203
  | `der-settings-contents` | `setGradW: int/None` `doeModesEnabled_set: hex/none` `doeModesEnabled_unset: hex/none` `doeModesEnabled: bool/none` `modesEnabled_set: hex/none` `modesEnabled_unset: hex/none` `setMaxVA: bool/none` `setMaxVar: bool/none` `setMaxW: bool/none` `setMaxChargeRateW: bool/none` `setMaxDischargeRateW: bool/none` `setMaxWh: bool/none` `setMinWh: bool/none` `vppModesEnabled_set: hexbinary/none` `vppModesEnabled_unset: hexbinary/none` `setMaxVarNeg: bool/none` `setMinPFOverExcited: bool/none` `setMinPFUnderExcited: bool/none` | True if a `DERSettings` has been set for the `EndDevice` under test (and if certain elements have been set to certain values) |
204
204
  | `der-capability-contents` | `doeModesSupported_set: hex/none` `doeModesSupported_unset: hex/none` `doeModesSupported: bool/none` `modesSupported_set: hex/none` `modesSupported_unset: hex/none` `rtgMaxVA: bool/none` `rtgMaxVar: bool/none` `rtgMaxW: bool/none` `rtgMaxChargeRateW: bool/none` `rtgMaxDischargeRateW: bool/none` `rtgMaxWh: bool/none` `vppModesSupported_set: hexbinary/none` `vppModesSupported_unset: hexbinary/none` `rtgMaxVarNeg: bool/none` `rtgMinPFOverExcited: bool/none` `rtgMinPFUnderExcited: bool/none` | True if a `DERCapability` has been set for the `EndDevice` under test (and if certain elements have been set to certain values) |
205
205
  | `der-status-contents` | `genConnectStatus: int/None` `operationalModeStatus: int/None` `alarmStatus: int/None` | True if a `DERStatus` has been set for the `EndDevice` under test (and if certain elements have been set to certain values) |
206
- | `readings-site-active-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide active power with `minimum_count` entries |
207
- | `readings-site-reactive-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide reactive power with `minimum_count` entries |
208
- | `readings-voltage` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide voltage OR DER voltage with `minimum_count` entries (at least one is required) |
209
- | `readings-der-active-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for DER active power with `minimum_count` entries |
210
- | `readings-der-reactive-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for DER reactive power with `minimum_count` entries |
206
+ | `readings-site-active-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide active power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
207
+ | `readings-site-reactive-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide reactive power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
208
+ | `readings-voltage` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide voltage OR DER voltage with `minimum_count` entries (at least one is required) |
209
+ | `readings-der-active-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for DER active power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
210
+ | `readings-der-reactive-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for DER reactive power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
211
211
  | `response-contents` | `latest: bool/None` `status: int/None` `all: bool/None` | True if at least one received Response matches the filter. `latest` will only consider the most recent received Response. `all` will look for a nominated status match for every `DERControl` |
212
212
  | `subscription-contents` | `subscribed_resource: str` | True if a subscription to `subscribed_resource` has been created |
213
213
 
@@ -215,7 +215,7 @@ The following are csipaus.org/ns/v1.3-beta/storage extension specific checks imp
215
215
 
216
216
  | **name** | **params** | **description** |
217
217
  | -------- | ---------- | --------------- |
218
- | `readings-der-stored-energy` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for DER stored energy with `minimum_count` entries |
218
+ | `readings-der-stored-energy` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for DER stored energy with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
219
219
  <br>
220
220
 
221
221
  #### Hexbinary Parameters for Bitwise Operations
@@ -162,11 +162,11 @@ checks:
162
162
  | `der-settings-contents` | `setGradW: int/None` `doeModesEnabled_set: hex/none` `doeModesEnabled_unset: hex/none` `doeModesEnabled: bool/none` `modesEnabled_set: hex/none` `modesEnabled_unset: hex/none` `setMaxVA: bool/none` `setMaxVar: bool/none` `setMaxW: bool/none` `setMaxChargeRateW: bool/none` `setMaxDischargeRateW: bool/none` `setMaxWh: bool/none` `setMinWh: bool/none` `vppModesEnabled_set: hexbinary/none` `vppModesEnabled_unset: hexbinary/none` `setMaxVarNeg: bool/none` `setMinPFOverExcited: bool/none` `setMinPFUnderExcited: bool/none` | True if a `DERSettings` has been set for the `EndDevice` under test (and if certain elements have been set to certain values) |
163
163
  | `der-capability-contents` | `doeModesSupported_set: hex/none` `doeModesSupported_unset: hex/none` `doeModesSupported: bool/none` `modesSupported_set: hex/none` `modesSupported_unset: hex/none` `rtgMaxVA: bool/none` `rtgMaxVar: bool/none` `rtgMaxW: bool/none` `rtgMaxChargeRateW: bool/none` `rtgMaxDischargeRateW: bool/none` `rtgMaxWh: bool/none` `vppModesSupported_set: hexbinary/none` `vppModesSupported_unset: hexbinary/none` `rtgMaxVarNeg: bool/none` `rtgMinPFOverExcited: bool/none` `rtgMinPFUnderExcited: bool/none` | True if a `DERCapability` has been set for the `EndDevice` under test (and if certain elements have been set to certain values) |
164
164
  | `der-status-contents` | `genConnectStatus: int/None` `operationalModeStatus: int/None` `alarmStatus: int/None` | True if a `DERStatus` has been set for the `EndDevice` under test (and if certain elements have been set to certain values) |
165
- | `readings-site-active-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide active power with `minimum_count` entries |
166
- | `readings-site-reactive-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide reactive power with `minimum_count` entries |
167
- | `readings-voltage` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide voltage OR DER voltage with `minimum_count` entries (at least one is required) |
168
- | `readings-der-active-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for DER active power with `minimum_count` entries |
169
- | `readings-der-reactive-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for DER reactive power with `minimum_count` entries |
165
+ | `readings-site-active-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide active power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
166
+ | `readings-site-reactive-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide reactive power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
167
+ | `readings-voltage` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide voltage OR DER voltage with `minimum_count` entries (at least one is required) |
168
+ | `readings-der-active-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for DER active power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
169
+ | `readings-der-reactive-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for DER reactive power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
170
170
  | `response-contents` | `latest: bool/None` `status: int/None` `all: bool/None` | True if at least one received Response matches the filter. `latest` will only consider the most recent received Response. `all` will look for a nominated status match for every `DERControl` |
171
171
  | `subscription-contents` | `subscribed_resource: str` | True if a subscription to `subscribed_resource` has been created |
172
172
 
@@ -174,7 +174,7 @@ The following are csipaus.org/ns/v1.3-beta/storage extension specific checks imp
174
174
 
175
175
  | **name** | **params** | **description** |
176
176
  | -------- | ---------- | --------------- |
177
- | `readings-der-stored-energy` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for DER stored energy with `minimum_count` entries |
177
+ | `readings-der-stored-energy` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for DER stored energy with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
178
178
  <br>
179
179
 
180
180
  #### Hexbinary Parameters for Bitwise Operations
@@ -18,7 +18,7 @@ from cactus_test_definitions.variable_expressions import (
18
18
  try_extract_variable_expression,
19
19
  )
20
20
 
21
- __version__ = "1.1.0"
21
+ __version__ = "1.3.0"
22
22
 
23
23
  __all__ = [
24
24
  "TestProcedureDefinitionError",
@@ -33,6 +33,16 @@ class Check:
33
33
  self.parameters[k] = parse_variable_expression_body(variable_expr, k)
34
34
 
35
35
 
36
+ def factory_readings_schema() -> dict[str, Any]:
37
+ """Factory function for common schema shared across reading checks."""
38
+ return {
39
+ "minimum_count": ParameterSchema(False, ParameterType.Integer),
40
+ "minimum_level": ParameterSchema(False, ParameterType.Float),
41
+ "maximum_level": ParameterSchema(False, ParameterType.Float),
42
+ "window_seconds": ParameterSchema(False, ParameterType.UnsignedInteger),
43
+ }
44
+
45
+
36
46
  # The parameter schema for each action, keyed by the action name
37
47
  CHECK_PARAMETER_SCHEMA: dict[str, dict[str, ParameterSchema]] = {
38
48
  "all-steps-complete": {"ignored_steps": ParameterSchema(False, ParameterType.ListString)},
@@ -88,12 +98,12 @@ CHECK_PARAMETER_SCHEMA: dict[str, dict[str, ParameterSchema]] = {
88
98
  "operationalModeStatus": ParameterSchema(False, ParameterType.Integer),
89
99
  "alarmStatus": ParameterSchema(False, ParameterType.Integer),
90
100
  },
91
- "readings-voltage": {"minimum_count": ParameterSchema(True, ParameterType.Integer)},
92
- "readings-site-active-power": {"minimum_count": ParameterSchema(True, ParameterType.Integer)},
93
- "readings-site-reactive-power": {"minimum_count": ParameterSchema(True, ParameterType.Integer)},
94
- "readings-der-active-power": {"minimum_count": ParameterSchema(True, ParameterType.Integer)},
95
- "readings-der-reactive-power": {"minimum_count": ParameterSchema(True, ParameterType.Integer)},
96
- "readings-der-stored-energy": {"minimum_count": ParameterSchema(True, ParameterType.Integer)}, # Storage extension
101
+ "readings-voltage": factory_readings_schema(),
102
+ "readings-site-active-power": factory_readings_schema(),
103
+ "readings-site-reactive-power": factory_readings_schema(),
104
+ "readings-der-active-power": factory_readings_schema(),
105
+ "readings-der-reactive-power": factory_readings_schema(),
106
+ "readings-der-stored-energy": factory_readings_schema(),
97
107
  "subscription-contents": {"subscribed_resource": ParameterSchema(True, ParameterType.String)},
98
108
  "response-contents": {
99
109
  "latest": ParameterSchema(False, ParameterType.Boolean),
@@ -44,28 +44,33 @@ Steps:
44
44
  - type: enable-steps
45
45
  parameters:
46
46
  steps:
47
- - GET-EDEV
47
+ - POST-EDEV
48
48
  - GET-TM
49
49
  - type: remove-steps
50
50
  parameters:
51
51
  steps:
52
52
  - GET-DCAP
53
53
 
54
+ #
55
+ # NOTE - Pending review by the CIRG - this has been disabled as a client seeing an EndDeviceListLink with all=0
56
+ # can reasonably be expected to skip this step.
57
+ #
54
58
  # (g, h, i)
55
- GET-EDEV:
56
- event:
57
- type: GET-request-received
58
- parameters:
59
- endpoint: /edev
60
- actions:
61
- - type: enable-steps
62
- parameters:
63
- steps:
64
- - POST-EDEV
65
- - type: remove-steps
66
- parameters:
67
- steps:
68
- - GET-EDEV
59
+ # GET-EDEV:
60
+ # event:
61
+ # type: GET-request-received
62
+ # parameters:
63
+ # endpoint: /edev
64
+ # actions:
65
+ # - type: enable-steps
66
+ # parameters:
67
+ # steps:
68
+ # - POST-EDEV
69
+ # - type: remove-steps
70
+ # parameters:
71
+ # steps:
72
+ # - GET-EDEV
73
+
69
74
  # (m, n, o)
70
75
  GET-TM:
71
76
  event:
@@ -11,7 +11,7 @@ Criteria:
11
11
  - type: all-steps-complete
12
12
  parameters: {}
13
13
 
14
- # Test includes ~ 5 minutes of waiting + initial reading sent during test
14
+ # Test includes ~ 6 minutes of waiting
15
15
  # A minimum of 4 readings is required by the test procedure
16
16
  - type: readings-der-stored-energy
17
17
  parameters: { "minimum_count": 4 }
@@ -89,6 +89,12 @@ Steps:
89
89
  parameters:
90
90
  duration_seconds: 180 # Wait for at least 2 sets of readings to arrive (with post rate 60 seconds)
91
91
  actions:
92
+ - type: create-der-control
93
+ parameters:
94
+ start: $(now)
95
+ duration_seconds: 600
96
+ opModStorageTargetW: 0
97
+ primacy: 0
92
98
  - type: enable-steps
93
99
  parameters:
94
100
  steps:
@@ -105,12 +111,6 @@ Steps:
105
111
  parameters:
106
112
  endpoint: /edev/1/derp/1/derc
107
113
  actions:
108
- - type: create-der-control
109
- parameters:
110
- start: $(now)
111
- duration_seconds: 600
112
- opModStorageTargetW: 0
113
- primacy: 0
114
114
  - type: enable-steps
115
115
  parameters:
116
116
  steps:
@@ -126,7 +126,7 @@ Steps:
126
126
  event:
127
127
  type: wait
128
128
  parameters:
129
- duration_seconds: 180 # Wait for at least 3 sets of readings to arrive (with post rate 60 seconds)
129
+ duration_seconds: 180 # Wait for at least 2 sets of readings to arrive (with post rate 60 seconds)
130
130
  actions:
131
131
  - type: remove-steps
132
132
  parameters:
@@ -30,6 +30,7 @@ class ParameterType(IntEnum):
30
30
  ListCSIPAusReadingType = auto() # List where each member is a cactus_test_definitions.csipaus.CSIPAusReadingType
31
31
  CSIPAusReadingLocation = auto() # Member of cactus_test_definitions.csipaus.CSIPAusReadingLocation
32
32
  ReadingTypeValues = auto() # A dict of type dict[CSIPAusReadingType, list[float]], each list has the same length
33
+ UnsignedInteger = auto()
33
34
 
34
35
 
35
36
  @dataclass(frozen=True)
@@ -61,6 +62,9 @@ def is_valid_parameter_type(expected_type: ParameterType, value: Any) -> bool:
61
62
  return int(value) == value
62
63
  except Exception:
63
64
  return False
65
+ case ParameterType.UnsignedInteger:
66
+ # Integer that is greater than or equal to 0
67
+ return is_valid_parameter_type(ParameterType.Integer, value) and value >= 0
64
68
  case ParameterType.Float:
65
69
  return isinstance(value, float) or isinstance(value, Decimal) or isinstance(value, int)
66
70
  case ParameterType.Boolean:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cactus-test-definitions
3
- Version: 1.1.0
3
+ Version: 1.3.0
4
4
  Summary: CSIP-AUS Client Test Harness Test Definitions
5
5
  Author-email: Mike Turner <mike.turner@anu.edu.au>, Josh Vote <joshua.vote@anu.edu.au>
6
6
  Maintainer-email: Mike Turner <mike.turner@anu.edu.au>, Josh Vote <joshua.vote@anu.edu.au>
@@ -203,11 +203,11 @@ checks:
203
203
  | `der-settings-contents` | `setGradW: int/None` `doeModesEnabled_set: hex/none` `doeModesEnabled_unset: hex/none` `doeModesEnabled: bool/none` `modesEnabled_set: hex/none` `modesEnabled_unset: hex/none` `setMaxVA: bool/none` `setMaxVar: bool/none` `setMaxW: bool/none` `setMaxChargeRateW: bool/none` `setMaxDischargeRateW: bool/none` `setMaxWh: bool/none` `setMinWh: bool/none` `vppModesEnabled_set: hexbinary/none` `vppModesEnabled_unset: hexbinary/none` `setMaxVarNeg: bool/none` `setMinPFOverExcited: bool/none` `setMinPFUnderExcited: bool/none` | True if a `DERSettings` has been set for the `EndDevice` under test (and if certain elements have been set to certain values) |
204
204
  | `der-capability-contents` | `doeModesSupported_set: hex/none` `doeModesSupported_unset: hex/none` `doeModesSupported: bool/none` `modesSupported_set: hex/none` `modesSupported_unset: hex/none` `rtgMaxVA: bool/none` `rtgMaxVar: bool/none` `rtgMaxW: bool/none` `rtgMaxChargeRateW: bool/none` `rtgMaxDischargeRateW: bool/none` `rtgMaxWh: bool/none` `vppModesSupported_set: hexbinary/none` `vppModesSupported_unset: hexbinary/none` `rtgMaxVarNeg: bool/none` `rtgMinPFOverExcited: bool/none` `rtgMinPFUnderExcited: bool/none` | True if a `DERCapability` has been set for the `EndDevice` under test (and if certain elements have been set to certain values) |
205
205
  | `der-status-contents` | `genConnectStatus: int/None` `operationalModeStatus: int/None` `alarmStatus: int/None` | True if a `DERStatus` has been set for the `EndDevice` under test (and if certain elements have been set to certain values) |
206
- | `readings-site-active-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide active power with `minimum_count` entries |
207
- | `readings-site-reactive-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide reactive power with `minimum_count` entries |
208
- | `readings-voltage` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide voltage OR DER voltage with `minimum_count` entries (at least one is required) |
209
- | `readings-der-active-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for DER active power with `minimum_count` entries |
210
- | `readings-der-reactive-power` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for DER reactive power with `minimum_count` entries |
206
+ | `readings-site-active-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide active power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
207
+ | `readings-site-reactive-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide reactive power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
208
+ | `readings-voltage` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for site wide voltage OR DER voltage with `minimum_count` entries (at least one is required) |
209
+ | `readings-der-active-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for DER active power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
210
+ | `readings-der-reactive-power` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for DER reactive power with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
211
211
  | `response-contents` | `latest: bool/None` `status: int/None` `all: bool/None` | True if at least one received Response matches the filter. `latest` will only consider the most recent received Response. `all` will look for a nominated status match for every `DERControl` |
212
212
  | `subscription-contents` | `subscribed_resource: str` | True if a subscription to `subscribed_resource` has been created |
213
213
 
@@ -215,7 +215,7 @@ The following are csipaus.org/ns/v1.3-beta/storage extension specific checks imp
215
215
 
216
216
  | **name** | **params** | **description** |
217
217
  | -------- | ---------- | --------------- |
218
- | `readings-der-stored-energy` | `minimum_count: int` | True if any MirrorUsagePoint has a MirrorMeterReading for DER stored energy with `minimum_count` entries |
218
+ | `readings-der-stored-energy` | `minimum_count: int/none` `minimum_level: float/none` `maximum_level: float/none` `window_seconds: uint/none` | True if any MirrorUsagePoint has a MirrorMeterReading for DER stored energy with `minimum_count` entries and/or readings all above and/or below `minimum_level`/`maximum_level` respectively; optionally for `window_seconds` |
219
219
  <br>
220
220
 
221
221
  #### Hexbinary Parameters for Bitwise Operations
@@ -8,9 +8,33 @@ from cactus_test_definitions.errors import TestProcedureDefinitionError
8
8
  "check, is_valid",
9
9
  [
10
10
  (Check("foo", {}), False), # Unknown check
11
- (Check("readings-site-active-power", {}), False),
11
+ (Check("readings-site-active-power", {}), True),
12
12
  (Check("readings-site-active-power", {"minimum_count": "3"}), False),
13
13
  (Check("readings-site-active-power", {"minimum_count": 3}), True),
14
+ (Check("readings-site-active-power", {"minimum_count": 3, "minimum_level": 12.3}), True),
15
+ (Check("readings-site-active-power", {"minimum_count": 3, "maximum_level": 12.3}), True),
16
+ (Check("readings-site-active-power", {"minimum_count": 3, "minimum_level": 12.3, "maximum_level": 12.3}), True),
17
+ (
18
+ Check(
19
+ "readings-site-active-power",
20
+ {"minimum_count": 3, "minimum_level": 12.3, "maximum_level": 12.3, "window_seconds": 12.3},
21
+ ),
22
+ False,
23
+ ),
24
+ (
25
+ Check(
26
+ "readings-site-active-power",
27
+ {"minimum_count": 3, "minimum_level": 12.3, "maximum_level": 12.3, "window_seconds": 180},
28
+ ),
29
+ True,
30
+ ),
31
+ (
32
+ Check(
33
+ "readings-site-active-power",
34
+ {"minimum_count": 3, "minimum_level": 12.3, "maximum_level": 12.3, "window_seconds": -180},
35
+ ),
36
+ False,
37
+ ),
14
38
  (Check("der-settings-contents", {"setGradW": 27}), True),
15
39
  (Check("der-settings-contents", {"doeModesEnabled_set": "0f"}), True),
16
40
  (Check("der-settings-contents", {"doeModesEnabled_unset": "0f"}), True),