Skip to content

Commit b72c102

Browse files
committed
Allow base-client to be updated to 0.11.0
Signed-off-by: Mathias L. Baumann <[email protected]>
1 parent 6e01ff3 commit b72c102

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed

RELEASE_NOTES.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66

77
## Upgrading
88

9-
<!-- Here goes notes on how to upgrade from previous versions, including deprecations and what they should be replaced with -->
9+
* When receiving streaming data for components, you now need to handle the receiving of the types `StreamStarted`, `StreamRetrying`, `StreamFatalError`.
10+
11+
If you don't care about the new events and just want the old behavior your can always use `Receiver.filter()` to ignore them, for example: `client.meter_data().filter(lambda m: isinstance(m, MeterData))`.
1012

1113
## New Features
1214

13-
<!-- Here goes the main new features and examples or instructions on how to use them -->
15+
* Using the latest streaming client, when using `stream_sensor_data()` you will now get stream notification events, such as `StreamStarted`, `StreamRetrying` and `StreamFatalError`, which can be used to monitor the state of the stream.
1416

1517
## Bug Fixes
1618

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ requires-python = ">= 3.11, < 4"
3838
dependencies = [
3939
"frequenz-api-microgrid >= 0.15.3, < 0.16.0",
4040
"frequenz-channels >= 1.0.0-rc1, < 2.0.0",
41-
"frequenz-client-base >= 0.8.0, < 0.12.0",
41+
"frequenz-client-base >= 0.11.0, < 0.12.0",
4242
"grpcio >= 1.59.0, < 2",
4343
"protobuf >= 4.21.6, < 7",
4444
"timezonefinder >= 6.2.0, < 7",

tests/test_client.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from frequenz.api.common import components_pb2, metrics_pb2
1818
from frequenz.api.microgrid import grid_pb2, inverter_pb2, microgrid_pb2, sensor_pb2
1919
from frequenz.client.base import conversion, retry
20+
from frequenz.client.base.streaming import StreamRetrying, StreamStarted
2021
from google.protobuf.empty_pb2 import Empty
2122

2223
from frequenz.client.microgrid import (
@@ -688,6 +689,7 @@ async def stream_data(
688689

689690
client.mock_stub.StreamComponentData.side_effect = stream_data
690691
receiver = await getattr(client, method)(component_id)
692+
assert isinstance(await receiver.receive(), StreamStarted)
691693
latest = await receiver.receive()
692694
assert isinstance(latest, component_class)
693695
assert latest.component_id == component_id
@@ -736,14 +738,28 @@ async def stream_data(
736738

737739
client.mock_stub.StreamComponentData.side_effect = stream_data
738740
receiver = await getattr(client, method)(component_id)
741+
assert isinstance(await receiver.receive(), StreamStarted)
742+
assert isinstance(await receiver.receive(), StreamRetrying)
743+
assert isinstance(await receiver.receive(), StreamStarted)
744+
739745
latest = await receiver.receive()
740746
assert isinstance(latest, component_class)
741747
assert latest.component_id == component_id
742748

749+
assert isinstance(await receiver.receive(), StreamRetrying)
750+
assert isinstance(await receiver.receive(), StreamStarted)
751+
assert isinstance(await receiver.receive(), StreamRetrying)
752+
assert isinstance(await receiver.receive(), StreamStarted)
753+
743754
latest = await receiver.receive()
744755
assert isinstance(latest, component_class)
745756
assert latest.component_id == component_id
746757

758+
assert isinstance(await receiver.receive(), StreamRetrying)
759+
assert isinstance(await receiver.receive(), StreamStarted)
760+
assert isinstance(await receiver.receive(), StreamRetrying)
761+
assert isinstance(await receiver.receive(), StreamStarted)
762+
747763
latest = await receiver.receive()
748764
assert isinstance(latest, component_class)
749765
assert latest.component_id == component_id
@@ -947,6 +963,8 @@ async def stream_data_impl(
947963
receiver = client.stream_sensor_data(
948964
SensorId(sensor201.id), [SensorMetric.TEMPERATURE]
949965
)
966+
967+
assert isinstance(await receiver.receive(), StreamStarted)
950968
sample = await receiver.receive()
951969

952970
assert isinstance(sample, SensorDataSamples)
@@ -997,6 +1015,8 @@ async def stream_data_impl(
9971015

9981016
client.mock_stub.StreamComponentData.side_effect = stream_data_impl
9991017
receiver = client.stream_sensor_data(SensorId(sensor201.id))
1018+
1019+
assert isinstance(await receiver.receive(), StreamStarted)
10001020
sample = await receiver.receive()
10011021

10021022
assert isinstance(sample, SensorDataSamples)
@@ -1046,7 +1066,12 @@ async def stream_data_error_impl(
10461066
receiver = client.stream_sensor_data(
10471067
SensorId(sensor201.id), [SensorMetric.TEMPERATURE]
10481068
)
1049-
sample = await receiver.receive() # Should succeed after retries
1069+
assert isinstance(await receiver.receive(), StreamStarted)
1070+
assert isinstance(await receiver.receive(), StreamRetrying)
1071+
assert isinstance(await receiver.receive(), StreamStarted)
1072+
assert isinstance(await receiver.receive(), StreamRetrying)
1073+
assert isinstance(await receiver.receive(), StreamStarted)
1074+
sample = await receiver.receive() # Get the actual sample
10501075

10511076
assert isinstance(sample, SensorDataSamples)
10521077
assert int(sample.sensor_id) == sensor201.id

0 commit comments

Comments
 (0)