Sha256: c814acda0c1e58e013385d6df87e0d865e5c70aecbe3421d1439fd938fe80a0f

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

require "helper"
require "avro_turf/test/fake_confluent_schema_registry_server"
require "fluent/plugin/formatter_avro_turf_messaging"

class AvroTurfFormatterTest < Test::Unit::TestCase
  def registry_url
    "http://schema-registry.example.com:8081/"
  end

  setup do
    Fluent::Test.setup
    stub_request(:any, /^#{registry_url}/).to_rack(FakeConfluentSchemaRegistryServer)
    FakeConfluentSchemaRegistryServer.clear
  end

  def schemas_path
    File.expand_path("../schemas", __dir__)
  end

  def user_record
    {
      "username" => "joker1007",
      "email" => "dummy@example.com",
      "created_at" => Time.utc(2019, 8, 24, 18, 1, 2).to_i * 1000
    }
  end

  def person_record
    {
      "first_name" => "John",
      "last_name" => "Doe",
    }
  end

  test "format" do
    d = create_driver(
      schema_registry_url: registry_url,
      schemas_path: schemas_path,
    )
    formatted = d.instance.format("tag.test", event_time, user_record.merge("schema_name" => "user"))
    avro_turf = AvroTurf::Messaging.new(registry_url: registry_url, schemas_path: schemas_path)
    decoded = avro_turf.decode(formatted, schema_name: "user")
    assert { decoded == user_record }
  end

  test "format with inline schema" do
    schema = {
      "name" => "person",
      "type" => "record",
      "fields" => [
        {
          "name" => "first_name",
          "type" => "string"
        },
        {
          "name" => "last_name",
          "type" => "string"
        },
      ]
    }
    d = create_driver(
      schema_registry_url: registry_url,
      schema: schema
    )
    formatted = nil
    assert_nothing_raised do
      formatted = d.instance.format("tag.test", event_time, person_record)
    end
    assert_not_nil(formatted)
  end

  private

  def create_driver(conf)
    Fluent::Test::Driver::Formatter.new(Fluent::Plugin::AvroTurfFormatter).configure(conf)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fluent-plugin-avro_turf-0.1.0 test/plugin/test_formatter_avro_turf_messaging.rb