105 lines
2.5 KiB
Elixir
105 lines
2.5 KiB
Elixir
defmodule KafkaexLagExporter.KafkaUtils.Test do
|
|
use ExUnit.Case
|
|
use Patch
|
|
|
|
alias KafkaexLagExporter.KafkaWrapper.Behaviour, as: KafkaWrapper
|
|
alias KafkaexLagExporter.KafkaUtils
|
|
|
|
@test_endpoint "test_host:1234"
|
|
@test_consumer_group "test-consumer-group"
|
|
@test_sock_opts [ssl: []]
|
|
|
|
setup do
|
|
patch(
|
|
KafkaUtils,
|
|
:connection,
|
|
fn _ -> {@test_endpoint, @test_sock_opts} end
|
|
)
|
|
|
|
:ok
|
|
end
|
|
|
|
describe "resolve_offsets" do
|
|
setup do
|
|
client = :client2
|
|
topic = "test-topic"
|
|
|
|
patch(
|
|
KafkaWrapper,
|
|
:get_partitions_count,
|
|
fn _, _ -> {:ok, 3} end
|
|
)
|
|
|
|
patch(
|
|
KafkaWrapper,
|
|
:resolve_offset,
|
|
fn _, _, _, _, _ -> {:ok, 42} end
|
|
)
|
|
|
|
offsets = KafkaUtils.resolve_offsets(topic, :earliest, client)
|
|
|
|
[client: client, offsets: offsets, topic: topic]
|
|
end
|
|
|
|
test "should get partition count", context do
|
|
expected_topic = context[:topic]
|
|
expected_client = context[:client]
|
|
|
|
assert_called(KafkaWrapper.get_partitions_count(expected_client, expected_topic))
|
|
end
|
|
|
|
test "should resolve offset per partition", context do
|
|
expected_topic = context[:topic]
|
|
|
|
assert_called(
|
|
KafkaWrapper.resolve_offset(@test_endpoint, expected_topic, 0, :earliest, @test_sock_opts)
|
|
)
|
|
|
|
assert_called(
|
|
KafkaWrapper.resolve_offset(@test_endpoint, expected_topic, 1, :earliest, @test_sock_opts)
|
|
)
|
|
|
|
assert_called(
|
|
KafkaWrapper.resolve_offset(@test_endpoint, expected_topic, 2, :earliest, @test_sock_opts)
|
|
)
|
|
end
|
|
|
|
test "should return offsets", context do
|
|
assert context[:offsets] == [{0, 42}, {1, 42}, {2, 42}]
|
|
end
|
|
end
|
|
|
|
describe "fetch_committed_offsets" do
|
|
setup do
|
|
partition_info1 = %{partition_index: 0, committed_offset: 23}
|
|
partition_info2 = %{partition_index: 1, committed_offset: 42}
|
|
|
|
patch(
|
|
KafkaWrapper,
|
|
:fetch_committed_offsets,
|
|
fn _, _, _ ->
|
|
{:ok, [%{name: "test name", partitions: [partition_info1, partition_info2]}]}
|
|
end
|
|
)
|
|
|
|
offsets = KafkaUtils.fetch_committed_offsets("test-topic", @test_consumer_group, :test_atom)
|
|
|
|
[offsets: offsets]
|
|
end
|
|
|
|
test "should get the committed offsets from KafkaWrapper" do
|
|
assert_called(
|
|
KafkaWrapper.fetch_committed_offsets(
|
|
@test_endpoint,
|
|
@test_sock_opts,
|
|
@test_consumer_group
|
|
)
|
|
)
|
|
end
|
|
|
|
test "should return offsets", context do
|
|
assert context[:offsets] == [{0, 23}, {1, 42}]
|
|
end
|
|
end
|
|
end
|