Skip to content

Commit 6bfb557

Browse files
committed
Use otel4s 0.7.0
1 parent 041bd81 commit 6bfb557

4 files changed

Lines changed: 102 additions & 88 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@ jobs:
8787

8888
- name: Make target directories
8989
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
90-
run: mkdir -p otel4s/native/target core/.native/target otel4s/js/target otel4s/jvm/target core/.js/target core/.jvm/target project/target
90+
run: mkdir -p otel4s/.native/target core/.native/target otel4s/.js/target otel4s/.jvm/target core/.js/target core/.jvm/target project/target
9191

9292
- name: Compress target directories
9393
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
94-
run: tar cf targets.tar otel4s/native/target core/.native/target otel4s/js/target otel4s/jvm/target core/.js/target core/.jvm/target project/target
94+
run: tar cf targets.tar otel4s/.native/target core/.native/target otel4s/.js/target otel4s/.jvm/target core/.js/target core/.jvm/target project/target
9595

9696
- name: Upload target directories
9797
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')

build.sbt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,20 +60,20 @@ lazy val core = crossProject(JVMPlatform, JSPlatform, NativePlatform)
6060
)
6161

6262
lazy val otel4s = crossProject(JVMPlatform, JSPlatform, NativePlatform)
63-
.crossType(CrossType.Full)
63+
.crossType(CrossType.Pure)
6464
.in(file("otel4s"))
6565
.dependsOn(core)
6666
.settings(commonSettings)
6767
.settings(
6868
name := "keypool-otel4s",
6969
startYear := Some(2024),
7070
crossScalaVersions := Seq(Scala213, Scala3),
71-
libraryDependencies += "org.typelevel" %%% "otel4s-core" % otel4sV,
71+
libraryDependencies ++= Seq(
72+
"org.typelevel" %%% "otel4s-core-metrics" % otel4sV,
73+
"org.typelevel" %%% "otel4s-sdk-metrics-testkit" % otel4sV % Test
74+
),
7275
mimaPreviousArtifacts ~= { _.filterNot(_.revision.startsWith("0.4")) }
7376
)
74-
.jvmSettings(
75-
libraryDependencies += "org.typelevel" %% "otel4s-oteljava-testkit" % otel4sV % Test
76-
)
7777

7878
lazy val docs = project
7979
.in(file("site"))
@@ -84,10 +84,10 @@ lazy val docs = project
8484
val catsV = "2.10.0"
8585
val catsEffectV = "3.5.4"
8686

87-
val otel4sV = "0.6.0"
87+
val otel4sV = "0.7.0"
8888

89-
val munitV = "1.0.0-M11"
90-
val munitCatsEffectV = "2.0.0-M4"
89+
val munitV = "1.0.0-RC1"
90+
val munitCatsEffectV = "2.0.0-M5"
9191

9292
val kindProjectorV = "0.13.3"
9393
val betterMonadicForV = "0.3.1"

otel4s/shared/src/main/scala/org/typelevel/keypool/Otel4sMetrics.scala renamed to otel4s/src/main/scala/org/typelevel/keypool/Otel4sMetrics.scala

File renamed without changes.

otel4s/jvm/src/test/scala/org/typelevel/keypool/PoolMetricsSpec.scala renamed to otel4s/src/test/scala/org/typelevel/keypool/PoolMetricsSpec.scala

Lines changed: 92 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import munit.CatsEffectSuite
2727
import org.typelevel.keypool.internal.Metrics
2828
import org.typelevel.otel4s.{Attribute, Attributes}
2929
import org.typelevel.otel4s.metrics.{BucketBoundaries, Meter, MeterProvider}
30-
import org.typelevel.otel4s.oteljava.testkit.metrics.MetricsTestkit
31-
import org.typelevel.otel4s.oteljava.testkit.metrics.data.{HistogramPointData, Metric, MetricData}
30+
import org.typelevel.otel4s.sdk.metrics.data.{MetricPoints, PointData, TimeWindow}
31+
import org.typelevel.otel4s.sdk.testkit.metrics.MetricsTestkit
3232

