Files
kafkaex-lag-exporter/test/kafka_utils_test.exs

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