Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json.ex
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,11 @@ defmodule RabbitMQ.CLI.Formatters.Json do

defp convert_erlang_strings([]), do: []

defp convert_erlang_strings([b | _rest]=data) when is_binary(b) do
# Assume this is a list of strings already converted
data
end

defp convert_erlang_strings(data) when is_list(data) do
try do
case :unicode.characters_to_binary(data, :utf8) do
Expand Down
40 changes: 40 additions & 0 deletions deps/rabbitmq_cli/test/json_formatting_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,21 @@ defmodule JSONFormattingTest do
assert Map.has_key?(doc, "os")
assert Map.has_key?(doc, "pid")
assert Map.has_key?(doc, "rabbitmq_version")
assert Map.has_key?(doc, "active_plugins")
assert Map.has_key?(doc, "config_files")
assert Map.has_key?(doc, "log_files")

active_plugins = doc["active_plugins"]
assert is_list(active_plugins)
assert Enum.all?(active_plugins, &is_binary/1)

config_files = doc["config_files"]
assert is_list(config_files)
assert Enum.all?(config_files, &is_binary/1)

log_files = doc["log_files"]
assert is_list(log_files)
assert Enum.all?(log_files, &is_binary/1)

assert doc["alarms"] == []
end
Expand All @@ -55,10 +70,35 @@ defmodule JSONFormattingTest do

{:ok, doc} = JSON.decode(output)

assert Map.has_key?(doc, "running_nodes")
running_nodes = doc["running_nodes"]
assert is_list(running_nodes)
assert Enum.all?(running_nodes, &is_binary/1)

assert Enum.member?(doc["disk_nodes"], node)
assert Map.has_key?(doc["listeners"], node)
assert Map.has_key?(doc["versions"], node)
assert Map.has_key?(doc["versions"], node)
assert doc["alarms"] == []
assert doc["partitions"] == %{}
end

test "JSON output of environment" do
set_scope(:ctl)

node = to_string(get_rabbit_hostname())
command = ["environment", "-n", node, "--formatter=json"]

output =
capture_io(:stdio, fn ->
error_check(command, exit_ok())
end)

{:ok, doc} = JSON.decode(output)
assert Map.has_key?(doc, "rabbit")
rabbit = doc["rabbit"]
assert Map.has_key?(rabbit, "data_dir")
data_dir = rabbit["data_dir"]
assert is_binary(data_dir)
end
end
Loading