You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by sm...@apache.org on 2023/07/08 13:29:36 UTC

[directory-fortress-core] branch master updated: FC-323 some code cleanup

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

smckinney pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-fortress-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 8791a4ec FC-323 some code cleanup
8791a4ec is described below

commit 8791a4ec0a57dda074738bce9c11a54ae3f785cf
Author: Shawn McKinney <sm...@symas.com>
AuthorDate: Sat Jul 8 08:29:28 2023 -0500

    FC-323 some code cleanup
---
 README-LOAD-TESTING.md                             | 23 +++++++++++++++++++++
 .../directory/fortress/core/jmeter/AddUser.java    | 16 +++++++--------
 .../directory/fortress/core/jmeter/BindUser.java   |  5 ++---
 .../fortress/core/jmeter/CheckAccess.java          |  8 +++-----
 .../directory/fortress/core/jmeter/CheckRole.java  |  9 ++++----
 .../directory/fortress/core/jmeter/CheckUser.java  |  7 +++----
 .../fortress/core/jmeter/CreateSession.java        |  5 ++---
 .../directory/fortress/core/jmeter/DelUser.java    | 10 ++++-----
 .../directory/fortress/core/jmeter/UserBase.java   | 24 +++++++++++++++++++---
 9 files changed, 69 insertions(+), 38 deletions(-)