3333
import scala.concurrent.duration._
3434
import scala.util.control.NoStackTrace
@@ -38,7 +38,7 @@ class PoolMetricsSpec extends CatsEffectSuite {
3838

3939
test("Metrics should be empty for unused pool") {
4040
val expectedSnapshot =
41-
MetricsSnapshot(Nil, Nil, Nil, Nil, Nil)
41+
MetricsSnapshot(Vector.empty, Vector.empty, Vector.empty, Vector.empty, Vector.empty)
4242

4343
createTestkit.use { testkit =>
4444
for {
@@ -53,8 +53,8 @@ class PoolMetricsSpec extends CatsEffectSuite {
5353
inUse <- pool.take.surround(sdk.snapshot)
5454
afterUse <- sdk.snapshot
5555
} yield {
56-
assertEquals(inUse.inUse, List(1L))
57-
assertEquals(afterUse.inUse, List(0L))
56+
assertEquals(inUse.inUse, Vector(1L))
57+
assertEquals(afterUse.inUse, Vector(0L))
5858
}
5959
}
6060
}
@@ -71,8 +71,8 @@ class PoolMetricsSpec extends CatsEffectSuite {
7171
inUse <- deferred.get
7272
afterUse <- sdk.snapshot
7373
} yield {
74-
assertEquals(inUse.inUse, List(1L))
75-
assertEquals(afterUse.inUse, List(0L))
74+
assertEquals(inUse.inUse, Vector(1L))
75+
assertEquals(afterUse.inUse, Vector(0L))
7676
}
7777
}
7878
}
@@ -83,8 +83,8 @@ class PoolMetricsSpec extends CatsEffectSuite {
8383
inUse <- pool.take.surround(sdk.snapshot)
8484
afterUse <- sdk.snapshot
8585
} yield {
86-
assertEquals(inUse.idle, Nil)
87-
assertEquals(afterUse.idle, Nil)
86+
assertEquals(inUse.idle, Vector.empty)
87+
assertEquals(afterUse.idle, Vector.empty)
8888
}
8989
}
9090
}
@@ -95,77 +95,89 @@ class PoolMetricsSpec extends CatsEffectSuite {
9595
inUse <- pool.take.surround(sdk.snapshot)
9696
afterUse <- sdk.snapshot
9797
} yield {
98-
assertEquals(inUse.idle, Nil)
99-
assertEquals(afterUse.idle, List(1L))
98+
assertEquals(inUse.idle, Vector.empty)
99+
assertEquals(afterUse.idle, Vector(1L))
100100
}
101101
}
102102
}
103103

