From 3c6a81b6f2d8bbc3618fe9175be5e13a6ff6c1db 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/MetricSnapshotSpec.scala | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 kamon-core/src/test/scala/kamon/metrics/MetricSnapshotSpec.scala (limited to 'kamon-core/src/test/scala/kamon/metrics/MetricSnapshotSpec.scala') 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