diff --git a/README-LOAD-TESTING.md b/README-LOAD-TESTING.md
index f26a9767..9a15a982 100644
--- a/README-LOAD-TESTING.md
+++ b/README-LOAD-TESTING.md
@@ -527,5 +527,28 @@ Edit the project's pom.mxl. Goto the loadtest profile. Increase the memory alloc
    </build>
 </profile>
 ```
+____________________________________________________________________________________
+
+##### iv. too many open files
+
+Observation:
+When running loadtests thought the REST interface, Exceptions in log file:
+
+###### target/[GUID]/jmeter/bin/fortress-jmeter.log
+
+```bash
+2023-07-05 01:59:015 WARN  UserBase:219 - ThreadId: 23, error running test: org.apache.directory.fortress.core.RestException: post uri=[https://fortress-a:8443/fortress-rest-3.0.0-SNAPSHOT/], function=[rbacCheck], caught IOException=Too many open files
+2023-07-05 01:59:015 ERROR RestUtils:389 - post uri=[https://fortress-a:8443/fortress-rest-3.0.0-SNAPSHOT/], function=[rbacCheck], caught IOException=Too many open files
+java.net.SocketException: Too many open files
+```
+
+Remedy:
+Increase the maximum open files for ALL users. Requires a reboot to become active.
+ 
+###### /etc/security/limits.conf
+
+```
+'*               -       nofile             8192'
+```
 ____________________________________________________________________________________ 
 ## END OF README
diff --git a/src/test/java/org/apache/directory/fortress/core/jmeter/AddUser.java b/src/test/java/org/apache/directory/fortress/core/jmeter/AddUser.java
index 04120cd5..db414b27 100644
--- a/src/test/java/org/apache/directory/fortress/core/jmeter/AddUser.java
+++ b/src/test/java/org/apache/directory/fortress/core/jmeter/AddUser.java
@@ -42,8 +42,7 @@ public class AddUser extends UserBase
      */
     public SampleResult runTest( JavaSamplerContext samplerContext )
     {
-        int count = getKey( Op.ADD );
-        String userId  = hostname + '-' + qualifier + '-' + count;
+        String userId = getUserId ( Op.ADD );
         SampleResult sampleResult = new SampleResult();
         try
         {
@@ -52,17 +51,17 @@ public class AddUser extends UserBase
             assertNotNull( "ou operand not setup", ou );
             User user = new User();
             user.setUserId( userId );
-            user.setDescription( "add one: " + user.getUserId() );
+            user.setDescription( concat( "add one: ", user.getUserId() ) );
             user.setPassword( password );
             user.setOu( ou );
             LOG.debug( "threadid: {}, userId: {}", getThreadId(), userId );
             User outUser = adminMgr.addUser( user );
             assertNotNull( outUser );
             // This tests replication, ability to handle conflicts:
-            if ( duplicate > 0 && count > duplicate && ( count % duplicate ) == 0 )
+            if ( duplicate > 0 && count.get() > duplicate && ( count.get() % duplicate ) == 0 )
             {
-                warn( "DUPLICATE ADD[" + count + "]: " + user.getUserId() );
-                user.setDescription( "add two: " + user.getUserId() );
+                warn( concat( "DUPLICATE ADD: ", user.getUserId() ) );
+                user.setDescription( concat( "add two: ", user.getUserId() ) );
                 outUser = adminMgr.addUser( user );
             }
             if( update )
@@ -77,15 +76,14 @@ public class AddUser extends UserBase
             assertNotNull( outUser );
             if ( verify )
             {
-                assertTrue( "failed test uid: " + userId, verify( userId, Op.ADD ) );
+                assertTrue( concat( "failed test uid: ", userId ), verify( userId, Op.ADD ) );
             }
             sleep();
             wrapup( sampleResult, userId );
         }
         catch ( org.apache.directory.fortress.core.SecurityException se )
         {
-            warn( "ThreadId: " + getThreadId() + ", error running test: " + se );
-            se.printStackTrace();
+            warn( se.getMessage() );
             sampleResult.setSuccessful( false );
         }
 
diff --git a/src/test/java/org/apache/directory/fortress/core/jmeter/BindUser.java b/src/test/java/org/apache/directory/fortress/core/jmeter/BindUser.java
index 6203b8c6..5300e701 100644
--- a/src/test/java/org/apache/directory/fortress/core/jmeter/BindUser.java
+++ b/src/test/java/org/apache/directory/fortress/core/jmeter/BindUser.java
@@ -40,7 +40,7 @@ public class BindUser extends UserBase
      */
     public SampleResult runTest( JavaSamplerContext samplerContext )
     {
-        String userId  = hostname + '-' + qualifier + '-' + getKey( Op.CHECK );
+        String userId = getUserId ( Op.CHECK );
         SampleResult sampleResult = new SampleResult();
         try
         {
@@ -54,8 +54,7 @@ public class BindUser extends UserBase
         }
         catch ( org.apache.directory.fortress.core.SecurityException se )
         {
-            warn( "ThreadId: " + getThreadId() + ", error running test: " + se );
-            se.printStackTrace();
+            warn( se.getMessage() );
             sampleResult.setSuccessful( false );
         }
 
diff --git a/src/test/java/org/apache/directory/fortress/core/jmeter/CheckAccess.java b/src/test/java/org/apache/directory/fortress/core/jmeter/CheckAccess.java
index 272f5dd7..9a502561 100644
--- a/src/test/java/org/apache/directory/fortress/core/jmeter/CheckAccess.java
+++ b/src/test/java/org/apache/directory/fortress/core/jmeter/CheckAccess.java
@@ -41,7 +41,7 @@ public class CheckAccess extends UserBase
      */
     public SampleResult runTest( JavaSamplerContext samplerContext )
     {
-        String userId  = hostname + '-' + qualifier + '-' + getKey( Op.CHECK );
+        String userId = getUserId ( Op.CHECK );
         SampleResult sampleResult = new SampleResult();
         try
         {
@@ -52,16 +52,14 @@ public class CheckAccess extends UserBase
             user.setPassword( password );
             LOG.debug( "threadid: {}, userId: {}", getThreadId(), userId );
             Permission p = getPermission();
-            assertTrue(
-                    "failed test uid: " + userId + ", perm obj: " + p.getObjName() + ", op: " + p.getOpName(),
+            assertTrue( concat("failed test uid: ", userId, ", perm obj: ", p.getObjName(), ", op: ", p.getOpName()),
                     accessMgr.checkAccess( user, p, false ) );
             sleep();
             wrapup( sampleResult, userId );
         }
         catch ( org.apache.directory.fortress.core.SecurityException se )
         {
-            warn( "ThreadId: " + getThreadId() + ", error running test: " + se );
-            se.printStackTrace();
+            warn( se.getMessage() );
             sampleResult.setSuccessful( false );
         }
 
diff --git a/src/test/java/org/apache/directory/fortress/core/jmeter/CheckRole.java b/src/test/java/org/apache/directory/fortress/core/jmeter/CheckRole.java
index d6b05244..07cd82e9 100644
--- a/src/test/java/org/apache/directory/fortress/core/jmeter/CheckRole.java
+++ b/src/test/java/org/apache/directory/fortress/core/jmeter/CheckRole.java
@@ -41,27 +41,26 @@ public class CheckRole extends UserBase
      */
     public SampleResult runTest( JavaSamplerContext samplerContext )
     {
-        String userId  = hostname + '-' + qualifier + '-' + getKey( Op.CHECK );
+        String userId = getUserId ( Op.CHECK );
         SampleResult sampleResult = new SampleResult();
         try
         {
             sampleResult.sampleStart();
             assertNotNull( accessMgr );
-            assertNotNull( "role operand not setup", role );
+            assertNotNull( concat("role operand not setup", role ) );
             User user = new User();
             user.setUserId( userId );
             user.setPassword( password );
             LOG.debug( "threadid: {}, userId: {}", getThreadId(), userId );
             assertTrue(
-                    "failed uid:" + userId + ", role: " + role,
+                    concat("failed uid:" + userId + ", role: " + role ),
                     accessMgr.isUserInRole( user, new Role( role ), false ) );
             sleep();
             wrapup( sampleResult, userId );
         }
         catch ( org.apache.directory.fortress.core.SecurityException se )
         {
-            warn( "ThreadId: " + getThreadId() + ", error running test: " + se );
-            se.printStackTrace();
+            warn( se.getMessage() );
             sampleResult.setSuccessful( false );
         }
 
diff --git a/src/test/java/org/apache/directory/fortress/core/jmeter/CheckUser.java b/src/test/java/org/apache/directory/fortress/core/jmeter/CheckUser.java
index 41df89c3..57285ca2 100644
--- a/src/test/java/org/apache/directory/fortress/core/jmeter/CheckUser.java
+++ b/src/test/java/org/apache/directory/fortress/core/jmeter/CheckUser.java
@@ -43,7 +43,7 @@ public class CheckUser extends UserBase
      */
     public SampleResult runTest( JavaSamplerContext samplerContext )
     {
-        String userId  = hostname + '-' + qualifier + '-' + getKey( Op.CHECK );
+        String userId = getUserId ( Op.CHECK );
         SampleResult sampleResult = new SampleResult();
         try
         {
@@ -62,7 +62,7 @@ public class CheckUser extends UserBase
                 {
                     Permission p = getPermission( i );
                     assertTrue(
-                            "failed test uid: " + userId + ", perm obj: "+ p.getObjName() + ", op: " + p.getOpName(),
+                            concat( "failed test uid: ", userId, ", perm obj: ", p.getObjName(), ", op: ", p.getOpName() ),
                             accessMgr.checkAccess( session, p ) );
                 }
             }
@@ -71,8 +71,7 @@ public class CheckUser extends UserBase
         }
         catch ( org.apache.directory.fortress.core.SecurityException se )
         {
-            warn( "ThreadId: " + getThreadId() + ", error running test: " + se );
-            se.printStackTrace();
+            warn( se.getMessage() );
             sampleResult.setSuccessful( false );
         }
 
diff --git a/src/test/java/org/apache/directory/fortress/core/jmeter/CreateSession.java b/src/test/java/org/apache/directory/fortress/core/jmeter/CreateSession.java
index d8a311de..cda33beb 100644
--- a/src/test/java/org/apache/directory/fortress/core/jmeter/CreateSession.java
+++ b/src/test/java/org/apache/directory/fortress/core/jmeter/CreateSession.java
@@ -41,7 +41,7 @@ public class CreateSession extends UserBase
      */
     public SampleResult runTest( JavaSamplerContext samplerContext )
     {
-        String userId  = hostname + '-' + qualifier + '-' + getKey( Op.CHECK );
+        String userId = getUserId ( Op.CHECK );
         SampleResult sampleResult = new SampleResult();
         try
         {
@@ -59,8 +59,7 @@ public class CreateSession extends UserBase
         }
         catch ( org.apache.directory.fortress.core.SecurityException se )
         {
-            warn( "ThreadId: " + getThreadId() + ", error running test: " + se );
-            se.printStackTrace();
+            warn( se.getMessage() );
             sampleResult.setSuccessful( false );
         }
 
diff --git a/src/test/java/org/apache/directory/fortress/core/jmeter/DelUser.java b/src/test/java/org/apache/directory/fortress/core/jmeter/DelUser.java
index 14205ee1..a7459259 100644
--- a/src/test/java/org/apache/directory/fortress/core/jmeter/DelUser.java
+++ b/src/test/java/org/apache/directory/fortress/core/jmeter/DelUser.java
@@ -40,8 +40,7 @@ public class DelUser extends UserBase
      */
     public SampleResult runTest( JavaSamplerContext samplerContext )
     {
-        int count = getKey( Op.ADD );
-        String userId  = hostname + '-' + qualifier + '-' + count;
+        String userId = getUserId ( Op.DEL );
         SampleResult sampleResult = new SampleResult();
         try
         {
@@ -52,9 +51,9 @@ public class DelUser extends UserBase
             LOG.debug( "threadid: {}, userId: {}", getThreadId(), userId );
             adminMgr.deleteUser( user );
             // This tests replication, ability to handle conflicts:
-            if ( duplicate > 0 && count > duplicate && ( count % duplicate ) == 0 )
+            if ( duplicate > 0 && count.get() > duplicate && ( count.get() % duplicate ) == 0 )
             {
-                warn( "DUPLICATE DEL[" + count + "]: " + user.getUserId() );
+                warn( concat( "DUPLICATE DEL ", user.getUserId() ) );
                 adminMgr.deleteUser( user );
             }
             if ( verify )
@@ -66,8 +65,7 @@ public class DelUser extends UserBase
         }
         catch ( org.apache.directory.fortress.core.SecurityException se )
         {
-            warn( "ThreadId: " + getThreadId() + ", error running test: " + se );
-            se.printStackTrace();
+            warn( se.getMessage() );
             sampleResult.setSuccessful( false );
         }
         return sampleResult;
diff --git a/src/test/java/org/apache/directory/fortress/core/jmeter/UserBase.java b/src/test/java/org/apache/directory/fortress/core/jmeter/UserBase.java
index 28f23188..77e5d295 100644
--- a/src/test/java/org/apache/directory/fortress/core/jmeter/UserBase.java
+++ b/src/test/java/org/apache/directory/fortress/core/jmeter/UserBase.java
@@ -51,7 +51,7 @@ public abstract class UserBase extends AbstractJavaSamplerClient
     protected static final Logger LOG = LoggerFactory.getLogger( UserBase.class );
 
     // global counter
-    private static AtomicInteger count = new AtomicInteger(0);
+    protected static AtomicInteger count = new AtomicInteger(0);
     // ldap host
     protected String hostname;
     // used to differentiate data sets
@@ -222,6 +222,19 @@ public abstract class UserBase extends AbstractJavaSamplerClient
         }
     }
 
+    protected String concat( String ... val)
+    {
+        StringBuilder sb = new StringBuilder();
+        if ( val != null )
+        {
+            for ( int i =0; i < val.length; i++ )
+            {
+                sb.append( val[i] );
+            }
+        }
+        return sb.toString();
+    }
+
     protected void info(String message )
     {
         LOG.info( message );
@@ -262,7 +275,7 @@ public abstract class UserBase extends AbstractJavaSamplerClient
      *
      * @return
      */
-    protected int getKey( Op op )
+    protected Integer getKey( Op op )
     {
         if( op == Op.CHECK )
         {
@@ -271,6 +284,11 @@ public abstract class UserBase extends AbstractJavaSamplerClient
         return count.incrementAndGet();
     }
 
+    protected String getUserId ( Op op )
+    {
+        return concat(hostname, "-", qualifier, "-", getKey( op ).toString() );
+    }
+
     String getThreadId()
     {
         return "" + Thread.currentThread().getId();
@@ -312,7 +330,7 @@ public abstract class UserBase extends AbstractJavaSamplerClient
         }
         else
         {
-            fail( "perm operand must be objectName.operationName: " + perm );
+            fail( concat( "perm operand must be objectName.operationName: " + perm ) );
         }
         return p;
     }