Skip to content

Commit

Permalink
Serialize feedback message in feedback callback
Browse files Browse the repository at this point in the history
  • Loading branch information
sea-bass committed Nov 6, 2023
1 parent bf23ace commit f30ecdf
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@

from rosbridge_library.capability import Capability
from rosbridge_library.internal.actions import ActionClientHandler
from rosbridge_library.internal.message_conversion import extract_values
from rosbridge_library.protocol import Protocol


Expand Down Expand Up @@ -178,7 +179,7 @@ def _feedback(self, cid: str, action: str, message: dict) -> None:
outgoing_message = {
"op": "action_feedback",
"action": action,
"values": message,
"values": extract_values(message.feedback),
}
if cid is not None:
outgoing_message["id"] = cid
Expand Down
20 changes: 13 additions & 7 deletions rosbridge_server/test/websocket/send_action_goal.test.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def execute_callback(self, goal):
for i in range(1, goal.request.order):
feedback_msg.sequence.append(feedback_msg.sequence[i] + feedback_msg.sequence[i - 1])
goal.publish_feedback(feedback_msg)
time.sleep(0.1)
time.sleep(0.5)

goal.succeed()
result = Fibonacci.Result()
Expand All @@ -47,7 +47,7 @@ async def test_one_call(self, node: Node, make_client):

ws_client = await make_client()
responses_future, ws_client.message_handler = expect_messages(
1, "WebSocket", node.get_logger()
5, "WebSocket", node.get_logger()
)
responses_future.add_done_callback(lambda _: node.executor.wake())

Expand All @@ -62,10 +62,16 @@ async def test_one_call(self, node: Node, make_client):
)

responses = await responses_future
self.assertEqual(len(responses), 1)
self.assertEqual(responses[0]["op"], "action_result")
self.assertEqual(responses[0]["action"], "/test_fibonacci_action")
self.assertEqual(responses[0]["values"]["result"]["sequence"], [0, 1, 1, 2, 3, 5])
self.assertEqual(responses[0]["result"], True)
expected_result = [0, 1, 1, 2, 3, 5]
self.assertEqual(len(responses), 5)

for idx in range(4):
self.assertEqual(responses[idx]["op"], "action_feedback")
self.assertEqual(responses[idx]["values"]["sequence"], expected_result[: idx + 3])

self.assertEqual(responses[-1]["op"], "action_result")
self.assertEqual(responses[-1]["action"], "/test_fibonacci_action")
self.assertEqual(responses[-1]["values"]["result"]["sequence"], expected_result)
self.assertEqual(responses[-1]["result"], True)

action_server.destroy()

0 comments on commit f30ecdf

Please sign in to comment.