Skip to content

Commit 120997b

Browse files
authored
[RSDK-11704] Fix get images server source name (#999)
1 parent 175467f commit 120997b

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

src/viam/components/camera/service.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ async def GetImage(self, stream: Stream[GetImageRequest, GetImageResponse]) -> N
4545
async def GetImages(self, stream: Stream[GetImagesRequest, GetImagesResponse]) -> None:
4646
request = await stream.recv_message()
4747
assert request is not None
48-
name = request.name
49-
camera = self.get_resource(name)
48+
camera = self.get_resource(request.name)
5049

5150
timeout = stream.deadline.time_remaining() if stream.deadline else None
5251
images, metadata = await camera.get_images(
@@ -62,7 +61,7 @@ async def GetImages(self, stream: Stream[GetImagesRequest, GetImagesResponse]) -
6261
fmt = mime_type.to_proto() # Will be Format.FORMAT_UNSPECIFIED if an unsupported/custom mime type is set
6362

6463
img_bytes = img.data
65-
img_bytes_lst.append(Image(source_name=name, mime_type=img.mime_type, format=fmt, image=img_bytes))
64+
img_bytes_lst.append(Image(source_name=img.name, mime_type=img.mime_type, format=fmt, image=img_bytes))
6665
response = GetImagesResponse(images=img_bytes_lst, response_metadata=metadata)
6766
await stream.send_message(response)
6867

tests/test_camera.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from datetime import datetime
2+
from typing import Optional
23

34
import pytest
45
from google.api.httpbody_pb2 import HttpBody
@@ -165,6 +166,26 @@ async def test_get_images(self, camera: MockCamera, service: CameraRPCService, m
165166
assert response.response_metadata == metadata
166167
assert camera.timeout == loose_approx(18.1)
167168

169+
async def test_get_images_uses_source_name_not_resource_name(self):
170+
class MockCameraWithCustomSource(MockCamera):
171+
def __init__(self, name: str, source_name: str):
172+
super().__init__(name)
173+
self._source_name = source_name
174+
175+
async def get_images(self, timeout: Optional[float] = None, **kwargs):
176+
self.timeout = timeout
177+
return [NamedImage(self._source_name, self.image.data, self.image.mime_type)], self.metadata
178+
179+
custom_camera = MockCameraWithCustomSource("camera", "the_source")
180+
rm = ResourceManager([custom_camera])
181+
service = CameraRPCService(rm)
182+
183+
async with ChannelFor([service]) as channel:
184+
client = CameraServiceStub(channel)
185+
request = GetImagesRequest(name="camera")
186+
response: GetImagesResponse = await client.GetImages(request)
187+
assert response.images[0].source_name == "the_source"
188+
168189
async def test_render_frame(self, camera: MockCamera, service: CameraRPCService, image: ViamImage):
169190
assert camera.timeout is None
170191
async with ChannelFor([service]) as channel:

0 commit comments

Comments
 (0)