|
Akka/Scala example source code file (TestBarrier.scala)
The TestBarrier.scala Akka example source code/** * Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com> */ package akka.testkit import scala.concurrent.duration.Duration import java.util.concurrent.{ CyclicBarrier, TimeUnit, TimeoutException } import akka.actor.ActorSystem import scala.concurrent.duration.FiniteDuration class TestBarrierTimeoutException(message: String) extends RuntimeException(message) /** * A cyclic barrier wrapper for use in testing. * It always uses a timeout when waiting and timeouts are specified as durations. * Timeouts will always throw an exception. The default timeout is 5 seconds. * Timeouts are multiplied by the testing time factor for Jenkins builds. */ object TestBarrier { val DefaultTimeout = Duration(5, TimeUnit.SECONDS) def apply(count: Int) = new TestBarrier(count) } class TestBarrier(count: Int) { private val barrier = new CyclicBarrier(count) def await()(implicit system: ActorSystem): Unit = await(TestBarrier.DefaultTimeout) def await(timeout: FiniteDuration)(implicit system: ActorSystem) { try { barrier.await(timeout.dilated.toNanos, TimeUnit.NANOSECONDS) } catch { case e: TimeoutException ⇒ throw new TestBarrierTimeoutException("Timeout of %s and time factor of %s" format (timeout.toString, TestKitExtension(system).TestTimeFactor)) } } def reset(): Unit = barrier.reset() } Other Akka source code examplesHere is a short list of links related to this Akka TestBarrier.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.