@BeforeEach
    protected void setUp() {
        val attributeMerger = CoreAuthenticationUtils.getAttributeMerger(casProperties.getAuthn().getAttributeRepository().getCore().getMerger());
        personDirectoryResolver = PersonDirectoryPrincipalResolver.newPersonDirectoryPrincipalResolver(
            applicationContext, PrincipalFactoryUtils.newPrincipalFactory(),
            attributeRepository, attributeMerger, servicesManager, attributeDefinitionStore,
            attributeRepositoryResolver, casProperties.getPersonDirectory()
        );
    }
Assert a list of runnables can run in parallel without any concurrency related exceptions.
Use CountDownLatch to start all threads at same time and wait for them to finish.

@param message           error message
@param runnables         list of runnables
@param maxTimeoutSeconds timeout for test completion
@throws InterruptedException interruption
support/cas-server-support-person-directory/src/test/java/org/apereo/cas/PersonDirectoryPrincipalResolverConcurrencyTests.java