This is an automated email from the ASF dual-hosted git repository. cbickel pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk.git
The following commit(s) were added to refs/heads/master by this push: new 8dd6250 Add batching time to BatcherTests. (#2861) 8dd6250 is described below commit 8dd6250fa98aa2d85635a506e207bdffdab2c4f0 Author: Markus Thömmes <markusthoem...@me.com> AuthorDate: Thu Oct 19 10:44:06 2017 +0200 Add batching time to BatcherTests. (#2861) In an environment with no parallelism some assertion do not hold water which makes this test non-deterministic. Adding a bit of a delay between batching calls allows the batch to build up. --- .../whisk/core/database/test/BatcherTests.scala | 26 +++++++++++++++------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/tests/src/test/scala/whisk/core/database/test/BatcherTests.scala b/tests/src/test/scala/whisk/core/database/test/BatcherTests.scala index 51f54ba..a2eac6f 100644 --- a/tests/src/test/scala/whisk/core/database/test/BatcherTests.scala +++ b/tests/src/test/scala/whisk/core/database/test/BatcherTests.scala @@ -30,18 +30,24 @@ import whisk.utils.retry import scala.collection.mutable import scala.concurrent.duration._ -import scala.concurrent.{Await, ExecutionContext, Future, Promise} +import scala.concurrent.{Await, Future, Promise} @RunWith(classOf[JUnitRunner]) class BatcherTests extends FlatSpec with Matchers with WskActorSystem { implicit val materializer: ActorMaterializer = ActorMaterializer() - implicit val ec: ExecutionContext = actorSystem.dispatcher def await[V](f: Future[V]) = Await.result(f, 10.seconds) def between(start: Instant, end: Instant) = Duration.fromNanos(java.time.Duration.between(start, end).toNanos) + val promiseDelay = 100.milliseconds + def resolveDelayed(p: Promise[Unit], delay: FiniteDuration = promiseDelay) = + akka.pattern.after(delay, actorSystem.scheduler) { + p.success(()) + Future.successful(()) + } + behavior of "Batcher" it should "batch based on batch size" in { @@ -60,19 +66,23 @@ class BatcherTests extends FlatSpec with Matchers with WskActorSystem { val results = values.map(batcher.put) // First "batch" - retry(batchOperation.calls should have size 1, 100) - ps(0).success(()) + retry(batchOperation.calls should have size 1, (promiseDelay.toMillis * 2).toInt) batchOperation.calls(0) should have size 1 + // Allow batch to build up + resolveDelayed(ps(0)) + // Second batch - retry(batchOperation.calls should have size 2, 100) - ps(1).success(()) + retry(batchOperation.calls should have size 2, (promiseDelay.toMillis * 2).toInt) batchOperation.calls(1) should have size 2 + // Allow batch to build up + resolveDelayed(ps(1)) + // Third batch - retry(batchOperation.calls should have size 3, 100) - ps(2).success(()) + retry(batchOperation.calls should have size 3, (promiseDelay.toMillis * 2).toInt) batchOperation.calls(2) should have size 2 + ps(2).success(()) await(Future.sequence(results)) shouldBe values.map(transform) } -- To stop receiving notification emails like this one, please contact ['"commits@openwhisk.apache.org" <commits@openwhisk.apache.org>'].