Fix consumer_power() not working certain configurations.#589
Fix consumer_power() not working certain configurations.#589Marenz merged 3 commits intofrequenz-floss:v0.x.xfrom
consumer_power() not working certain configurations.#589Conversation
23ee961 to
d0cea85
Compare
| ) | ||
| mock_grid = MockMicrogrid( | ||
| grid_side_meter=False, num_values=num_msgs_per_battery, sample_rate_s=0.0 | ||
| main_meter=False, num_values=num_msgs_per_battery, sample_rate_s=0.0 |
There was a problem hiding this comment.
I suggest to call it grid_meter as it's the successor to the GRID component. The term main_meter isn't helpful w.r.t. the meter placement.
There was a problem hiding this comment.
if you're adding a add_consumer_meters, then you might as well add a add_grid_meters method and drop the flag. There has already been some talk about locations with multiple grid meters anyway.
There was a problem hiding this comment.
that' s the next step actually
There was a problem hiding this comment.
I feel like this is not a good idea, because this makes our tests rely on the implementation rather than on just the expected behaviour. I think instead we should always add a main meter, and have special cases for graphs without main meters. Maybe we can discuss tomorrow during the meeting.
There was a problem hiding this comment.
I have added it to the agenda.
tests/timeseries/mock_microgrid.py
Outdated
|
|
||
| Args: | ||
| grid_side_meter: whether the main meter should be on the grid side or not. | ||
| main_meter: whether there is a main meter that is between grid and microgrid. |
There was a problem hiding this comment.
whether there is a meter successor of the GRID component.
| meter_sums: list[Quantity] = [] | ||
| for count in range(10): | ||
| await mockgrid.mock_resampler.send_meter_power([20.0 + count, 12.0, -13.0]) | ||
| await mockgrid.mock_resampler.send_meter_power([20.0 + count, 12.0]) |
There was a problem hiding this comment.
shouldn't the first value in the list send to the non existing meter?
There was a problem hiding this comment.
it doesn't really matter which values are used here as we simply sum them up and compare
There was a problem hiding this comment.
After discussing with Sahas, we should add a consumption meter here, because we are not testing the same case any longer.
| ) -> None: | ||
| """Test the grid power formula without a grid side meter.""" | ||
| mockgrid = MockMicrogrid(grid_side_meter=False) | ||
| mockgrid = MockMicrogrid(main_meter=False) |
There was a problem hiding this comment.
Although one meter is removed, this test still works, since we compare the logical_meters power against the sum of all the other meters.
| grid_production_recv = logical_meter.grid_production_power.new_receiver() | ||
| grid_consumption_recv = logical_meter.grid_consumption_power.new_receiver() | ||
|
|
||
| await mockgrid.mock_resampler.send_meter_power([2.5, 3.5, 4.0]) |
There was a problem hiding this comment.
A Solar inverter that charges the PV panels? Interesting case 😂.
There was a problem hiding this comment.
It's the same power sum as the test above...
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 4.0.0 to 4.1.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst">pytest-cov's changelog</a>.</em></p> <blockquote> <h2>4.1.0 (2023-05-24)</h2> <ul> <li>Updated CI with new Pythons and dependencies.</li> <li>Removed rsyncdir support. This makes pytest-cov compatible with xdist 3.0. Contributed by Sorin Sbarnea in <code>[frequenz-floss#558](pytest-dev/pytest-cov#558) <https://github.com/pytest-dev/pytest-cov/pull/558></code>_.</li> <li>Optimized summary generation to not be performed if no reporting is active (for example, when <code>--cov-report=''</code> is used without <code>--cov-fail-under</code>). Contributed by Jonathan Stewmon in <code>[frequenz-floss#589](pytest-dev/pytest-cov#589) <https://github.com/pytest-dev/pytest-cov/pull/589></code>_.</li> <li>Added support for JSON reporting. Contributed by Matthew Gamble in <code>[frequenz-floss#582](pytest-dev/pytest-cov#582) <https://github.com/pytest-dev/pytest-cov/pull/582></code>_.</li> <li>Refactored code to use f-strings. Contributed by Mark Mayo in <code>[frequenz-floss#572](pytest-dev/pytest-cov#572) <https://github.com/pytest-dev/pytest-cov/pull/572></code>_.</li> <li>Fixed a skip in the test suite for some old xdist. Contributed by a bunch of people in <code>[frequenz-floss#565](pytest-dev/pytest-cov#565) <https://github.com/pytest-dev/pytest-cov/pull/565></code>_.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/2c9f2170d8575b21bafb6402eb30ca7de31e20b9"><code>2c9f217</code></a> Bump version: 4.0.0 → 4.1.0</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/4d245df8f75e434a9e1b162b51265d6a45017465"><code>4d245df</code></a> Update changelog and authors.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/7b095c84ae521b14058d7d520ef36372849063a8"><code>7b095c8</code></a> Skip starting from xdist 3.0.2 (where boxed was removed).</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/605d6902b3b3d17aad0bf811b8c580fc895724ca"><code>605d690</code></a> disabling boxed test if version xdist newer than 2.5.0</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/76fb2a6cb2c4a4a788a5b62710848daf9c8fb7ce"><code>76fb2a6</code></a> introduced f-strings</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/0d63ede0d2ca9f4acc8329aa4261a7cec489ffdb"><code>0d63ede</code></a> Update test config. Reapply some of the changes from PR567 to the right file ...</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/f3d8d8380f6a4b265353fe7cd509b040702f1e64"><code>f3d8d83</code></a> Add support for JSON reporter</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/dec02abeb9fa8ee3547baa054bde6006bea530ee"><code>dec02ab</code></a> Update test deps.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/88a7d348986bace58e26c88a713ef35f900ce2ef"><code>88a7d34</code></a> chore: update AUTHORS and CHANGELOG</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/74eb4cc8b684269b89735e31b623f0f9795c5d5c"><code>74eb4cc</code></a> perf: only call summary when the report will be used</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-cov/compare/v4.0.0...v4.1.0">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
|
updated |
shsms
left a comment
There was a problem hiding this comment.
I have some comments: #589 (comment)
blocking until we discuss tomorrow.
Renames the `grid_side_meter` parameter to be more understandable and explicit. Signed-off-by: Mathias L. Baumann <[email protected]>
Signed-off-by: Mathias L. Baumann <[email protected]>
In microgrids without consumers and no main meter, the formula would never return any values. Signed-off-by: Mathias L. Baumann <[email protected]>
shsms
left a comment
There was a problem hiding this comment.
It turns out my big objections were incorrect, I guess we just have to write more granular test cases in the future, so unblocking.
consumer_power()not working certain configurations.In microgrids without consumers and no main meter, the formula
would never return any values.
This was undiscovered as we didn't test that scenario in the MockMicrogrid class used
for testing.