tests/testthat/test-meter.R

test_that("meter, counter", {
  mp <- meter_provider_memory_new()
  on.exit(mp$shutdown(), add = TRUE)
  mtr <- mp$get_meter()
  expect_true(mtr$is_enabled())
  ctr <- mtr$create_counter("ctr")
  ctr$add(1)
  ctr$add(10)
  mp$flush()
  mp$shutdown()
  mrcs <- mp$get_metrics()
  md <- mrcs[[2]][["scope_metric_data"]][[1]][["metric_data"]][[1]]
  expect_equal(md[["instrument_name"]], "ctr")
  expect_equal(md[["instrument_type"]], "counter")
  expect_equal(md[["instrument_value_type"]], "double")
  expect_equal(md[["point_data_attr"]][[1]][["value"]][["value"]], 11)
})

test_that("meter, up_down_counter", {
  mp <- meter_provider_memory_new()
  on.exit(mp$shutdown(), add = TRUE)
  mtr <- mp$get_meter()
  udc <- mtr$create_up_down_counter("udctr")
  udc$add(1)
  udc$add(10)
  mp$flush()
  mp$shutdown()
  mrcs <- mp$get_metrics()
  md <- mrcs[[2]][["scope_metric_data"]][[1]][["metric_data"]][[1]]
  expect_equal(md[["instrument_name"]], "udctr")
  expect_equal(md[["instrument_type"]], "up_down_counter")
  expect_equal(md[["instrument_value_type"]], "double")
  expect_equal(md[["point_data_attr"]][[1]][["value"]][["value"]], 11)
})

test_that("meter, histogram", {
  mp <- meter_provider_memory_new()
  on.exit(mp$shutdown(), add = TRUE)
  mtr <- mp$get_meter()
  hst <- mtr$create_histogram("hst")
  hst$record(1)
  hst$record(10)
  mp$flush()
  mp$shutdown()
  mrcs <- mp$get_metrics()
  md <- mrcs[[2]][["scope_metric_data"]][[1]][["metric_data"]][[1]]
  expect_equal(md[["instrument_name"]], "hst")
  expect_equal(md[["instrument_type"]], "histogram")
  expect_equal(md[["instrument_value_type"]], "double")
  expect_equal(md[["point_data_attr"]][[1]][["value"]][["sum"]], 11)
  expect_equal(md[["point_data_attr"]][[1]][["value"]][["min"]], 1)
  expect_equal(md[["point_data_attr"]][[1]][["value"]][["max"]], 10)
  expect_equal(md[["point_data_attr"]][[1]][["value"]][["count"]], 2)
})

test_that("meter, gauge", {
  mp <- meter_provider_memory_new()
  on.exit(mp$shutdown(), add = TRUE)
  mtr <- mp$get_meter()
  udc <- mtr$create_gauge("gge")
  udc$record(1)
  udc$record(10)
  mp$flush()
  mp$shutdown()
  mrcs <- mp$get_metrics()
  md <- mrcs[[2]][["scope_metric_data"]][[1]][["metric_data"]][[1]]
  expect_equal(md[["instrument_name"]], "gge")
  expect_equal(md[["instrument_type"]], "gauge")
  expect_equal(md[["instrument_value_type"]], "double")
  expect_equal(md[["point_data_attr"]][[1]][["value"]][["value"]], 10)
})

test_that("meter_new when metrics are disabled", {
  fake(meter_new, "find_instrumentation_scope", list(on = FALSE, name = "nm"))
  mtr <- meter_new("name")
  expect_s3_class(mtr, "otel_meter_noop")
})

Try the otelsdk package in your browser

Any scripts or data that you put into this service are public.

otelsdk documentation built on Sept. 10, 2025, 10:32 a.m.