Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F116285
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
9 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/lib/prometheus/registry.ex b/lib/prometheus/registry.ex
index b7d91ae..4f1dadb 100644
--- a/lib/prometheus/registry.ex
+++ b/lib/prometheus/registry.ex
@@ -1,63 +1,74 @@
defmodule Prometheus.Registry do
@moduledoc """
A registry of Collectors.
The majority of users should use the `:default`, rather than their own.
Creating a registry other than the default is primarily useful for
unit tests, or pushing a subset of metrics to the
[Pushgateway](https://github.com/prometheus/pushgateway) from batch jobs.
"""
use Prometheus.Erlang, :prometheus_registry
+ @doc """
+ Tries to find registry with the `name`.
+ Assumes that registry name is always an atom.
+ If `Name` is an atom `ets:lookup/2` is used
+ If `Name` is an iolist performs safe search (to avoid interning
+ atoms) and returns atom or false. This operation is O(n).
+ """
+ defmacro exists(name) do
+ Erlang.call([name])
+ end
+
@doc """
Calls `callback` for each collector with two arguments: `registry` and `collector`.
"""
defmacro collect(callback, registry \\ :default) do
Erlang.call([registry, callback])
end
@doc """
Returns collectors registered in `registry`.
"""
defmacro collectors(registry \\ :default) do
Erlang.call([registry])
end
@doc """
Registers a collector.
"""
defmacro register_collector(registry \\ :default, collector) do
Erlang.call([registry, collector])
end
@doc """
Registers collectors list.
"""
defmacro register_collectors(registry \\ :default, collectors) do
Erlang.call([registry, collectors])
end
@doc """
Unregisters a collector.
"""
defmacro deregister_collector(registry \\ :default, collector) do
Erlang.call([registry, collector])
end
@doc """
Unregisters all collectors.
"""
defmacro clear(registry \\ :default) do
Erlang.call([registry])
end
@doc """
Checks whether `collector` is registered.
"""
defmacro collector_registered?(registry \\ :default, collector) do
Erlang.call(:collector_registeredp, [registry, collector])
end
end
diff --git a/mix.exs b/mix.exs
index cc71fa6..98f4010 100644
--- a/mix.exs
+++ b/mix.exs
@@ -1,57 +1,57 @@
defmodule PrometheusEx.Mixfile do
use Mix.Project
@version "1.1.1"
def project do
[app: :prometheus_ex,
version: @version,
elixir: "~> 1.3",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
description: description(),
package: package(),
name: "Prometheus.ex",
deps: deps(),
test_coverage: [tool: ExCoveralls],
preferred_cli_env: ["coveralls": :test, "coveralls.html": :test],
docs: [main: Prometheus,
source_ref: "v#{@version}",
source_url: "https://github.com/deadtrickster/prometheus.ex",
extras: ["pages/Mnesia Collector.md",
"pages/VM Memory Collector.md",
"pages/VM Statistics Collector.md",
"pages/VM System Info Collector.md",
"pages/Time.md"]]]
end
def application do
[applications: [:logger,
:prometheus]]
end
defp description do
"""
Elixir-friendly Prometheus monitoring system client.
"""
end
defp package do
[maintainers: ["Ilya Khaprov"],
licenses: ["MIT"],
links: %{"GitHub" => "https://github.com/deadtrickster/prometheus.ex",
"Prometheus.erl" => "https://hex.pm/packages/prometheus",
"Ecto Instrumenter" => "https://hex.pm/packages/prometheus_ecto",
"Phoenix Instrumenter" => "https://hex.pm/packages/prometheus_phoenix",
"Plugs Instrumenter/Exporter" => "https://hex.pm/packages/prometheus_plugs",
"Process info Collector" => "https://hex.pm/packages/prometheus_process_collector"}]
end
defp deps do
- [{:prometheus, "~> 3.1"},
+ [{:prometheus, "~> 3.2"},
{:credo, git: "https://github.com/rrrene/credo", only: [:dev, :test]},
{:excoveralls, "~> 0.5.6", only: :test},
{:ex_doc, "~> 0.11", only: :dev},
{:earmark, ">= 0.0.0", only: :dev}]
end
end
diff --git a/mix.lock b/mix.lock
index c213297..3ba17c3 100644
--- a/mix.lock
+++ b/mix.lock
@@ -1,14 +1,14 @@
%{"bunt": {:hex, :bunt, "0.1.6", "5d95a6882f73f3b9969fdfd1953798046664e6f77ec4e486e6fafc7caad97c6f", [:mix], []},
"certifi": {:hex, :certifi, "0.4.0", "a7966efb868b179023618d29a407548f70c52466bf1849b9e8ebd0e34b7ea11f", [:rebar3], []},
"credo": {:git, "https://github.com/rrrene/credo", "075dc2f81539ee7e901ac33e4bb1ff7b2142c12b", []},
"earmark": {:hex, :earmark, "1.0.2", "a0b0904d74ecc14da8bd2e6e0248e1a409a2bc91aade75fcf428125603de3853", [:mix], []},
"ex_doc": {:hex, :ex_doc, "0.14.3", "e61cec6cf9731d7d23d254266ab06ac1decbb7651c3d1568402ec535d387b6f7", [:mix], [{:earmark, "~> 1.0", [hex: :earmark, optional: false]}]},
"excoveralls": {:hex, :excoveralls, "0.5.7", "5d26e4a7cdf08294217594a1b0643636accc2ad30e984d62f1d166f70629ff50", [:mix], [{:exjsx, "~> 3.0", [hex: :exjsx, optional: false]}, {:hackney, ">= 0.12.0", [hex: :hackney, optional: false]}]},
"exjsx": {:hex, :exjsx, "3.2.1", "1bc5bf1e4fd249104178f0885030bcd75a4526f4d2a1e976f4b428d347614f0f", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, optional: false]}]},
"hackney": {:hex, :hackney, "1.6.1", "ddd22d42db2b50e6a155439c8811b8f6df61a4395de10509714ad2751c6da817", [:rebar3], [{:certifi, "0.4.0", [hex: :certifi, optional: false]}, {:idna, "1.2.0", [hex: :idna, optional: false]}, {:metrics, "1.0.1", [hex: :metrics, optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, optional: false]}, {:ssl_verify_fun, "1.1.0", [hex: :ssl_verify_fun, optional: false]}]},
"idna": {:hex, :idna, "1.2.0", "ac62ee99da068f43c50dc69acf700e03a62a348360126260e87f2b54eced86b2", [:rebar3], []},
"jsx": {:hex, :jsx, "2.8.0", "749bec6d205c694ae1786d62cea6cc45a390437e24835fd16d12d74f07097727", [:mix, :rebar], []},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], []},
"mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], []},
- "prometheus": {:hex, :prometheus, "3.1.0", "32a148a6c906d8d31113cad5cb07d4b61dec3f77c6f6fe2ce837d1ff62e9a049", [:rebar3], []},
+ "prometheus": {:hex, :prometheus, "3.2.2", "887a687855e171852be3e023aea9dbc1ea3ce0f327b95765896ebb2847fef7f9", [:mix, :rebar3], []},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.0", "edee20847c42e379bf91261db474ffbe373f8acb56e9079acb6038d4e0bf414f", [:rebar, :make], []}}
diff --git a/test/registry_test.exs b/test/registry_test.exs
index 8e80ffe..0368334 100644
--- a/test/registry_test.exs
+++ b/test/registry_test.exs
@@ -1,58 +1,69 @@
defmodule Prometheus.RegistryTest do
use Prometheus.Case
alias Prometheus.Registry
alias Prometheus.RegistryTest
import ExUnit.CaptureIO
def deregister_cleanup(_), do: :ok
+ test "registry exists" do
+ Prometheus.Registry.register_collector(:test_registry, RegistryTest)
+
+ assert true == Registry.exists(:test_registry)
+
+ assert :test_registry == Registry.exists("test_registry")
+
+ assert false == Registry.exists(:qweqwe)
+ assert false == Registry.exists("qweqwe")
+ end
+
test "default Registry" do
# default registry
assert :ok == Prometheus.Registry.register_collector(RegistryTest)
assert [RegistryTest] == Registry.collectors()
assert true == Registry.collector_registered?(RegistryTest)
Registry.clear()
assert [] == Registry.collectors()
assert false == Registry.collector_registered?(RegistryTest)
assert :ok == Registry.register_collector(RegistryTest)
Registry.deregister_collector(RegistryTest)
assert [] == Registry.collectors()
assert false == Registry.collector_registered?(RegistryTest)
## custom registry
assert :ok == Registry.register_collector(:custom_collector, RegistryTest)
assert [RegistryTest] == Registry.collectors(:custom_collector)
assert true == Registry.collector_registered?(:custom_collector, RegistryTest)
Registry.clear(:custom_collector)
assert [] == Registry.collectors(:custom_collector)
assert false == Registry.collector_registered?(:custom_collector, RegistryTest)
assert :ok == Registry.register_collector(:custom_collector, RegistryTest)
Registry.deregister_collector(:custom_collector, RegistryTest)
assert [] == Registry.collectors(:custom_collector)
assert false == Registry.collector_registered?(:custom_collector, RegistryTest)
## register_collectors && collect; default registry
assert :ok == Registry.register_collectors([RegistryTest])
assert [RegistryTest] == Registry.collectors()
assert capture_io(fn ->
Registry.collect(fn (:default, collector) ->
:io.format("~p", [collector])
end) ==
"Elixir.RegistryTest"
end)
## register_collectors && collect; custom registry
assert :ok == Registry.register_collectors(:custom_collector, [RegistryTest])
assert [RegistryTest] == Registry.collectors(:custom_collector)
assert capture_io(fn ->
Registry.collect(fn (:custom_collector, collector) ->
:io.format("~p", [collector])
end, :custom_collector) ==
"Elixir.RegistryTest"
end)
end
end
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sun, Dec 1, 3:43 AM (1 d, 16 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41582
Default Alt Text
(9 KB)
Attached To
Mode
R26 prometheus.ex
Attached
Detach File
Event Timeline
Log In to Comment