-
Notifications
You must be signed in to change notification settings - Fork 13
/
json_logger_tcp_test.exs
36 lines (30 loc) · 1.01 KB
/
json_logger_tcp_test.exs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
defmodule Logger.Backends.JSON.TCPTest do
use ExUnit.Case, async: false
require Logger
@backend {Logger.Backends.JSON, :test}
@message "Yo"
@metadata "Very important data"
@level :debug
setup_all do
{:ok, server} = :gen_tcp.listen 0, [:binary, {:active, false}, {:packet, 0}, {:reuseaddr, true}]
{:ok, port} = :inet.port server
config [level: @level, metadata: @metadata, output: {:tcp, "localhost", port}]
on_exit fn ->
:gen_tcp.close(server)
end
{:ok, server: server}
end
test "sends debug message via TCP", %{server: server} do
Logger.debug @message
assert {:ok, client} = :gen_tcp.accept(server, 500)
assert {:ok, message} = :gen_tcp.recv(client, 0, 500)
assert :ok = :gen_tcp.close(client)
assert {:ok, result} = JSON.decode(message)
assert result["level"] == to_string(@level)
assert result["message"] == @message
assert result["metadata"] == @metadata
end
defp config(opts) do
Logger.configure_backend(@backend, opts)
end
end