Skip to content

Commit

Permalink
[#27] Instrument the adapter with Telemetry events
Browse files Browse the repository at this point in the history
  • Loading branch information
cabol committed May 15, 2021
1 parent 1bb02d8 commit 9083cd7
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 38 deletions.
83 changes: 55 additions & 28 deletions lib/nebulex_redis_adapter.ex
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ defmodule NebulexRedisAdapter do
* `:conn_opts` - Redis client options (`Redix` options in this case).
For more information about connection options, see `Redix` docs.
## Telemetry events
This adapter emits the recommended Telemetry events.
See the "Telemetry events" section in `Nebulex.Cache`
for more information.
## TTL or Expiration Time
As is explained in `Nebulex.Cache`, most of the write-like functions support
Expand Down Expand Up @@ -290,6 +296,7 @@ defmodule NebulexRedisAdapter do
@behaviour Nebulex.Adapter.Entry
@behaviour Nebulex.Adapter.Queryable

import Nebulex.Adapter
import Nebulex.Helpers
import NebulexRedisAdapter.Encoder

Expand Down Expand Up @@ -367,7 +374,9 @@ defmodule NebulexRedisAdapter do
keyslot: keyslot,
nodes: nodes,
pool_size: pool_size,
default_dt: Keyword.get(opts, :default_data_type, :object)
default_dt: Keyword.get(opts, :default_data_type, :object),
telemetry: Keyword.fetch!(opts, :telemetry),
telemetry_prefix: Keyword.fetch!(opts, :telemetry_prefix)
}

{:ok, child_spec, meta}
Expand All @@ -391,16 +400,20 @@ defmodule NebulexRedisAdapter do
## Nebulex.Adapter.Entry

@impl true
def get(adapter_meta, key, _opts) do
defspan get(adapter_meta, key, _opts) do
with_pipeline(adapter_meta, key, [["GET", encode(key)]])
end

@impl true
def get_all(%{mode: :standalone} = adapter_meta, keys, _opts) do
defspan get_all(adapter_meta, keys, _opts) do
do_get_all(adapter_meta, keys)
end

defp do_get_all(%{mode: :standalone} = adapter_meta, keys) do
mget(nil, adapter_meta, keys)
end

