Skip to content

Derpl pollrate#351

Merged
joshvote merged 8 commits intomainfrom
derpl_pollrate
Apr 28, 2026
Merged

Derpl pollrate#351
joshvote merged 8 commits intomainfrom
derpl_pollrate

Conversation

@LachlanJW
Copy link
Copy Markdown
Contributor

Issue 1 Changing derpl_pollrate_seconds never triggered a notification
Issue 2 Even if a notification had been sent, pollRate was absent from the payload

Adds these following existing patterns for EndDeviceList and FunctionSetAssignmentsList.

@LachlanJW LachlanJW requested a review from joshvote April 28, 2026 04:04
@joshvote
Copy link
Copy Markdown
Contributor

✅ Code coverage on derpl_pollrate is at 91% (compared to main being at 91%)

File Reductions

File Details
src/envoy/admin/manager/config.py 🔻 2% (32% → 30%)
src/envoy/notification/task/transmit.py 🔻 1% (94% → 93%)

Full Coverage Report

File Details
src/envoy/__init__.py ✅ 100% → 100%
src/envoy/admin/__init__.py ✅ 100% → 100%
src/envoy/admin/api/__init__.py ✅ 100% → 100%
src/envoy/admin/api/aggregator.py ✅ 72% → 72%
src/envoy/admin/api/archive.py ✅ 100% → 100%
src/envoy/admin/api/billing.py ✅ 85% → 85%
src/envoy/admin/api/certificate.py ✅ 78% → 78%
src/envoy/admin/api/config.py ✅ 100% → 100%
src/envoy/admin/api/depends.py ✅ 100% → 100%
src/envoy/admin/api/doe.py ✅ 85% → 85%
src/envoy/admin/api/health.py ✅ 60% → 60%
src/envoy/admin/api/log.py ✅ 81% → 81%
src/envoy/admin/api/pricing.py ✅ 81% → 81%
src/envoy/admin/api/site.py ✅ 76% → 76%
src/envoy/admin/api/site_control.py ✅ 78% → 78%
src/envoy/admin/api/site_reading.py ✅ 100% → 100%
src/envoy/admin/crud/__init__.py ✅ 100% → 100%
src/envoy/admin/crud/aggregator.py ✅ 100% → 100%
src/envoy/admin/crud/archive.py ✅ 100% → 100%
src/envoy/admin/crud/billing.py ✅ 100% → 100%
src/envoy/admin/crud/certificate.py ✅ 100% → 100%
src/envoy/admin/crud/doe.py ✅ 100% → 100%
src/envoy/admin/crud/log.py ✅ 100% → 100%
src/envoy/admin/crud/pricing.py ✅ 100% → 100%
src/envoy/admin/crud/site.py ✅ 100% → 100%
src/envoy/admin/crud/site_reading.py ✅ 100% → 100%
src/envoy/admin/main.py ✅ 91% → 91%
src/envoy/admin/manager/__init__.py ✅ 100% → 100%
src/envoy/admin/manager/aggregator.py ✅ 86% → 86%
src/envoy/admin/manager/archive.py ✅ 71% → 71%
src/envoy/admin/manager/billing.py ✅ 65% → 65%
src/envoy/admin/manager/certificate.py ✅ 90% → 90%
src/envoy/admin/manager/config.py 🔻 2% (32% → 30%)
src/envoy/admin/manager/doe.py ✅ 82% → 82%
src/envoy/admin/manager/log.py ✅ 77% → 77%
src/envoy/admin/manager/pricing.py ✅ 84% → 84%
src/envoy/admin/manager/site.py ✅ 52% → 52%
src/envoy/admin/manager/site_control.py ✅ 63% → 63%
src/envoy/admin/manager/site_reading.py ✅ 64% → 64%
src/envoy/admin/mapper/__init__.py ✅ 100% → 100%
src/envoy/admin/mapper/aggregator.py ✅ 94% → 94%
src/envoy/admin/mapper/archive.py ✅ 100% → 100%
src/envoy/admin/mapper/billing.py ✅ 97% → 97%
src/envoy/admin/mapper/certificate.py ✅ 100% → 100%
src/envoy/admin/mapper/doe.py ✅ 100% → 100%
src/envoy/admin/mapper/log.py ✅ 100% → 100%
src/envoy/admin/mapper/pricing.py ✅ 100% → 100%
src/envoy/admin/mapper/site.py ✅ 99% → 99%
src/envoy/admin/mapper/site_control.py ✅ 100% → 100%
src/envoy/admin/mapper/site_reading.py ✅ 100% → 100%
src/envoy/admin/settings.py ✅ 100% → 100%
src/envoy/logfilters.py ✅ 0% → 0%
src/envoy/notification/__init__.py ✅ 100% → 100%
src/envoy/notification/crud/__init__.py ✅ 100% → 100%
src/envoy/notification/crud/archive.py ✅ 89% → 89%
src/envoy/notification/crud/batch.py ✅ 97% → 97%
src/envoy/notification/crud/common.py ✅ 100% → 100%
src/envoy/notification/exception.py ✅ 100% → 100%
src/envoy/notification/handler.py ✅ 94% → 94%
src/envoy/notification/main.py ✅ 0% → 0%
src/envoy/notification/manager/__init__.py ✅ 100% → 100%
src/envoy/notification/manager/notification.py ✅ 100% → 100%
src/envoy/notification/settings.py ✅ 0% → 0%
src/envoy/notification/task/__init__.py ✅ 100% → 100%
src/envoy/notification/task/check.py ✅ 96% → 96%
src/envoy/notification/task/transmit.py 🔻 1% (94% → 93%)
src/envoy/server/__init__.py ✅ 100% → 100%
src/envoy/server/alembic/__init__.py ✅ 83% → 83%
src/envoy/server/alembic/env.py ✅ 0% → 0%
src/envoy/server/api/__init__.py ✅ 100% → 100%
src/envoy/server/api/auth/__init__.py ✅ 100% → 100%
src/envoy/server/api/auth/azure.py ✅ 98% → 98%
src/envoy/server/api/auth/jwks.py ✅ 100% → 100%
src/envoy/server/api/csip_aus/__init__.py ✅ 100% → 100%
src/envoy/server/api/csip_aus/connection_point.py ✅ 64% → 64%
src/envoy/server/api/depends/allow_nmi_updates.py ✅ 100% → 100%
src/envoy/server/api/depends/azure_ad_auth.py ✅ 94% → 94%
src/envoy/server/api/depends/lfdi_auth.py ✅ 95% → 95%
src/envoy/server/api/depends/nmi_validator.py ✅ 100% → 100%
src/envoy/server/api/depends/request_state_settings.py ✅ 100% → 100%
src/envoy/server/api/error_handler.py ✅ 88% → 88%
src/envoy/server/api/query.py ✅ 100% → 100%
src/envoy/server/api/request.py ✅ 94% → 94%
src/envoy/server/api/response.py ✅ 96% → 96%
src/envoy/server/api/router.py ✅ 100% → 100%
src/envoy/server/api/sep2/__init__.py ✅ 100% → 100%
src/envoy/server/api/sep2/der.py ✅ 57% → 57%
src/envoy/server/api/sep2/derp.py ✅ 68% → 68%
src/envoy/server/api/sep2/device_capability.py ✅ 93% → 93%
src/envoy/server/api/sep2/end_device.py ✅ 80% → 80%
src/envoy/server/api/sep2/function_set_assignments.py ✅ 77% → 77%
src/envoy/server/api/sep2/log_event.py ✅ 83% → 83%
src/envoy/server/api/sep2/metering_mirror.py ✅ 61% → 61%
src/envoy/server/api/sep2/pricing.py ✅ 64% → 64%
src/envoy/server/api/sep2/response.py ✅ 85% → 85%
src/envoy/server/api/sep2/subscription.py ✅ 75% → 75%
src/envoy/server/api/sep2/time.py ✅ 96% → 96%
src/envoy/server/api/unsecured/__init__.py ✅ 100% → 100%
src/envoy/server/api/unsecured/health.py ✅ 48% → 48%
src/envoy/server/api/unsecured/version.py ✅ 100% → 100%
src/envoy/server/cache.py ✅ 93% → 93%
src/envoy/server/crud/__init__.py ✅ 100% → 100%
src/envoy/server/crud/aggregator.py ✅ 100% → 100%
src/envoy/server/crud/archive.py ✅ 100% → 100%
src/envoy/server/crud/auth.py ✅ 100% → 100%
src/envoy/server/crud/common.py ✅ 97% → 97%
src/envoy/server/crud/der.py ✅ 100% → 100%
src/envoy/server/crud/doe.py ✅ 100% → 100%
src/envoy/server/crud/health.py ✅ 88% → 88%
src/envoy/server/crud/log_event.py ✅ 100% → 100%
src/envoy/server/crud/pricing.py ✅ 100% → 100%
src/envoy/server/crud/response.py ✅ 100% → 100%
src/envoy/server/crud/server.py ✅ 100% → 100%
src/envoy/server/crud/site.py ✅ 100% → 100%
src/envoy/server/crud/site_reading.py ✅ 100% → 100%
src/envoy/server/crud/subscription.py ✅ 97% → 97%
src/envoy/server/database.py ✅ 100% → 100%
src/envoy/server/endpoint_exclusion.py ✅ 100% → 100%
src/envoy/server/exception.py ✅ 100% → 100%
src/envoy/server/lifespan.py ✅ 83% → 83%
src/envoy/server/main.py ✅ 98% → 98%
src/envoy/server/manager/__init__.py ✅ 100% → 100%
src/envoy/server/manager/der.py ✅ 99% → 99%
src/envoy/server/manager/der_constants.py ✅ 100% → 100%
src/envoy/server/manager/derp.py ✅ 100% → 100%
src/envoy/server/manager/device_capability.py ✅ 100% → 100%
src/envoy/server/manager/end_device.py ✅ 96% → 96%
src/envoy/server/manager/function_set_assignments.py ✅ 100% → 100%
src/envoy/server/manager/health.py ✅ 83% → 83%
src/envoy/server/manager/log_event.py ✅ 100% → 100%
src/envoy/server/manager/metering.py ✅ 99% → 99%
src/envoy/server/manager/nmi_validator.py ✅ 97% → 97%
src/envoy/server/manager/pricing.py ✅ 98% → 98%
src/envoy/server/manager/response.py ✅ 92% → 92%
src/envoy/server/manager/server.py ✅ 100% → 100%
src/envoy/server/manager/subscription.py ✅ 98% → 98%
src/envoy/server/manager/time.py ✅ 92% → 92%
src/envoy/server/mapper/__init__.py ✅ 100% → 100%
src/envoy/server/mapper/common.py ✅ 92% → 92%
src/envoy/server/mapper/constants.py ✅ 100% → 100%
src/envoy/server/mapper/csip_aus/__init__.py ✅ 100% → 100%
src/envoy/server/mapper/csip_aus/connection_point.py ✅ 100% → 100%
src/envoy/server/mapper/csip_aus/doe.py ✅ 98% → 98%
src/envoy/server/mapper/sep2/__init__.py ✅ 100% → 100%
src/envoy/server/mapper/sep2/der.py ✅ 100% → 100%
src/envoy/server/mapper/sep2/device_capability.py ✅ 100% → 100%
src/envoy/server/mapper/sep2/end_device.py ✅ 100% → 100%
src/envoy/server/mapper/sep2/function_set_assignments.py ✅ 100% → 100%
src/envoy/server/mapper/sep2/log_event.py ✅ 100% → 100%
src/envoy/server/mapper/sep2/metering.py ✅ 99% → 99%
src/envoy/server/mapper/sep2/mrid.py ✅ 91% → 91%
src/envoy/server/mapper/sep2/pricing.py ✅ 99% → 99%
src/envoy/server/mapper/sep2/pub_sub.py ✅ 93% → 93%
src/envoy/server/mapper/sep2/response.py ✅ 99% → 99%
src/envoy/server/model/__init__.py ✅ 100% → 100%
src/envoy/server/model/aggregator.py ✅ 100% → 100%
src/envoy/server/model/archive/__init__.py ✅ 100% → 100%
src/envoy/server/model/archive/base.py ✅ 100% → 100%
src/envoy/server/model/archive/doe.py ✅ 100% → 100%
src/envoy/server/model/archive/site.py ✅ 100% → 100%
src/envoy/server/model/archive/site_reading.py ✅ 100% → 100%
src/envoy/server/model/archive/subscription.py ✅ 100% → 100%
src/envoy/server/model/archive/tariff.py ✅ 100% → 100%
src/envoy/server/model/base.py ✅ 100% → 100%
src/envoy/server/model/config/server.py ✅ 100% → 100%
src/envoy/server/model/constants.py ✅ 100% → 100%
src/envoy/server/model/doe.py ✅ 100% → 100%
src/envoy/server/model/log.py ✅ 100% → 100%
src/envoy/server/model/response.py ✅ 100% → 100%
src/envoy/server/model/server.py ✅ 100% → 100%
src/envoy/server/model/site.py ✅ 100% → 100%
src/envoy/server/model/site_reading.py ✅ 100% → 100%
src/envoy/server/model/subscription.py ✅ 100% → 100%
src/envoy/server/model/tariff.py ✅ 100% → 100%
src/envoy/server/request_scope.py ✅ 98% → 98%
src/envoy/server/settings.py ✅ 98% → 98%
src/envoy/server/tasks.py ✅ 100% → 100%
src/envoy/settings.py ✅ 100% → 100%
TOTAL ✅ 91% → 91%

@joshvote joshvote merged commit edfd2ab into main Apr 28, 2026
12 checks passed
@joshvote joshvote deleted the derpl_pollrate branch April 28, 2026 06:34
joshvote added a commit that referenced this pull request Apr 29, 2026
* Tagging v1.3.6

* Added support for emulating shared DERControl mrids via display_id (#347)

* Initial skeleton

* Added mapping/test coverage

* Fixed test

* Add second aggregator to demo (#344)

* Improved pow10 multiplier validation (#345)

* wip

* add reset script to the demo folder. We can make this more complex later.

* add rebuild tls and db init

* black

* fix other tests

* ensure NMI validation in docker compose (#346)

* Blacklisting taskiq-aio-pika v0.6.0 (#348)

* Nullable SiteControlGroup fsa_id (#349)

* Added update admin API endpoint

* Fixed fsa_id None values appearing in FSA list

* Remaining fixes

* Fixed DERProgramList pollrate and notifications (#351)

* ensure NMI validation in docker compose

* wip

* wip

* WIP

* tests

* done

---------

Co-authored-by: Lachlan <161661313+LachlanJW@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants