Packages

Cafex is a pure Elixir implementation of Kafka client.

Current section

Files

Jump to
misha_cafex test protocol sync_group_test.exs
Raw

test/protocol/sync_group_test.exs

defmodule Cafex.Protocol.SyncGroup.Test do
use ExUnit.Case, async: true
alias Cafex.Protocol.SyncGroup
alias Cafex.Protocol.SyncGroup.Request
alias Cafex.Protocol.SyncGroup.Response
test "SyncGroup protocol implementation" do
req = %Request{}
assert SyncGroup.has_response?(req) == true
assert SyncGroup.decoder(req) == SyncGroup
assert SyncGroup.api_key(req) == Cafex.Protocol.api_key(:sync_group)
assert SyncGroup.api_version(req) == 0
end
test "encode creates a valid non-leader SyncGroup request" do
good_request = << 19 :: 16,
"cafex_test_consumer" :: binary,
1 :: 32,
42 :: 16,
"cafex-e6f5cd5e-116b-49a3-a3ca-8746779f3cc5",
0 :: 32>>
request = %Request{
group_id: "cafex_test_consumer",
generation_id: 1,
member_id: "cafex-e6f5cd5e-116b-49a3-a3ca-8746779f3cc5",
group_assignment: []
}
assert good_request == Cafex.Protocol.Request.encode(request)
end
test "encode creates a valid leader SyncGroup request" do
good_request = << 19 :: 16,
"cafex_test_consumer" :: binary,
1 :: 32,
42 :: 16,
"cafex-e6f5cd5e-116b-49a3-a3ca-8746779f3cc5" :: binary,
1 :: 32,
42 :: 16,
"cafex-e6f5cd5e-116b-49a3-a3ca-8746779f3cc5" :: binary,
46 :: 32,
0 :: 16,
1 :: 32,
10 :: 16,
"cafex_test" :: binary,
5 :: 32,
0 :: 32,
1 :: 32,
2 :: 32,
3 :: 32,
4 :: 32,
0 :: 32
>>
request = %Request{
group_id: "cafex_test_consumer",
generation_id: 1,
member_id: "cafex-e6f5cd5e-116b-49a3-a3ca-8746779f3cc5",
group_assignment: [
{"cafex-e6f5cd5e-116b-49a3-a3ca-8746779f3cc5", {0, [{"cafex_test", [0, 1, 2, 3, 4]}], ""}}
]
}
assert good_request == Cafex.Protocol.Request.encode(request)
end
test "parse_response correctly parse a valid response" do
response = << 0 :: 16,
46 :: 32,
0 :: 16,
1 :: 32,
10 :: 16,
"cafex_test" :: binary,
5 :: 32,
0 :: 32,
1 :: 32,
2 :: 32,
3 :: 32,
4 :: 32,
0 :: 32>>
expected_response = %Response{
error: :no_error,
member_assignment: {0, [{"cafex_test", [0, 1, 2, 3, 4]}], ""}}
assert expected_response == SyncGroup.decode(response)
end
end