def get_all(adapter_meta, keys, _opts) do
defp do_get_all(adapter_meta, keys) do
keys
|> group_keys_by_hash_slot(adapter_meta)
|> Enum.reduce(%{}, fn {hash_slot, keys}, acc ->
Expand All @@ -423,7 +436,7 @@ defmodule NebulexRedisAdapter do
end

@impl true
def put(adapter_meta, key, value, ttl, on_write, opts) do
defspan put(adapter_meta, key, value, ttl, on_write, opts) do
cmd_opts = cmd_opts(action: on_write, ttl: fix_ttl(ttl))
redis_k = encode(key)
redis_v = encode(value, opts)
Expand All @@ -435,18 +448,20 @@ defmodule NebulexRedisAdapter do
end

@impl true
def put_all(%{mode: :standalone} = adapter_meta, entries, ttl, on_write, opts) do
do_put_all(adapter_meta, nil, entries, fix_ttl(ttl), on_write, opts)
end

def put_all(adapter_meta, entries, ttl, on_write, opts) do
defspan put_all(adapter_meta, entries, ttl, on_write, opts) do
ttl = fix_ttl(ttl)

entries
|> group_keys_by_hash_slot(adapter_meta)
|> Enum.reduce(:ok, fn {hash_slot, group}, acc ->
acc && do_put_all(adapter_meta, hash_slot, group, ttl, on_write, opts)
end)
case adapter_meta.mode do
:standalone ->
do_put_all(adapter_meta, nil, entries, ttl, on_write, opts)

_ ->
entries
|> group_keys_by_hash_slot(adapter_meta)
|> Enum.reduce(:ok, fn {hash_slot, group}, acc ->
acc && do_put_all(adapter_meta, hash_slot, group, ttl, on_write, opts)
end)
end
end

defp do_put_all(adapter_meta, hash_slot, entries, ttl, on_write, opts) do
Expand Down Expand Up @@ -479,27 +494,27 @@ defmodule NebulexRedisAdapter do
end

@impl true
def delete(adapter_meta, key, _opts) do
defspan delete(adapter_meta, key, _opts) do
_ = Command.exec!(adapter_meta, ["DEL", encode(key)], key)
:ok
end

@impl true
def take(adapter_meta, key, _opts) do
defspan take(adapter_meta, key, _opts) do
redis_k = encode(key)
with_pipeline(adapter_meta, key, [["GET", redis_k], ["DEL", redis_k]])
end

@impl true
def has_key?(adapter_meta, key) do
defspan has_key?(adapter_meta, key) do
case Command.exec!(adapter_meta, ["EXISTS", encode(key)], key) do
1 -> true
0 -> false
end
end

@impl true
def ttl(adapter_meta, key) do
defspan ttl(adapter_meta, key) do
case Command.exec!(adapter_meta, ["TTL", encode(key)], key) do
-1 -> :infinity
-2 -> nil
Expand All @@ -508,7 +523,11 @@ defmodule NebulexRedisAdapter do
end

@impl true
def expire(adapter_meta, key, :infinity) do
defspan expire(adapter_meta, key, ttl) do
do_expire(adapter_meta, key, ttl)
end

defp do_expire(adapter_meta, key, :infinity) do
redis_k = encode(key)

case Command.pipeline!(adapter_meta, [["TTL", redis_k], ["PERSIST", redis_k]], key) do
Expand All @@ -517,31 +536,35 @@ defmodule NebulexRedisAdapter do
end
end

def expire(adapter_meta, key, ttl) do
defp do_expire(adapter_meta, key, ttl) do
case Command.exec!(adapter_meta, ["EXPIRE", encode(key), fix_ttl(ttl)], key) do
1 -> true
0 -> false
end
end

@impl true
def touch(adapter_meta, key) do
defspan touch(adapter_meta, key) do
case Command.exec!(adapter_meta, ["TOUCH", encode(key)], key) do
1 -> true
0 -> false
end
end

@impl true
def update_counter(adapter_meta, key, incr, :infinity, default, _opts) do
defspan update_counter(adapter_meta, key, incr, ttl, default, _opts) do
do_update_counter(adapter_meta, key, incr, ttl, default)
end

defp do_update_counter(adapter_meta, key, incr, :infinity, default) do
redis_k = encode(key)

adapter_meta
|> maybe_incr_default(key, redis_k, default)
|> Command.exec!(["INCRBY", redis_k, incr], key)
end

def update_counter(adapter_meta, key, incr, ttl, default, _opts) do
defp do_update_counter(adapter_meta, key, incr, ttl, default) do
redis_k = encode(key)

adapter_meta
Expand All @@ -567,22 +590,26 @@ defmodule NebulexRedisAdapter do
## Nebulex.Adapter.Queryable

@impl true
def execute(%{mode: mode} = adapter_meta, :count_all, nil, _opts) do
defspan execute(adapter_meta, operation, query, _opts) do
do_execute(adapter_meta, operation, query)
end

defp do_execute(%{mode: mode} = adapter_meta, :count_all, nil) do
exec!(mode, [adapter_meta, ["DBSIZE"]], [0, &Kernel.+(&2, &1)])
end

def execute(%{mode: mode} = adapter_meta, :delete_all, nil, _opts) do
defp do_execute(%{mode: mode} = adapter_meta, :delete_all, nil) do
size = exec!(mode, [adapter_meta, ["DBSIZE"]], [0, &Kernel.+(&2, &1)])
_ = exec!(mode, [adapter_meta, ["FLUSHDB"]], [])
size
end

def execute(adapter_meta, :all, query, _opts) do
defp do_execute(adapter_meta, :all, query) do
execute_query(query, adapter_meta)
end

@impl true
def stream(adapter_meta, query, _opts) do
defspan stream(adapter_meta, query, _opts) do
Stream.resource(
fn ->
execute_query(query, adapter_meta)
Expand Down
7 changes: 4 additions & 3 deletions mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ defmodule NebulexRedisAdapter.MixProject do
use Mix.Project

@source_url "https://github.com/cabol/nebulex_redis_adapter"
@version "2.0.0"
@nbx_vsn "2.0.0"
@version "2.1.0"
@nbx_vsn "2.1.0"

def project do
[
Expand Down Expand Up @@ -50,6 +50,7 @@ defmodule NebulexRedisAdapter.MixProject do
{:redix, "~> 1.0"},
{:crc, "~> 0.10", optional: true},
{:jchash, "~> 0.1.2", optional: true},
{:telemetry, "~> 0.4", optional: true},

# Test & Code Analysis
{:excoveralls, "~> 0.13", only: :test},
Expand Down Expand Up @@ -77,7 +78,7 @@ defmodule NebulexRedisAdapter.MixProject do
[
"nbx.setup": [
"cmd rm -rf nebulex",
"cmd git clone --depth 1 --branch v2.0.0 https://github.com/cabol/nebulex"
"cmd git clone --depth 1 --branch v#{@nbx_vsn} https://github.com/cabol/nebulex"
],
check: [
"compile --warnings-as-errors",
Expand Down
15 changes: 8 additions & 7 deletions mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,31 @@
"benchee_html": {:hex, :benchee_html, "1.0.0", "5b4d24effebd060f466fb460ec06576e7b34a00fc26b234fe4f12c4f05c95947", [:mix], [{:benchee, ">= 0.99.0 and < 2.0.0", [hex: :benchee, repo: "hexpm", optional: false]}, {:benchee_json, "~> 1.0", [hex: :benchee_json, repo: "hexpm", optional: false]}], "hexpm", "5280af9aac432ff5ca4216d03e8a93f32209510e925b60e7f27c33796f69e699"},
"benchee_json": {:hex, :benchee_json, "1.0.0", "cc661f4454d5995c08fe10dd1f2f72f229c8f0fb1c96f6b327a8c8fc96a91fe5", [:mix], [{:benchee, ">= 0.99.0 and < 2.0.0", [hex: :benchee, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "da05d813f9123505f870344d68fb7c86a4f0f9074df7d7b7e2bb011a63ec231c"},
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"},
"certifi": {:hex, :certifi, "2.5.3", "70bdd7e7188c804f3a30ee0e7c99655bc35d8ac41c23e12325f36ab449b70651", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "ed516acb3929b101208a9d700062d520f3953da3b6b918d866106ffa980e1c10"},
"certifi": {:hex, :certifi, "2.6.1", "dbab8e5e155a0763eea978c913ca280a6b544bfa115633fa20249c3d396d9493", [:rebar3], [], "hexpm", "524c97b4991b3849dd5c17a631223896272c6b0af446778ba4675a1dff53bb7e"},
"crc": {:hex, :crc, "0.10.1", "87a0478e5a930926f1062397c9eb32d981f6b3abbc352d6d6fecf45a1725b249", [:mix, :rebar3], [{:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "ed3a9a673d4726fd12d6f58811f014e33cb3926b28f9639b12456ccb241d0f9b"},
"credo": {:hex, :credo, "1.5.5", "e8f422026f553bc3bebb81c8e8bf1932f498ca03339856c7fec63d3faac8424b", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "dd8623ab7091956a855dc9f3062486add9c52d310dfd62748779c4315d8247de"},
"deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"},
"dialyxir": {:hex, :dialyxir, "1.1.0", "c5aab0d6e71e5522e77beff7ba9e08f8e02bad90dfbeffae60eaf0cb47e29488", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "07ea8e49c45f15264ebe6d5b93799d4dd56a44036cf42d0ad9c960bc266c0b9a"},
"earmark_parser": {:hex, :earmark_parser, "1.4.12", "b245e875ec0a311a342320da0551da407d9d2b65d98f7a9597ae078615af3449", [:mix], [], "hexpm", "711e2cc4d64abb7d566d43f54b78f7dc129308a63bc103fbd88550d2174b3160"},
"earmark_parser": {:hex, :earmark_parser, "1.4.13", "0c98163e7d04a15feb62000e1a891489feb29f3d10cb57d4f845c405852bbef8", [:mix], [], "hexpm", "d602c26af3a0af43d2f2645613f65841657ad6efc9f0e361c3b6c06b578214ba"},
"elixir_make": {:hex, :elixir_make, "0.6.2", "7dffacd77dec4c37b39af867cedaabb0b59f6a871f89722c25b28fcd4bd70530", [:mix], [], "hexpm", "03e49eadda22526a7e5279d53321d1cced6552f344ba4e03e619063de75348d9"},
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
"ex_doc": {:hex, :ex_doc, "0.23.0", "a069bc9b0bf8efe323ecde8c0d62afc13d308b1fa3d228b65bca5cf8703a529d", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "f5e2c4702468b2fd11b10d39416ddadd2fcdd173ba2a0285ebd92c39827a5a16"},
"ex_doc": {:hex, :ex_doc, "0.24.2", "e4c26603830c1a2286dae45f4412a4d1980e1e89dc779fcd0181ed1d5a05c8d9", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "e134e1d9e821b8d9e4244687fb2ace58d479b67b282de5158333b0d57c6fb7da"},
"excoveralls": {:hex, :excoveralls, "0.14.0", "4b562d2acd87def01a3d1621e40037fdbf99f495ed3a8570dfcf1ab24e15f76d", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "94f17478b0cca020bcd85ce7eafea82d2856f7ed022be777734a2f864d36091a"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"hackney": {:hex, :hackney, "1.17.0", "717ea195fd2f898d9fe9f1ce0afcc2621a41ecfe137fae57e7fe6e9484b9aa99", [:rebar3], [{:certifi, "~>2.5", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "64c22225f1ea8855f584720c0e5b3cd14095703af1c9fbc845ba042811dc671c"},
"hackney": {:hex, :hackney, "1.17.4", "99da4674592504d3fb0cfef0db84c3ba02b4508bae2dff8c0108baa0d6e0977c", [:rebar3], [{:certifi, "~>2.6.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "de16ff4996556c8548d512f4dbe22dd58a587bf3332e7fd362430a7ef3986b16"},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"},
"jchash": {:hex, :jchash, "0.1.2", "c157534ad219fb5a92986e406c5763ef8da901785430c5853d5ec4de2874b3a0", [:rebar3], [], "hexpm", "3371d73e367e9aecf58bc2bfd8e022032c2b9dad2b715e799a9e33e4af1fef74"},
"makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"},
"makeup_elixir": {:hex, :makeup_elixir, "0.15.1", "b5888c880d17d1cc3e598f05cdb5b5a91b7b17ac4eaf5f297cb697663a1094dd", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "db68c173234b07ab2a07f645a5acdc117b9f99d69ebf521821d89690ae6c6ec8"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"},
"nebulex": {:hex, :nebulex, "2.0.0", "d33dc5a2b96ba09e5eb1c90e53dd1d036b0c006f1bb379bcc5c10acd0b140d6d", [:mix], [{:decorator, "~> 1.3", [hex: :decorator, repo: "hexpm", optional: true]}, {:shards, "~> 1.0", [hex: :shards, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "411c707e455408ae79ae7bfe7ada125967d016b83ff2a4e9763fd7cc2dd9372d"},
"nebulex": {:hex, :nebulex, "2.1.0", "6ed3dc8e851366c59b1260c73d8c70bd694667f1da439bcd13c9eca2d20c74bb", [:mix], [{:decorator, "~> 1.4", [hex: :decorator, repo: "hexpm", optional: true]}, {:shards, "~> 1.0", [hex: :shards, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "d19ef2d7ee57350b1e88931d79c621e69b4ed52ba3351d53348cd4283a0fdb72"},
"nimble_parsec": {:hex, :nimble_parsec, "1.1.0", "3a6fca1550363552e54c216debb6a9e95bd8d32348938e13de5eda962c0d7f89", [:mix], [], "hexpm", "08eb32d66b706e913ff748f11694b17981c0b04a33ef470e33e11b3d3ac8f54b"},
"parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"},
"redix": {:hex, :redix, "1.0.0", "4f310341744ffceab3031394450a4e603d4d1001a697c3f18ae57ae776cbd3fb", [:mix], [{:castore, "~> 0.1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8c8d9b33b5491737adcd5bb9e0f43b85212a384ac0042f64c156113518266ecb"},
"redix": {:hex, :redix, "1.1.0", "ba08c3a10cb4e6f63711b4fda5a4dcb27a919571d353ced65aa50ab3ac978efb", [:mix], [{:castore, "~> 0.1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c0f552af4140b213ca2d20897aac0e137a2d3a5da1d0cb73c54f0a6847c67dcb"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"},
"telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"},
"telemetry": {:hex, :telemetry, "0.4.3", "a06428a514bdbc63293cd9a6263aad00ddeb66f608163bdec7c8995784080818", [:rebar3], [], "hexpm", "eb72b8365ffda5bed68a620d1da88525e326cb82a75ee61354fc24b844768041"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},
}
3 changes: 3 additions & 0 deletions test/test_helper.exs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Start Telemetry
Application.start(:telemetry)

# Nebulex dependency path
nbx_dep_path = Mix.Project.deps_paths()[:nebulex]

Expand Down

0 comments on commit 9083cd7

Please sign in to comment.