rabbah commented on a change in pull request #4186: Track activation counts in
ContainerPool (not ContainerProxy)
URL:
https://github.com/apache/incubator-openwhisk/pull/4186#discussion_r252324283
##########
File path:
tests/src/test/scala/org/apache/openwhisk/core/containerpool/test/ContainerPoolTests.scala
##########
@@ -471,6 +478,82 @@ class ContainerPoolTests
containers(4).send(pool, NeedWork(warmedData()))
feed.expectMsg(MessageFeed.Processed)
}
+
+ it should "increase activation counts when scheduling to containers whose
actions that support concurrency" in {
+ val (containers, factory) = testContainers(2)
+ val feed = TestProbe()
+
+ val pool = system.actorOf(ContainerPool.props(factory,
poolConfig(MemoryLimit.stdMemory * 4), feed.ref))
+
+ // container0 is created and used
+ pool ! runMessageConcurrent
+ containers(0).expectMsg(runMessageConcurrent)
+
+ // container0 is reused
+ pool ! runMessageConcurrent
+ containers(0).expectMsg(runMessageConcurrent)
+
+ // container0 is reused
+ pool ! runMessageConcurrent
+ containers(0).expectMsg(runMessageConcurrent)
+
+ // container1 is created and used (these concurrent containers are
configured with max 3 concurrent activations)
+ pool ! runMessageConcurrent
+ containers(1).expectMsg(runMessageConcurrent)
+ }
+
+ it should "schedule concurrent activations to different containers for
different namespaces" in {
+ val (containers, factory) = testContainers(2)
+ val feed = TestProbe()
+
+ val pool = system.actorOf(ContainerPool.props(factory,
poolConfig(MemoryLimit.stdMemory * 4), feed.ref))
+
+ // container0 is created and used
+ pool ! runMessageConcurrent
+ containers(0).expectMsg(runMessageConcurrent)
+
+ // container1 is created and used
+ pool ! runMessageConcurrentDifferentNamespace
+ containers(1).expectMsg(runMessageConcurrentDifferentNamespace)
+
+ }
+ it should "decrease activation counts when receiving NeedWork for actions
that support concurrency" in {
+ val (containers, factory) = testContainers(2)
+ val feed = TestProbe()
+
+ val pool = system.actorOf(ContainerPool.props(factory,
poolConfig(MemoryLimit.stdMemory * 4), feed.ref))
+
+ // container0 is created and used
+ pool ! runMessageConcurrent
+ containers(0).expectMsg(runMessageConcurrent)
+
+ // container0 is reused
+ pool ! runMessageConcurrent
+ containers(0).expectMsg(runMessageConcurrent)
+
+ // container0 is reused
+ pool ! runMessageConcurrent
+ containers(0).expectMsg(runMessageConcurrent)
+
+ // container1 is created and used (these concurrent containers are
configured with max 3 concurrent activations)
+ pool ! runMessageConcurrent
+ containers(1).expectMsg(runMessageConcurrent)
+
+ // container1 is reused
+ pool ! runMessageConcurrent
+ containers(1).expectMsg(runMessageConcurrent)
+
+ // container1 is reused
+ pool ! runMessageConcurrent
+ containers(1).expectMsg(runMessageConcurrent)
+
+ containers(0).send(pool, NeedWork(warmedData(action = concurrentAction)))
+
+ // container0 is reused (since active count decreased)
+ pool ! runMessageConcurrent
+ containers(0).expectMsg(runMessageConcurrent)
+
Review comment:
white space.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services