Add metric registration/config to wobserver application.

This commit is contained in:
Ian Luites 2017-02-13 12:11:22 +00:00
parent f499fc7156
commit d99676ebda
3 changed files with 21 additions and 0 deletions

View File

@ -4,15 +4,18 @@ defmodule Wobserver do
"""
alias Wobserver.Page
alias Wobserver.Util.Metrics
@doc ~S"""
Registers external application to integrate with `:wobserver`.
The following can be registered:
- `:page`, see: `Wobserver.Page.register/1`.
- `:metric`, see: `Wobserver.Util.Metrics.register/1`.
"""
@spec register(:page, page :: Page.data) :: boolean
def register(:page, page), do: Page.register(page)
def register(:metric, metric), do: Metrics.register(metric)
@doc ~S"""
Information about Wobserver.

View File

@ -6,7 +6,9 @@ defmodule Wobserver.Application do
use Application
alias Plug.Adapters.Cowboy
alias Wobserver.Page
alias Wobserver.Util.Metrics
@spec port :: integer
def port do
@ -20,6 +22,7 @@ defmodule Wobserver.Application do
def start(_type, _args) do
# Load pages and metrics from config
Page.load_config
Metrics.load_config
# Start cowboy
import Supervisor.Spec, warn: false

View File

@ -2,6 +2,7 @@ defmodule WobserverTest do
use ExUnit.Case
alias Wobserver.Page
alias Wobserver.Util.Metrics
describe "about" do
test "includes name" do
@ -44,5 +45,19 @@ defmodule WobserverTest do
assert Page.call(:test) == 5
end
test "registers a metric" do
assert Wobserver.register :metric, [example: {fn -> [{5, []}] end, :gauge, "Description"}]
assert Keyword.has_key?(Metrics.overview, :example)
end
test "registers a metric generator" do
assert Wobserver.register :metric, [
fn -> [generated: {fn -> [{5, []}] end, :gauge, "Description"}] end
]
assert Keyword.has_key?(Metrics.overview, :generated)
end
end
end