You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2018/10/26 07:26:36 UTC

[incubator-plc4x] branch master updated: [plc4j-pool] replaced pair with custom pool key added TODOs and notes about partial wrong pooling (part2)

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git


The following commit(s) were added to refs/heads/master by this push:
     new 763a3d6  [plc4j-pool] replaced pair with custom pool key added TODOs and notes about partial wrong pooling (part2)
763a3d6 is described below

commit 763a3d6317ea4e63b087b6bbd0fa5661b82a9677
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Oct 26 09:24:00 2018 +0200

    [plc4j-pool] replaced pair with custom pool key
    added TODOs and notes about partial wrong pooling (part2)
---
 .../connectionpool/PooledPlcDriverManagerTest.java | 39 +++++++++++++++++-----
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/plc4j/utils/connection-pool/src/test/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcDriverManagerTest.java b/plc4j/utils/connection-pool/src/test/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcDriverManagerTest.java
index 9d7b465..86153df 100644
--- a/plc4j/utils/connection-pool/src/test/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcDriverManagerTest.java
+++ b/plc4j/utils/connection-pool/src/test/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcDriverManagerTest.java
@@ -54,6 +54,8 @@ import static org.mockito.Mockito.*;
 @ExtendWith(MockitoExtension.class)
 class PooledPlcDriverManagerTest implements WithAssertions {
 
+    private static Logger LOGGER = LoggerFactory.getLogger(PooledPlcDriverManagerTest.class);
+
     private PooledPlcDriverManager SUT = new PooledPlcDriverManager(pooledPlcConnectionFactory -> {
         GenericObjectPoolConfig<PlcConnection> plcConnectionGenericObjectPoolConfig = new GenericObjectPoolConfig<>();
         plcConnectionGenericObjectPoolConfig.setMinIdle(1);
@@ -106,12 +108,22 @@ class PooledPlcDriverManagerTest implements WithAssertions {
 
         List<Future<PlcConnection>> futures = executorService.invokeAll(callables);
 
+        // Wait for existing connections
+        futures.forEach(plcConnectionFuture1 -> {
+            try {
+                plcConnectionFuture1.get();
+            } catch (InterruptedException | ExecutionException e) {
+                throw new RuntimeException(e);
+            }
+        });
+        LOGGER.info("Statistics after execution {}", SUT.getStatistics());
+
         // As we have a pool size of 8 we should have only 8 + 5 calls for the separate pools
         verify(plcDriver, times(13)).connect(anyString());
 
         assertThat(SUT.getStatistics()).contains(
-            entry("dummydummy:single.numActive", 8),
-            entry("dummydummy:single.numIdle", 0)
+            entry("dummydummy:single/socket1/socket2?fancyOption=true.numActive", 8),
+            entry("dummydummy:single/socket1/socket2?fancyOption=true.numIdle", 0)
         );
 
         futures.forEach(plcConnectionFuture -> {
@@ -123,8 +135,8 @@ class PooledPlcDriverManagerTest implements WithAssertions {
         });
 
         assertThat(SUT.getStatistics()).contains(
-            entry("dummydummy:single.numActive", 0),
-            entry("dummydummy:single.numIdle", 8)
+            entry("dummydummy:single/socket1/socket2?fancyOption=true.numActive", 0),
+            entry("dummydummy:single/socket1/socket2?fancyOption=true.numIdle", 8)
         );
     }
 
@@ -154,17 +166,26 @@ class PooledPlcDriverManagerTest implements WithAssertions {
 
         List<Future<PlcConnection>> futures = executorService.invokeAll(callables);
 
+        futures.forEach(plcConnectionFuture1 -> {
+            try {
+                plcConnectionFuture1.get();
+            } catch (InterruptedException | ExecutionException e) {
+                throw new RuntimeException(e);
+            }
+        });
+
+        LOGGER.info("Statistics after execution {}", SUT.getStatistics());
+
         // As we have a pool size of 8 we should have only 8 + 5 calls for the separate pools
         verify(plcDriver, times(13)).connect(anyString(), any());
 
         assertThat(SUT.getStatistics()).contains(
-            entry("dummydummy:single/PlcUsernamePasswordAuthentication{username='user', password='*****************'}.numActive", 8),
-            entry("dummydummy:single/PlcUsernamePasswordAuthentication{username='user', password='*****************'}.numIdle", 0)
+            entry("dummydummy:single/socket1/socket2?fancyOption=true/PlcUsernamePasswordAuthentication{username='user', password='*****************'}.numActive", 8),
+            entry("dummydummy:single/socket1/socket2?fancyOption=true/PlcUsernamePasswordAuthentication{username='user', password='*****************'}.numIdle", 0)
         );
 
         futures.forEach(plcConnectionFuture -> {
             try {
-                plcConnectionFuture.get().connect();
                 plcConnectionFuture.get().close();
             } catch (Exception e) {
                 throw new RuntimeException(e);
@@ -172,8 +193,8 @@ class PooledPlcDriverManagerTest implements WithAssertions {
         });
 
         assertThat(SUT.getStatistics()).contains(
-            entry("dummydummy:single/PlcUsernamePasswordAuthentication{username='user', password='*****************'}.numActive", 0),
-            entry("dummydummy:single/PlcUsernamePasswordAuthentication{username='user', password='*****************'}.numIdle", 8)
+            entry("dummydummy:single/socket1/socket2?fancyOption=true/PlcUsernamePasswordAuthentication{username='user', password='*****************'}.numActive", 0),
+            entry("dummydummy:single/socket1/socket2?fancyOption=true/PlcUsernamePasswordAuthentication{username='user', password='*****************'}.numIdle", 8)
         );
     }