aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/kamon/instrumentation/MessageQueueInstrumentationSpec.scala
blob: cc55ec920c82cb8af27b3e07ab21d016f511e9a2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package kamon.instrumentation

import org.scalatest.WordSpec
import com.codahale.metrics.{ExponentiallyDecayingReservoir, Histogram}
import java.util.concurrent.ConcurrentLinkedQueue
import akka.dispatch.{UnboundedMessageQueueSemantics, QueueBasedMessageQueue, Envelope}
import java.util.Queue
import akka.actor.{ActorSystem, Actor}

class MessageQueueInstrumentationSpec(val actorSystem: ActorSystem) extends WordSpec {
  def this() = this(ActorSystem("MessageQueueInstrumentationSpec"))


  /*"A MonitoredMessageQueue" should {
    "update the related histogram when a message is enqueued" in {
      new PopulatedMessageQueueFixture {

        assert(histogram.getSnapshot.getMax   === 0)

        for(i <- 1 to 3) { enqueueDummyMessage }

        assert(histogram.getCount === 3)
        assert(histogram.getSnapshot.getMax === 3)
        assert(histogram.getSnapshot.getMin === 1)
      }
    }

    "update the related histogram when a message is dequeued" in {
      new PopulatedMessageQueueFixture {
        for(i <- 1 to 3) { enqueueDummyMessage }
        assert(histogram.getSnapshot.getMax   === 3)

        messageQueue.dequeue()
        messageQueue.dequeue()

        assert(histogram.getCount === 5)
        assert(histogram.getSnapshot.getMax === 3)
        assert(histogram.getSnapshot.getMin === 1)
      }
    }
  }

  trait PopulatedMessageQueueFixture {

    val histogram = new Histogram(new ExponentiallyDecayingReservoir())
/*    val delegate = new ConcurrentLinkedQueue[Envelope]() with QueueBasedMessageQueue with UnboundedMessageQueueSemantics {
      final def queue: Queue[Envelope] = this
    }*/
    val messageQueue = new MonitoredMessageQueue(delegate, histogram)

    def enqueueDummyMessage = messageQueue.enqueue(Actor.noSender, Envelope("", Actor.noSender, actorSystem))
  }*/
}