Skip to content

Commit

Permalink
metrics: remove ObservableInstrumentBuilder
Browse files Browse the repository at this point in the history
  • Loading branch information
iRevive committed Jan 28, 2024
1 parent 069df5f commit 3ad6ea2
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 90 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package metrics

import cats.effect.IO
import cats.effect.Ref
import cats.effect.kernel.Resource
import cats.effect.Resource
import cats.syntax.all._
import munit.CatsEffectSuite

Expand All @@ -31,7 +31,7 @@ class ObservableSuite extends CatsEffectSuite {

for {
_ <- new InMemoryObservableInstrumentBuilder[Double]
.createWithCallback(instrument =>
.createObservableWithCallback(instrument =>
instrument.record(2.0) *> instrument.record(3.0)
)
.use { r =>
Expand All @@ -52,7 +52,7 @@ class ObservableSuite extends CatsEffectSuite {
for {
counter <- Ref.of[IO, Int](0)
_ <- new InMemoryObservableInstrumentBuilder[Int]
.create(
.createObservable(
counter
.getAndUpdate(_ + 1)
.map(x =>
Expand Down Expand Up @@ -99,37 +99,45 @@ object ObservableSuite {
}

class InMemoryObservableInstrumentBuilder[A]
extends ObservableInstrumentBuilder[IO, A, InMemoryObservable[A]] {
extends ObservableGauge.Builder[IO, A] {

type Self =
ObservableInstrumentBuilder[IO, A, InMemoryObservable[A]]
type Self = ObservableGauge.Builder[IO, A]

def withUnit(unit: String): Self = this

def withDescription(description: String): Self = this

def create(
measurements: IO[List[Measurement[A]]]
def createObservable(
measurements: IO[Iterable[Measurement[A]]]
): Resource[IO, InMemoryObservable[A]] =
Resource
.eval(Ref.of[IO, List[Record[A]]](List.empty))
.map(obs =>
InMemoryObservable[A](
recorder =>
measurements.flatMap(
_.traverse_(x => recorder.record(x.value, x.attributes))
_.toList.traverse_(x => recorder.record(x.value, x.attributes))
),
obs
)
)

def createWithCallback(
def createObservableWithCallback(
cb: ObservableMeasurement[IO, A] => IO[Unit]
): Resource[IO, InMemoryObservable[A]] =
Resource
.eval(Ref.of[IO, List[Record[A]]](List.empty))
.map(obs => InMemoryObservable[A](cb, obs))

def createWithCallback(
cb: ObservableMeasurement[IO, A] => IO[Unit]
): Resource[IO, ObservableGauge] =
createObservableWithCallback(cb).as(new ObservableGauge {})

def create(
measurements: IO[Iterable[Measurement[A]]]
): Resource[IO, ObservableGauge] =
createObservable(measurements).as(new ObservableGauge {})
}

}

0 comments on commit 3ad6ea2

Please sign in to comment.