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

Reply via email to