Skip to content

Commit 1f42047

Browse files
committed
Update _get_resampled_receiver to take metric_id as an argument
... instead of from the instance variable. Signed-off-by: Sahas Subramanian <[email protected]>
1 parent e0bd82f commit 1f42047

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

src/frequenz/sdk/timeseries/logical_meter/_resampled_formula_builder.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,19 @@ def __init__(
4040
self._metric_id = metric_id
4141
super().__init__()
4242

43-
async def _get_resampled_receiver(self, component_id: int) -> Receiver[Sample]:
43+
async def _get_resampled_receiver(
44+
self, component_id: int, metric_id: ComponentMetricId
45+
) -> Receiver[Sample]:
4446
"""Get a receiver with the resampled data for the given component id.
4547
46-
This receiver would contain data for the `metric_id` specified when creating the
47-
`ResampledFormulaBuilder` instance.
48-
4948
Args:
5049
component_id: The component id for which to get a resampled data receiver.
50+
metric_id: A metric ID to fetch for all components in this formula.
5151
5252
Returns:
5353
A receiver to stream resampled data for the given component id.
5454
"""
55-
request = ComponentMetricRequest(
56-
self._namespace, component_id, self._metric_id, None
57-
)
55+
request = ComponentMetricRequest(self._namespace, component_id, metric_id, None)
5856
await self._resampler_subscription_sender.send(request)
5957
return self._channel_registry.new_receiver(request.get_channel_name())
6058

@@ -68,7 +66,7 @@ async def push_component_metric(
6866
nones_are_zeros: Whether to treat None values from the stream as 0s. If
6967
False, the returned value will be a None.
7068
"""
71-
receiver = await self._get_resampled_receiver(component_id)
69+
receiver = await self._get_resampled_receiver(component_id, self._metric_id)
7270
self.push_metric(f"#{component_id}", receiver, nones_are_zeros)
7371

7472
async def from_string(

tests/timeseries/test_logical_meter.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@
2323
class TestLogicalMeter:
2424
"""Tests for the logical meter."""
2525

26-
async def _get_resampled_stream(
26+
async def _get_resampled_stream( # pylint: disable=too-many-arguments
2727
self,
2828
logical_meter: LogicalMeter,
2929
channel_registry: ChannelRegistry,
3030
request_sender: Sender[ComponentMetricRequest],
3131
comp_id: int,
32+
metric_id: ComponentMetricId,
3233
) -> Receiver[Sample]:
3334
"""Return the resampled data stream for the given component."""
3435
# Create a `FormulaBuilder` instance, just in order to reuse its
@@ -39,9 +40,12 @@ async def _get_resampled_stream(
3940
logical_meter._namespace,
4041
channel_registry,
4142
request_sender,
42-
ComponentMetricId.ACTIVE_POWER,
43+
metric_id,
44+
)
45+
return await builder._get_resampled_receiver(
46+
comp_id,
47+
metric_id,
4348
)
44-
return await builder._get_resampled_receiver(comp_id)
4549
# pylint: enable=protected-access
4650

4751
async def test_grid_power_1(self, mocker: MockerFixture) -> None:
@@ -63,6 +67,7 @@ async def test_grid_power_1(self, mocker: MockerFixture) -> None:
6367
channel_registry,
6468
request_sender,
6569
mockgrid.main_meter_id,
70+
ComponentMetricId.ACTIVE_POWER,
6671
)
6772

6873
results = []
@@ -102,6 +107,7 @@ async def test_grid_power_2(
102107
channel_registry,
103108
request_sender,
104109
meter_id,
110+
ComponentMetricId.ACTIVE_POWER,
105111
)
106112
for meter_id in mockgrid.meter_ids
107113
]
@@ -149,6 +155,7 @@ async def test_battery_and_pv_power( # pylint: disable=too-many-locals
149155
channel_registry,
150156
request_sender,
151157
meter_id,
158+
ComponentMetricId.ACTIVE_POWER,
152159
)
153160
for meter_id in mockgrid.battery_inverter_ids
154161
]
@@ -159,6 +166,7 @@ async def test_battery_and_pv_power( # pylint: disable=too-many-locals
159166
channel_registry,
160167
request_sender,
161168
meter_id,
169+
ComponentMetricId.ACTIVE_POWER,
162170
)
163171
for meter_id in mockgrid.pv_inverter_ids
164172
]

0 commit comments

Comments
 (0)