104104
test("Idle: decrement on reaper cleanup") {
105-
TestControl.executeEmbed {
106-
poolTest(_.withMaxIdle(1).withIdleTimeAllowedInPool(1.second)) { (sdk, pool) =>
107-
for {
108-
inUse <- pool.take.surround(sdk.snapshot)
109-
afterUse <- sdk.snapshot
110-
afterSleep <- sdk.snapshot.delayBy(6.seconds)
111-
} yield {
112-
assertEquals(inUse.idle, Nil)
113-
assertEquals(afterUse.idle, List(1L))
114-
assertEquals(afterSleep.idle, List(0L))
115-
}
105+
poolTest(_.withMaxIdle(1).withIdleTimeAllowedInPool(1.second)) { (sdk, pool) =>
106+
for {
107+
inUse <- pool.take.surround(sdk.snapshot)
108+
afterUse <- sdk.snapshot
109+
afterSleep <- sdk.snapshot.delayBy(6.seconds)
110+
} yield {
111+
assertEquals(inUse.idle, Vector.empty)
112+
assertEquals(afterUse.idle, Vector(1L))
113+
assertEquals(afterSleep.idle, Vector(0L))
116114
}
117115
}
116+
118117
}
119118

120119
test("Generate valid metric snapshots") {
121-
TestControl.executeEmbed {
122-
createTestkit.use { sdk =>
123-
mkPool(sdk.metrics.meterProvider)
124-
.use(pool => pool.take.surround(sdk.snapshot.delayBy(1.second)).product(sdk.snapshot))
125-
.map { case (inUse, afterUse) =>
126-
val acquireDuration =
127-
List(
128-
HistogramPointData(0, 1, HistogramBuckets, List(1, 0, 0, 0, 0))
129-
)
130-
131-
val expectedInUse = MetricsSnapshot(
132-
idle = Nil,
133-
inUse = List(1),
134-
inUseDuration = Nil,
135-
acquiredTotal = List(1),
136-
acquireDuration = acquireDuration
120+
poolTest() { (sdk, pool) =>
121+
pool.take
122+
.surround(sdk.snapshot.delayBy(1.second))
123+
.product(sdk.snapshot)
124+
.map { case (inUse, afterUse) =>
125+
val acquireDuration = Vector(
126+
PointData.histogram(
127+
TimeWindow(Duration.Zero, 1.second),
128+
Attributes(Attribute("pool.name", "test")),
129+
Vector.empty,
130+
Some(PointData.Histogram.Stats(0.0, 0.0, 0.0, 1)),
131+
HistogramBuckets,
132+
Vector(1, 0, 0, 0, 0)
137133
)
134+
)
138135

139-
val expectedAfterUser = MetricsSnapshot(
140-
idle = List(1),
141-
inUse = List(0),
142-
inUseDuration = List(
143-
HistogramPointData(1.0, 1, HistogramBuckets, List(0, 1, 0, 0, 0))
144-
),
145-
acquiredTotal = List(1),
146-
acquireDuration = acquireDuration
147-
)
136+
val expectedInUse = MetricsSnapshot(
137+
idle = Vector.empty,
138+
inUse = Vector(1L),
139+
inUseDuration = Vector.empty,
140+
acquiredTotal = Vector(1L),
141+
acquireDuration = acquireDuration
142+
)
148143

149-
assertEquals(inUse, expectedInUse)
150-
assertEquals(afterUse, expectedAfterUser)
151-
}
152-
}
144+
val expectedAfterUser = MetricsSnapshot(
145+
idle = Vector(1L),
146+
inUse = Vector(0L),
147+
inUseDuration = Vector(
148+
PointData.histogram(
149+
TimeWindow(Duration.Zero, 1.second),
150+
Attributes(Attribute("pool.name", "test")),
151+
Vector.empty,
152+
Some(PointData.Histogram.Stats(1.0, 1.0, 1.0, 1)),
153+
HistogramBuckets,
154+
Vector(0, 1, 0, 0, 0)
155+
)
156+
),
157+
acquiredTotal = Vector(1L),
158+
acquireDuration = acquireDuration
159+
)
160+
161+
assertEquals(inUse, expectedInUse)
162+
assertEquals(afterUse, expectedAfterUser)
163+
}
153164
}
154165
}
155166

156167
private def poolTest(
157168
customize: Pool.Builder[IO, Ref[IO, Int]] => Pool.Builder[IO, Ref[IO, Int]] = identity
158-
)(scenario: (OtelTestkit[IO], Pool[IO, Ref[IO, Int]]) => IO[Unit]): IO[Unit] = {
159-
createTestkit.use { sdk =>
160-
sdk.metrics.meterProvider.get("org.typelevel.keypool").flatMap { implicit M: Meter[IO] =>
161-
val builder = Pool
162-
.Builder(Ref.of[IO, Int](1), nothing)
163-
.withMetricsProvider(metricsProvider)
164-
165-
customize(builder).build.use(pool => scenario(sdk, pool))
169+
)(scenario: (OtelTestkit[IO], Pool[IO, Ref[IO, Int]]) => IO[Unit]): IO[Unit] =
170+
TestControl.executeEmbed {
171+
createTestkit.use { sdk =>
172+
sdk.metrics.meterProvider.get("org.typelevel.keypool").flatMap { implicit M: Meter[IO] =>
173+
val builder = Pool
174+
.Builder(Ref.of[IO, Int](1), nothing)
175+
.withMetricsProvider(metricsProvider)
176+
177+
customize(builder).build.use(pool => scenario(sdk, pool))
178+
}
166179
}
167180
}
168-
}
169181

170182
private def mkPool(meterProvider: MeterProvider[IO]) =
171183
Resource.eval(meterProvider.get("org.typelevel.keypool")).flatMap { implicit M: Meter[IO] =>
@@ -183,8 +195,8 @@ class PoolMetricsSpec extends CatsEffectSuite {
183195
Otel4sMetrics.provider[IO](
184196
"keypool",
185197
Attributes(Attribute("pool.name", "test")),
186-
BucketBoundaries(HistogramBuckets.toVector),
187-
BucketBoundaries(HistogramBuckets.toVector)
198+
HistogramBuckets,
199+
HistogramBuckets
188200
)
189201

190202
private def createTestkit: Resource[IO, OtelTestkit[IO]] =
@@ -194,25 +206,27 @@ class PoolMetricsSpec extends CatsEffectSuite {
194206

195207
def snapshot: IO[MetricsSnapshot] =
196208
for {
197-
metrics <- testkit.collectMetrics[Metric]
209+
metrics <- testkit.collectMetrics
198210
} yield {
199-
def counterValue(name: String): List[Long] =
211+
def counterValue(name: String): Vector[Long] =
200212
metrics
201213
.find(_.name == name)
202214
.map(_.data)
203-
.collectFirst { case MetricData.LongSum(points) =>
204-
points.map(_.value)
215+
.collectFirst { case sum: MetricPoints.Sum =>
216+
sum.points.toVector.collect { case long: PointData.LongNumber =>
217+
long.value
218+
}
205219
}
206-
.getOrElse(Nil)
220+
.getOrElse(Vector.empty)
207221

208-
def histogramSnapshot(name: String): List[HistogramPointData] =
222+
def histogramSnapshot(name: String): Vector[PointData.Histogram] =
209223
metrics
210224
.find(_.name == name)
211225
.map(_.data)
212-
.collectFirst { case MetricData.Histogram(points) =>
213-
points.map(_.value)
226+
.collectFirst { case histogram: MetricPoints.Histogram =>
227+
histogram.points.toVector
214228
}
215-
.getOrElse(Nil)
229+
.getOrElse(Vector.empty)
216230

217231
MetricsSnapshot(
218232
counterValue("keypool.idle.current"),
@@ -225,8 +239,8 @@ class PoolMetricsSpec extends CatsEffectSuite {
225239
}
226240
}
227241

228-
private val HistogramBuckets: List[Double] =
229-
List(0.01, 1, 100, 1000)
242+
private val HistogramBuckets: BucketBoundaries =
243+
BucketBoundaries(Vector(0.01, 1.0, 100.0, 1000.0))
230244

231245
private def nothing(ref: Ref[IO, Int]): IO[Unit] =
232246
ref.get.void
@@ -241,11 +255,11 @@ object PoolMetricsSpec {
241255
}
242256

243257
final case class MetricsSnapshot(
244-
idle: List[Long],
245-
inUse: List[Long],
246-
inUseDuration: List[HistogramPointData],
247-
acquiredTotal: List[Long],
248-
acquireDuration: List[HistogramPointData]
258+
idle: Vector[Long],
259+
inUse: Vector[Long],
260+
inUseDuration: Vector[PointData.Histogram],
261+
acquiredTotal: Vector[Long],
262+
acquireDuration: Vector[PointData.Histogram]
249263
)
250264

251265
}

0 commit comments

Comments
 (0)