From 3f862e604473b098689eb68b568e0e678aa5dcc3 Mon Sep 17 00:00:00 2001 From: Ivan Topolnak Date: Wed, 29 Jan 2014 13:20:11 -0300 Subject: max, min and merge operations for MetricSnapshot --- .../scala/kamon/metrics/ActorMetricsSpec.scala | 1 - .../scala/kamon/metrics/MetricSnapshotSpec.scala | 68 ++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 kamon-core/src/test/scala/kamon/metrics/MetricSnapshotSpec.scala (limited to 'kamon-core/src/test') diff --git a/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala b/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala index 91fb3a69..03c1f323 100644 --- a/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala +++ b/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala @@ -39,7 +39,6 @@ class ActorMetricsSpec extends TestKitBase with WordSpecLike with Matchers { |} """.stripMargin)) - "the Kamon actor metrics" should { "track configured actors" in { Kamon(Metrics).subscribe(ActorMetrics, "user/test-tracked-actor", testActor) diff --git a/kamon-core/src/test/scala/kamon/metrics/MetricSnapshotSpec.scala b/kamon-core/src/test/scala/kamon/metrics/MetricSnapshotSpec.scala new file mode 100644 index 00000000..1c5a4b21 --- /dev/null +++ b/kamon-core/src/test/scala/kamon/metrics/MetricSnapshotSpec.scala @@ -0,0 +1,68 @@ +/* + * ========================================================================================= + * Copyright © 2013 the kamon project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + * ========================================================================================= + */ + +package kamon.metrics + +import org.scalatest.{ Matchers, WordSpec } +import kamon.metrics.MetricSnapshot.Measurement + +class MetricSnapshotSpec extends WordSpec with Matchers { + + "a metric snapshot" should { + "support a max operation" in new SnapshotFixtures { + snapshotA.max should be(17) + snapshotB.max should be(10) + } + + "support a min operation" in new SnapshotFixtures { + snapshotA.min should be(1) + snapshotB.min should be(2) + } + + "be able to merge with other snapshot" in new SnapshotFixtures { + val merged = snapshotA.merge(snapshotB) + + merged.min should be(1) + merged.max should be(17) + merged.numberOfMeasurements should be(200) + merged.measurementLevels.map(_.value) should contain inOrderOnly (1, 2, 4, 5, 7, 10, 17) + } + + "be able to merge with empty snapshots" in new SnapshotFixtures { + snapshotA.merge(emptySnapshot) should be(snapshotA) + } + + } + + trait SnapshotFixtures { + val emptySnapshot = DefaultMetricSnapshot(0, Vector.empty) + + val snapshotA = DefaultMetricSnapshot(100, Vector( + Measurement(1, 3), + Measurement(2, 15), + Measurement(5, 68), + Measurement(7, 13), + Measurement(17, 1))) + + val snapshotB = DefaultMetricSnapshot(100, Vector( + Measurement(2, 6), + Measurement(4, 48), + Measurement(5, 39), + Measurement(10, 7))) + + } + +} -- cgit v1.2.3