Skip to content

Commit 05ebede

Browse files
Add protobuf tests (#38)
1 parent 29cb153 commit 05ebede

File tree

7 files changed

+106
-2
lines changed

7 files changed

+106
-2
lines changed

examples/schema/protobuf/user.proto

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
syntax = "proto3";
2+
package example.protobuf;
3+
4+
message User {
5+
string name = 1;
6+
int32 number = 2;
7+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from user_pb2 import User
2+
from robot.api.deco import keyword
3+
4+
@keyword("Get Type")
5+
def get_type():
6+
return User
7+
8+
@keyword("Create User")
9+
def create_user(name, number: int, serialize :bool=False):
10+
new_user = User(name = name, number = number)
11+
12+
if serialize:
13+
return new_user.SerializeToString()
14+
15+
return new_user

examples/schema/protobuf/user_pb2.py

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/test_avro.robot

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ Avro Producer With Schemas As String Argument
2929

3030
Avro Producer With Path To Schemas
3131
[Setup] Clear Messages From Thread ${MAIN_THREAD}
32-
${value_schema_file_path}= Set Variable examples/schema/producer/ValueSchema.avsc
33-
${key_schema_file_path}= Set Variable examples/schema/producer/KeySchema.avsc
32+
${value_schema_file_path}= Set Variable examples/schema/avro/ValueSchema.avsc
33+
${key_schema_file_path}= Set Variable examples/schema/avro/KeySchema.avsc
3434
${producer_id}= Create Producer schema_registry_url=http://127.0.0.1:8081
3535
... value_schema=${value_schema_file_path} key_schema=${key_schema_file_path}
3636
${value}= Create Dictionary name=Robot number=${10}

examples/test_protobuf.robot

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
*** Settings ***
2+
Library ConfluentKafkaLibrary
3+
Library schema/protobuf/user_helper.py
4+
5+
*** Test Cases ***
6+
Protobuf Producer With Serializer
7+
${schema_registry_conf}= Create Dictionary url=http://127.0.0.1:8081
8+
${schema_registry_client}= Get Schema Registry Client ${schema_registry_conf}
9+
${msg_type}= Get Type
10+
${protobuf_serializer}= Get Protobuf Serializer ${msg_type} ${schema_registry_client}
11+
${protobuf_deserializer}= Get Protobuf Deserializer ${msg_type}
12+
${string_serializer}= Get String Serializer
13+
${string_deserializer}= Get String Deserializer
14+
15+
# On the Producer when legacy is set to True the value must be converted into a binary string
16+
${producer_id}= Create Producer key_serializer=${string_serializer} value_serializer=${protobuf_serializer} legacy=${True}
17+
${value}= Create User Robot 10 ${True}
18+
Produce group_id=${producer_id} topic=protobuf_testing1 key=bd232464-e3d3-425d-93b7-5789dc7273c1 value=${value}
19+
Wait Until Keyword Succeeds 10x 0.5s All Messages Are Delivered ${producer_id}
20+
21+
Protobuf Producer Consumer With Serializer
22+
${schema_registry_conf}= Create Dictionary url=http://127.0.0.1:8081
23+
${schema_registry_client}= Get Schema Registry Client ${schema_registry_conf}
24+
${msg_type}= Get Type
25+
${protobuf_serializer}= Get Protobuf Serializer ${msg_type} ${schema_registry_client}
26+
${protobuf_deserializer}= Get Protobuf Deserializer ${msg_type}
27+
${string_serializer}= Get String Serializer
28+
${string_deserializer}= Get String Deserializer
29+
30+
${producer_id}= Create Producer key_serializer=${string_serializer} value_serializer=${protobuf_serializer} legacy=${False}
31+
${value}= Create User Robot 10
32+
Produce group_id=${producer_id} topic=protobuf_testing2 key=f01df0c6-ec0b-49e9-835f-d766a9e8036f value=${value}
33+
Wait Until Keyword Succeeds 10x 0.5s All Messages Are Delivered ${producer_id}
34+
35+
${consumer_group_id}= Create Consumer auto_offset_reset=earliest key_deserializer=${string_deserializer} value_deserializer=${protobuf_deserializer} legacy=${False}
36+
Subscribe Topic group_id=${consumer_group_id} topics=protobuf_testing2
37+
${messages}= Poll group_id=${consumer_group_id}
38+
Length Should Be ${messages} 1
39+
Should Be Equal ${messages[0]} ${value}
40+
[Teardown] Basic Teardown ${consumer_group_id}
41+
42+
*** Keywords ***
43+
All Messages Are Delivered
44+
[Arguments] ${producer_id}
45+
${count}= Flush ${producer_id}
46+
Log Reaming messages to be delivered: ${count}
47+
Should Be Equal As Integers ${count} 0
48+
49+
Basic Teardown
50+
[Arguments] ${group_id}
51+
Unsubscribe ${group_id}
52+
Close Consumer ${group_id}
53+
${groups}= Create List ${group_id}
54+
${admin_client_id}= Create Admin Client
55+
${resp}= Delete Groups ${admin_client_id} group_ids=${groups}
56+
Log ${resp}

0 commit comments

Comments
 (0)