From 650d82631585cd6fe06056027d69f27a33bb8d3e Mon Sep 17 00:00:00 2001 From: Diego Date: Fri, 9 May 2014 12:35:54 -0300 Subject: + core: added MinMaxCounterSpec and new test in ActorMetricsSpec --- .../scala/kamon/metrics/ActorMetricsSpec.scala | 16 ++- .../metrics/instrument/MinMaxCounterSpec.scala | 109 +++++++++++++++++++++ 2 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 kamon-core/src/test/scala/kamon/metrics/instrument/MinMaxCounterSpec.scala (limited to 'kamon-core/src/test/scala') diff --git a/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala b/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala index 0f0bb475..7430e0f0 100644 --- a/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala +++ b/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala @@ -15,9 +15,9 @@ package kamon.metrics -import org.scalatest.{WordSpecLike, Matchers} -import akka.testkit.{TestProbe, TestKitBase} -import akka.actor.{ActorRef, Actor, Props, ActorSystem} +import org.scalatest.{ WordSpecLike, Matchers } +import akka.testkit.{ TestProbe, TestKitBase } +import akka.actor.{ ActorRef, Actor, Props, ActorSystem } import com.typesafe.config.ConfigFactory import scala.concurrent.duration._ import kamon.Kamon @@ -89,8 +89,8 @@ class ActorMetricsSpec extends TestKitBase with WordSpecLike with Matchers { val stalledTickMetrics = expectActorMetrics("user/tracked-mailbox-size-queueing-up", metricsListener, 2 seconds) stalledTickMetrics.mailboxSize.numberOfMeasurements should equal(31) // only the automatic last-value recording should be taken, and includes the message being currently processed. - stalledTickMetrics.mailboxSize.measurements should contain only (Measurement(0, 10), Measurement(10, 21)) - stalledTickMetrics.mailboxSize.min should equal(0) + stalledTickMetrics.mailboxSize.measurements should contain only (Measurement(10, 31)) + stalledTickMetrics.mailboxSize.min should equal(10) stalledTickMetrics.mailboxSize.max should equal(10) stalledTickMetrics.processingTime.numberOfMeasurements should be(0L) stalledTickMetrics.timeInMailbox.numberOfMeasurements should be(0L) @@ -115,7 +115,6 @@ class ActorMetricsSpec extends TestKitBase with WordSpecLike with Matchers { } } - def expectActorMetrics(actorPath: String, listener: TestProbe, waitTime: FiniteDuration): ActorMetricSnapshot = { val tickSnapshot = within(waitTime) { listener.expectMsgType[TickMetricSnapshot] @@ -150,19 +149,18 @@ class ActorMetricsSpec extends TestKitBase with WordSpecLike with Matchers { (actor, metricsListener) } } - } class DelayableActor extends Actor { def receive = { case Delay(time) ⇒ Thread.sleep(time.toMillis) - case Discard ⇒ + case Discard ⇒ } } class FailedActor extends Actor { def receive = { - case Error ⇒ 1 / 0 + case Error ⇒ 1 / 0 case Discard ⇒ } } diff --git a/kamon-core/src/test/scala/kamon/metrics/instrument/MinMaxCounterSpec.scala b/kamon-core/src/test/scala/kamon/metrics/instrument/MinMaxCounterSpec.scala new file mode 100644 index 00000000..a309f92e --- /dev/null +++ b/kamon-core/src/test/scala/kamon/metrics/instrument/MinMaxCounterSpec.scala @@ -0,0 +1,109 @@ +package kamon.metrics.instrument +/* ========================================================================================= + * Copyright © 2013-2014 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. + * ========================================================================================= + */ +import org.scalatest.{Matchers, WordSpecLike} +import kamon.metrics.instruments.counter.MinMaxCounter + +class MinMaxCounterSpec extends WordSpecLike with Matchers { + + + "the MinMaxCounter" should { + "increment" in { + val counter = MinMaxCounter() + + counter.increment() + counter.increment() + counter.increment() + counter.increment() + counter.increment() + + val (_, _, sum) = counter.collect() + + sum should be(5) + } + + "decrement" in { + val counter = MinMaxCounter() + counter.increment(5L) + + counter.decrement() + counter.decrement() + counter.decrement() + counter.decrement() + counter.decrement() + + val (_, _, sum) = counter.collect() + + sum should be(0) + } + + "reset the min and max with the sum value when the collect method is called" in { + val counter = MinMaxCounter() + + counter.increment(10) + counter.increment(20) + counter.increment(30) + counter.increment(40) + counter.increment(50) + + counter.collect() //only for check the last value after reset min max + + val (min, max, sum) = counter.collect() + + min should be(sum) + max should be(sum) + sum should be(150) + } + } + + "track the min value" in { + val counter = MinMaxCounter() + + counter.increment(10) + counter.increment(20) + counter.increment(30) + counter.increment(40) + counter.increment(50) + + val (min, _, _) = counter.collect() + + min should be(0) + + counter.increment(50) + + val (minAfterCollectAndAddSomeValues, _, _) = counter.collect() + + minAfterCollectAndAddSomeValues should be(150) + } + + "track the max value" in { + val counter = MinMaxCounter() + counter.increment(10) + counter.increment(20) + counter.increment(30) + counter.increment(40) + counter.increment(50) + + val (_, max, _) = counter.collect() + + max should be(150) + + counter.increment(200) + + val (_,maxAfterCollectAndAddSomeValues, _) = counter.collect() + + maxAfterCollectAndAddSomeValues should be(350) + } +} -- cgit v1.2.3