12 Replies Latest reply on Aug 29, 2014 5:06 AM by Bartosz Majsak

    Arquillian persistence-dbunit performance issues on Oracle

    Tim Kutz Newbie

      Hello,

       

      We have recently started using Arquillian in a new project, and having good success with it as a testing platform.  We are running into a particular issue with the DBUnit integration, however.  Tests with DBUnit datasets are taking a long time to run, with most of that time being in the seed and cleanup phases.  I'm seeing ~2 minutes spent in each of those phases, per test.  This is resulting in inordinately long build times. 

       

      I tried to investigate the cause, and discovered that the bulk of that time is spent retrieving the table metadata in order to enforce table ordering, which ultimately is traced back to the use of DatabaseSequenceFilter as described in this thread.  A significant part of the problem comes from the fact that this Filter reads the database metadata for ALL tables, regardless of whether they are referenced in the test or not.  Is there any way to limit the tables examined by this Filter - or to replace it with a custom Filter we could write ourselves?

       

      We are currently using Arquillian 1.0.0.Alpha6, and JBoss AS 7.2.0.Final.

        • 1. Re: Arquillian persistence-dbunit performance issues on Oracle
          Tim Kutz Newbie

          Hoping very much that with the holidays over, this item can get at least a basic response.  The problem gets worse as the project grows, and the schema matures. More foreign keys results in greater slow-down.  Also, the use of this filter prevents us from having any foreign keys that cross schema boundaries, as that runs us into the OracleSdoGeometry bug in DBUnit.  All we really need is the ability to specify the DBUnit Table Filter class, rather than having it hard-coded.

          • 2. Re: Arquillian persistence-dbunit performance issues on Oracle
            Vitali Carbivnicii Newbie

            Not sure if this will help you, but still.

            I faced the same performance problems when running ~20 CRUD tests took 12 mins, and that is on only a third of planned schema size.

            Digging into related code and turning on debug i realized that it is doing just TOO much things e.g. reading metadata from DB everytime and many other "magic" things.

            So i decided to not use this extension but rather write very thin and simple/dumb dataset loader which would use the yaml files I already had, and the @UsingDataSet annotations (had to replace it with my own).

            I'm sure it is buggy and stupid, but it works for me.

             

            https://drive.google.com/file/d/0ByjfhBeHbyL1UTJaV3dqTUtBVnc/edit?usp=sharing

            • 3. Re: Arquillian persistence-dbunit performance issues on Oracle
              Bartosz Majsak Master

              Hi Tim,

               

              sorry for being silent that long. As you have pointed out, this is about filtering, but also related to this issue (consequence of this).

               

              That said, in the spirit of new year, I'm on that. I will keep you posted during next days.

               

              Cheers,

              Bartosz

              • 4. Re: Arquillian persistence-dbunit performance issues on Oracle
                Bartosz Majsak Master

                @Vitali if you have any hints how to simplify "the magic" please let me know and I will work on that. Thanks!

                • 5. Re: Arquillian persistence-dbunit performance issues on Oracle
                  Vitali Carbivnicii Newbie

                  No need to simplify anything, I just decided to not use it. I mean why do i have to poll the db metadata for every test execution? I know my db, just need it be filled.

                  Don't get me wrong the extension is really good, i will keep my eye on it in hope that performance issues will be resolved and will be very happy to use it again.

                   

                  update:

                  And one more reason for me to not use it yet is that it could never find my @createschema and @dropschema files whatever paths and names combinations i tried.

                  • 6. Re: Arquillian persistence-dbunit performance issues on Oracle
                    Tim Kutz Newbie

                    Hi Bartosz -

                     

                    Thanks, good to know someone is on the case.  The connection re-use surely aggravates the problem, but the real root issue, is that Filter class.  If I set up a test class that uses DBUnit directly, without Arquillian, and use SequenceFilter, where I can specify the table order explicitly, the tests speed up dramatically.  I believe that as of 1.0.0.alpha-4, Arquillian used only an ExcludeTableFilter, and thus didn't have the same issue.  My sugestion here would be to either provide a configuration switch such as the shouldResolveFK() metioned in this post, or to allow an annotation-based explicit definition of what filter or filters to use for each class.  The second option is clearly more flexible, but is also going to be more complicated.  For our purposes here, we'd be happy with a simple configurable switch in arquillian.xml.

                    • 7. Re: Arquillian persistence-dbunit performance issues on Oracle
                      Tim Kutz Newbie

                      I forked the arquillian-persistence-extension yesterday, with the intent of adding the switch so we could avoid the Filter, and discovered that the switch had already been implemented (filterForeignKeysEnabled).  By moving up to 1.0.0.Final-SNAPSHOT, I am able to get what I need from this.  My only outstanding question would be, when will this move into a non-SNAPSHOT version, for general use?

                       

                      For anyone else who may be having the same issue, the steps I followed to get it working were as follows:

                      1. Upgrade the dependencies on arquillian-persistence-api and arquillian-persistence-impl to use version 1.0.0.Final-SNAPSHOT.
                      2. Add the following config property to arquillian.xml, in the persistence-dbunit extension section:  

                        <property name="filterForeignKeysEnabled">false</property>

                      3. Ensure that all tests specify the database entries in correct insertion order.  You could do this by putting all entries for a test in one file, and ordering the rows as you want them inserted.  In our case, we re-use test data across multiple tests, so we organize the data by having a file per table to be populated.  In this case, the order the files are specified within the @UsingDataSet annotation matters.  So if you have table PARENT, and table CHILD, which references PARENT, and the data you want in them for your test is stored in parent.xml and child.xml, respectively, you can use the following annotation, and it will work reliably.

                                @UsingDataSet( { "parent.xml", "child.xml" })

                      • 8. Re: Arquillian persistence-dbunit performance issues on Oracle
                        Bartosz Majsak Master

                        I created JIRA ticket for custom table filtering. It's almost done. I will push it to master tomorrow. Just few more things to go and there will be a new release with bunch of cool features in. Thank you all for the patience and all the priceless feedback.

                        • 9. Re: Arquillian persistence-dbunit performance issues on Oracle
                          Bartosz Majsak Master

                          Is it any better with the 1.0.0.Alpha7 release?

                          • 10. Re: Re: Arquillian persistence-dbunit performance issues on Oracle
                            Rafael Pestano Novice

                            Hi @Bartosz,

                             

                            Im working with oracle and having issues for clearing a medium sized database(50 tables), if i use @Cleanup annotation my test time goes from 45sec to almost 3minutes here is my persistence related arquillian.xml config:

                             

                             

                            <extension qualifier="persistence-dbunit">
                                    <property name="schema">TR_DETRAN_RED_AD</property>
                                  <!-- <property name="datatypeFactory">org.dbunit.ext.oracle.Oracle10DataTypeFactory</property>-->
                                  <property name="filterTables">true</property>
                                    <!--<property name="filterForeignKeysEnabled">false</property>-->
                                    <!--<property name="customTableFilter">org.jboss.arquillian.persistence.dbunit.filter.OracleDatabaseSequenceFilterProvider</property>-->
                                </extension>
                            
                                <extension qualifier="persistence">
                                    <property name="defaultDataSource">java:jboss/datasources/RedTesteDS</property>
                                    <property name="defaultDataSeedStrategy">CLEAN_INSERT</property>
                                    <property name="defaultCleanupPhase">NONE</property>
                                    <property name="dumpData">false</property>
                                </extension>
                            
                                <extension qualifier="persistence-script">
                                    <property name="sqlStatementDelimiter">;</property>
                                </extension>
                            
                                <extension qualifier="transaction">
                                    <property name="manager">java:jboss/UserTransaction</property>
                                </extension>
                            

                             

                            So for now im deploying a singleton EJB with statup annotation to clean DB during deployment in combination with CLEAN_INSER defaultDataSeedStrategy to clean database.

                             

                            Here is the debug output with @Cleanup:

                             

                            -------------------------------------------------------

                            T E S T S

                            -------------------------------------------------------

                            Running com.procergs.test.integration.RedIt

                            (E) ManagerProcessing

                                (O) LoadableExtensionLoader.load

                                (E) ServiceRegistryLoader

                            log4j:WARN No appenders could be found for logger (org.jboss.logging).

                            log4j:WARN Please initialize the log4j system properly.

                            log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

                            (E) ManagerStarted

                                (O) ConfigurationRegistrar.loadConfiguration

                                (E) ArquillianDescriptorImpl

                                    (O) ScriptingConfigurationClientSideProducer.observe

                                    (E) ScriptingConfiguration

                                    (O) ProtocolRegistryCreator.createRegistry

                                    (E) ProtocolRegistry

                                    (O) ContainerRegistryCreator.createRegistry

                                    (E) LocalContainerRegistry

                                    (O) TransactionConfigurationProducer.loadConfiguration

                                    (E) TransactionConfiguration

                                    (O) PersistenceConfigurationClientSideProducer.observe

                                    (E) PersistenceConfiguration

                                    (O) DBUnitConfigurationClientSideProducer.observe

                                    (E) DBUnitConfiguration

                            (E) BeforeSuite

                                (I) TestContextHandler.createSuiteContext

                                (O) DroneRegistrar.register

                                (E) DroneRegistryImpl

                                    (O) DroneExecutorService.register

                                    (E) DroneExecutorService

                                (O) BrowserCapabilitiesRegistrar.register

                                (E) BrowserCapabilitiesRegistryImpl

                                (O) ContainerEventController.execute

                                (E) SetupContainers

                                    (O) ClientDeployerCreator.createClientSideDeployer

                                    (E) ClientDeployer

                                    (O) ClientContainerControllerCreator.createClientSideContainerController

                                    (E) ClientContainerController

                                    (O) ContainerLifecycleController.setupContainers

                                    (E) SetupContainer

                                        (I) ContainerDeploymentContextHandler.createContainerContext

                                        (O) ContainerLifecycleController.setupContainer

                                        (E) BeforeSetup

                                        (E) ContainerImpl

                                        (E) AfterSetup

                                (E) StartSuiteContainers

                                    (O) ContainerLifecycleController.startSuiteContainers

                                    (E) StartContainer

                                        (I) ContainerDeploymentContextHandler.createContainerContext

                                        (O) ContainerLifecycleController.startContainer

                                        (E) BeforeStart

                                        (E) ManagementClient

                                        (E) ArchiveDeployer

                                        (E) InitialContext

                                        (E) AfterStart

                                (O) ViewResourcesUnpacker.extractResources

                                (O) ReusableRemoteWebDriverExtension.initialize

                                (E) ReusedSessionPermanentFileStorage

                            Jul 11, 2014 6:36:04 PM org.jboss.arquillian.drone.webdriver.factory.remote.reusable.ReusedSessionPermanentFileStorage readStore

                            Informações: Reused session store is not available at C:\Users\rafael-pestano\.drone-webdriver-session-store, a new one will be created.

                                (E) ReusedSessionStoreImpl

                                (E) InitializationParametersMap

                                (O) GrapheneRuntimeInitializer.injectGrapheneRuntime

                            (E) BeforeClass

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (O) GrapheneConfigurator.configureGraphene

                                (E) GrapheneConfiguration

                                (E) GrapheneConfigured

                                (O) DroneConfigurator.prepareGlobalDroneConfiguration

                                (E) DroneContextImpl

                                (E) BeforeDroneConfigured

                                (E) AfterDroneConfigured

                                    (O) DroneCallableCreator.createDroneCallable

                                    (E) BeforeDroneCallableCreated

                                    (E) AfterDroneCallableCreated

                                (O) ContainerEventController.execute

                                (E) StartClassContainers

                                    (O) ContainerLifecycleController.startClassContainers

                                (E) GenerateDeployment

                                    (O) DeploymentGenerator.generateDeployment

                            ade06b86-8ff5-4336-8c5f-82533a09ad88.war:

                             

                                    (E) DeploymentScenario

                                (E) DeployManagedDeployments

                                    (O) ContainerDeployController.deployManaged

                                    (E) DeployDeployment

                                        (I) ContainerDeploymentContextHandler.createContainerContext

                                        (I) ContainerDeploymentContextHandler.createDeploymentContext

                                        (I) DeploymentExceptionHandler.verifyExpectedExceptionDuringDeploy

                                        (O) ContainerDeployController.deploy

                                        (E) DeploymentDescription

                                        (E) Deployment

                                        (E) BeforeDeploy

                                            (O) ArchiveDeploymentToolingExporter.export

                                            (O) ServerSetupObserver.handleBeforeDeployment

                                            (O) ArchiveDeploymentExporter.callback

                                            (O) ArquillianServiceDeployer.doServiceDeploy

                                        (E) ProtocolMetaData

                                        (E) AfterDeploy

                                (O) DroneConfigurator.prepareDroneConfiguration

                                (O) ContainerRestarter.restart

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                            (E) Before

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createBeforeContext

                                (O) TransactionHandler.startTransactionBeforeTest

                                (O) StepEnricherProvider.enrich

                                (O) TestInstanceEnricher.enrich

                                (O) DroneConfigurator.configureDrone

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                            (E) Test

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createTestContext

                                (O) ClientTestExecuter.execute

                                (E) RemoteExecutionEvent

                                    (O) RemoteTestExecuter.execute

                                    (E) TestResult

                            (E) After

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) UpdateTestResultBeforeAfter.update

                                (I) ContainerEventController.createAfterContext

                                (I) CreationalContextDestroyer.destory

                                (I) TransactionHandler.endTransactionAfterTest

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                                (O) DroneDestructor.destroyMethodScopedDrone

                            (E) Before

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createBeforeContext

                                (O) TransactionHandler.startTransactionBeforeTest

                                (O) StepEnricherProvider.enrich

                                (O) TestInstanceEnricher.enrich

                                (O) DroneConfigurator.configureDrone

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                            (E) Test

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createTestContext

                                (O) ClientTestExecuter.execute

                                (E) RemoteExecutionEvent

                                    (O) RemoteTestExecuter.execute

                                    (E) TestResult

                            (E) After

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) UpdateTestResultBeforeAfter.update

                                (I) ContainerEventController.createAfterContext

                                (I) CreationalContextDestroyer.destory

                                (I) TransactionHandler.endTransactionAfterTest

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                                (O) DroneDestructor.destroyMethodScopedDrone

                            (E) Before

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createBeforeContext

                                (O) TransactionHandler.startTransactionBeforeTest

                                (O) StepEnricherProvider.enrich

                                (O) TestInstanceEnricher.enrich

                                (O) DroneConfigurator.configureDrone

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                            (E) Test

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createTestContext

                                (O) ClientTestExecuter.execute

                                (E) RemoteExecutionEvent

                                    (O) RemoteTestExecuter.execute

                                    (E) TestResult

                            (E) After

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) UpdateTestResultBeforeAfter.update

                                (I) ContainerEventController.createAfterContext

                                (I) CreationalContextDestroyer.destory

                                (I) TransactionHandler.endTransactionAfterTest

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                                (O) DroneDestructor.destroyMethodScopedDrone

                            (E) Before

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createBeforeContext

                                (O) TransactionHandler.startTransactionBeforeTest

                                (O) StepEnricherProvider.enrich

                                (O) TestInstanceEnricher.enrich

                                (O) DroneConfigurator.configureDrone

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                            (E) Test

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createTestContext

                                (O) ClientTestExecuter.execute

                                (E) RemoteExecutionEvent

                                    (O) RemoteTestExecuter.execute

                                    (E) TestResult

                            (E) After

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createTestContext

                                (I) UpdateTestResultBeforeAfter.update

                                (I) ContainerEventController.createAfterContext

                                (I) CreationalContextDestroyer.destory

                                (I) TransactionHandler.endTransactionAfterTest

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                                (O) DroneDestructor.destroyMethodScopedDrone

                            (E) AfterClass

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createSuiteContext

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                                (O) ServerSetupObserver.afterTestClass

                                (O) ContainerEventController.execute

                                (E) UnDeployManagedDeployments

                                    (O) ContainerDeployController.undeployManaged

                                    (E) UnDeployDeployment

                                        (I) ContainerDeploymentContextHandler.createContainerContext

                                        (I) ContainerDeploymentContextHandler.createDeploymentContext

                                        (O) ContainerDeployController.undeploy

                                        (E) BeforeUnDeploy

                                        (E) AfterUnDeploy

                                            (O) ServerSetupObserver.handleAfterUndeploy

                                (E) StopManualContainers

                                    (O) ContainerLifecycleController.stopManualContainers

                                (E) StopClassContainers

                                    (O) ContainerLifecycleController.stopClassContainers

                                (O) DroneDestructor.destroyClassScopedDrone

                                (O) GrapheneConfigurator.unconfigureGraphene

                                (E) GrapheneUnconfigured

                            Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 145.297 sec - in com.procergs.test.integration.RedIt

                            (E) AfterSuite

                                (I) TestContextHandler.createSuiteContext

                                (O) ContainerEventController.execute

                                (E) StopSuiteContainers

                                    (O) ContainerLifecycleController.stopSuiteContainers

                                    (E) StopContainer

                                        (I) ContainerDeploymentContextHandler.createContainerContext

                                        (O) ContainerLifecycleController.stopContainer

                                        (E) BeforeStop

                                            (O) ArquillianServiceDeployer.undeploy

                                        (E) AfterStop

                                (O) GrapheneRuntimeInitializer.cleanGrapheneRuntime

                            (E) ManagerStopping

                                (O) DroneExecutorService.shutdown

                             

                            Results :

                             

                            Tests run: 4, Failures: 0, Errors: 0, Skipped: 0

                             

                            [INFO] ------------------------------------------------------------------------

                            [INFO] BUILD SUCCESS

                            [INFO] ------------------------------------------------------------------------

                            [INFO] Total time: 02:35 min

                            [INFO] Finished at: 2014-07-11T18:38:27-03:00

                            [INFO] Final Memory: 43M/425M

                            [INFO] ------------------------------------------------------------------------

                             

                            Process finished with exit code 0

                             

                             

                            and here is the utput without @Cleanup, using the singleton EJB with @starup to clean db before tests. The arquillian.xml remais the same:

                             

                            -------------------------------------------------------

                            T E S T S

                            -------------------------------------------------------

                            Running com.procergs.test.integration.RedIt

                            (E) ManagerProcessing

                                (O) LoadableExtensionLoader.load

                                (E) ServiceRegistryLoader

                            log4j:WARN No appenders could be found for logger (org.jboss.logging).

                            log4j:WARN Please initialize the log4j system properly.

                            log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

                            (E) ManagerStarted

                                (O) ConfigurationRegistrar.loadConfiguration

                                (E) ArquillianDescriptorImpl

                                    (O) ProtocolRegistryCreator.createRegistry

                                    (E) ProtocolRegistry

                                    (O) ContainerRegistryCreator.createRegistry

                                    (E) LocalContainerRegistry

                                    (O) ScriptingConfigurationClientSideProducer.observe

                                    (E) ScriptingConfiguration

                                    (O) TransactionConfigurationProducer.loadConfiguration

                                    (E) TransactionConfiguration

                                    (O) PersistenceConfigurationClientSideProducer.observe

                                    (E) PersistenceConfiguration

                                    (O) DBUnitConfigurationClientSideProducer.observe

                                    (E) DBUnitConfiguration

                            (E) BeforeSuite

                                (I) TestContextHandler.createSuiteContext

                                (O) GrapheneRuntimeInitializer.injectGrapheneRuntime

                                (O) ViewResourcesUnpacker.extractResources

                                (O) DroneRegistrar.register

                                (E) DroneRegistryImpl

                                    (O) DroneExecutorService.register

                                    (E) DroneExecutorService

                                (O) ContainerEventController.execute

                                (E) SetupContainers

                                    (O) ClientDeployerCreator.createClientSideDeployer

                                    (E) ClientDeployer

                                    (O) ContainerLifecycleController.setupContainers

                                    (E) SetupContainer

                                        (I) ContainerDeploymentContextHandler.createContainerContext

                                        (O) ContainerLifecycleController.setupContainer

                                        (E) BeforeSetup

                                        (E) ContainerImpl

                                        (E) AfterSetup

                                    (O) ClientContainerControllerCreator.createClientSideContainerController

                                    (E) ClientContainerController

                                (E) StartSuiteContainers

                                    (O) ContainerLifecycleController.startSuiteContainers

                                    (E) StartContainer

                                        (I) ContainerDeploymentContextHandler.createContainerContext

                                        (O) ContainerLifecycleController.startContainer

                                        (E) BeforeStart

                                        (E) ManagementClient

                                        (E) ArchiveDeployer

                                        (E) InitialContext

                                        (E) AfterStart

                                (O) BrowserCapabilitiesRegistrar.register

                                (E) BrowserCapabilitiesRegistryImpl

                                (O) ReusableRemoteWebDriverExtension.initialize

                                (E) ReusedSessionPermanentFileStorage

                            Jul 11, 2014 7:15:03 PM org.jboss.arquillian.drone.webdriver.factory.remote.reusable.ReusedSessionPermanentFileStorage readStore

                            Informações: Reused session store is not available at C:\Users\rafael-pestano\.drone-webdriver-session-store, a new one will be created.

                                (E) ReusedSessionStoreImpl

                                (E) InitializationParametersMap

                            (E) BeforeClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (O) GrapheneConfigurator.configureGraphene

                                (E) GrapheneConfiguration

                                (E) GrapheneConfigured

                                (O) DroneConfigurator.prepareGlobalDroneConfiguration

                                (E) DroneContextImpl

                                (E) BeforeDroneConfigured

                                (E) AfterDroneConfigured

                                    (O) DroneCallableCreator.createDroneCallable

                                    (E) BeforeDroneCallableCreated

                                    (E) AfterDroneCallableCreated

                                (O) DroneConfigurator.prepareDroneConfiguration

                                (O) ContainerRestarter.restart

                                (O) ContainerEventController.execute

                                (E) StartClassContainers

                                    (O) ContainerLifecycleController.startClassContainers

                                (E) GenerateDeployment

                                    (O) DeploymentGenerator.generateDeployment

                            d8515216-cc7e-4f8f-b06e-dacfff5210a4.war:

                             

                                    (E) DeploymentScenario

                                (E) DeployManagedDeployments

                                    (O) ContainerDeployController.deployManaged

                                    (E) DeployDeployment

                                        (I) DeploymentExceptionHandler.verifyExpectedExceptionDuringDeploy

                                        (I) ContainerDeploymentContextHandler.createContainerContext

                                        (I) ContainerDeploymentContextHandler.createDeploymentContext

                                        (O) ContainerDeployController.deploy

                                        (E) DeploymentDescription

                                        (E) Deployment

                                        (E) BeforeDeploy

                                            (O) ServerSetupObserver.handleBeforeDeployment

                                            (O) ArchiveDeploymentExporter.callback

                                            (O) ArquillianServiceDeployer.doServiceDeploy

                                            (O) ArchiveDeploymentToolingExporter.export

                                        (E) ProtocolMetaData

                                        (E) AfterDeploy

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                            (E) Before

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createBeforeContext

                                (O) TransactionHandler.startTransactionBeforeTest

                                (O) TestInstanceEnricher.enrich

                                (O) DroneConfigurator.configureDrone

                                (O) StepEnricherProvider.enrich

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                            (E) Test

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createTestContext

                                (O) ClientTestExecuter.execute

                                (E) RemoteExecutionEvent

                                    (O) RemoteTestExecuter.execute

                                    (E) TestResult

                            (E) After

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) UpdateTestResultBeforeAfter.update

                                (I) CreationalContextDestroyer.destory

                                (I) ContainerEventController.createAfterContext

                                (I) TransactionHandler.endTransactionAfterTest

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                                (O) DroneDestructor.destroyMethodScopedDrone

                            (E) Before

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createBeforeContext

                                (O) TransactionHandler.startTransactionBeforeTest

                                (O) TestInstanceEnricher.enrich

                                (O) DroneConfigurator.configureDrone

                                (O) StepEnricherProvider.enrich

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                            (E) Test

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createTestContext

                                (O) ClientTestExecuter.execute

                                (E) RemoteExecutionEvent

                                    (O) RemoteTestExecuter.execute

                                    (E) TestResult

                            (E) After

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) UpdateTestResultBeforeAfter.update

                                (I) CreationalContextDestroyer.destory

                                (I) ContainerEventController.createAfterContext

                                (I) TransactionHandler.endTransactionAfterTest

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                                (O) DroneDestructor.destroyMethodScopedDrone

                            (E) Before

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createBeforeContext

                                (O) TransactionHandler.startTransactionBeforeTest

                                (O) TestInstanceEnricher.enrich

                                (O) DroneConfigurator.configureDrone

                                (O) StepEnricherProvider.enrich

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                            (E) Test

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createTestContext

                                (O) ClientTestExecuter.execute

                                (E) RemoteExecutionEvent

                                    (O) RemoteTestExecuter.execute

                                    (E) TestResult

                            (E) After

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) UpdateTestResultBeforeAfter.update

                                (I) CreationalContextDestroyer.destory

                                (I) ContainerEventController.createAfterContext

                                (I) TransactionHandler.endTransactionAfterTest

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                                (O) DroneDestructor.destroyMethodScopedDrone

                            (E) Before

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createBeforeContext

                                (O) TransactionHandler.startTransactionBeforeTest

                                (O) TestInstanceEnricher.enrich

                                (O) DroneConfigurator.configureDrone

                                (O) StepEnricherProvider.enrich

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                            (E) Test

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) ContainerEventController.createTestContext

                                (O) ClientTestExecuter.execute

                                (E) RemoteExecutionEvent

                                    (O) RemoteTestExecuter.execute

                                    (E) TestResult

                            (E) After

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (I) TestContextHandler.createTestContext

                                (I) UpdateTestResultBeforeAfter.update

                                (I) CreationalContextDestroyer.destory

                                (I) ContainerEventController.createAfterContext

                                (I) TransactionHandler.endTransactionAfterTest

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                                (O) DroneDestructor.destroyMethodScopedDrone

                            (E) AfterClass

                                (I) TestContextHandler.createSuiteContext

                                (I) TestContextHandler.createClassContext

                                (E) TestClass

                                (O) ClientBeforeAfterLifecycleEventExecuter.on

                                (O) DroneDestructor.destroyClassScopedDrone

                                (O) ServerSetupObserver.afterTestClass

                                (O) ContainerEventController.execute

                                (E) UnDeployManagedDeployments

                                    (O) ContainerDeployController.undeployManaged

                                    (E) UnDeployDeployment

                                        (I) ContainerDeploymentContextHandler.createContainerContext

                                        (I) ContainerDeploymentContextHandler.createDeploymentContext

                                        (O) ContainerDeployController.undeploy

                                        (E) BeforeUnDeploy

                                        (E) AfterUnDeploy

                                            (O) ServerSetupObserver.handleAfterUndeploy

                                (E) StopManualContainers

                                    (O) ContainerLifecycleController.stopManualContainers

                                (E) StopClassContainers

                                    (O) ContainerLifecycleController.stopClassContainers

                                (O) GrapheneConfigurator.unconfigureGraphene

                                (E) GrapheneUnconfigured

                            Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 54.049 sec - in com.procergs.test.integration.RedIt

                            (E) AfterSuite

                                (I) TestContextHandler.createSuiteContext

                                (O) GrapheneRuntimeInitializer.cleanGrapheneRuntime

                                (O) ContainerEventController.execute

                                (E) StopSuiteContainers

                                    (O) ContainerLifecycleController.stopSuiteContainers

                                    (E) StopContainer

                                        (I) ContainerDeploymentContextHandler.createContainerContext

                                        (O) ContainerLifecycleController.stopContainer

                                        (E) BeforeStop

                                            (O) ArquillianServiceDeployer.undeploy

                                        (E) AfterStop

                            (E) ManagerStopping

                                (O) DroneExecutorService.shutdown

                             

                            Results :

                             

                            Tests run: 4, Failures: 0, Errors: 0, Skipped: 0

                             

                            [INFO] ------------------------------------------------------------------------

                            [INFO] BUILD SUCCESS

                            [INFO] ------------------------------------------------------------------------

                            [INFO] Total time: 01:04 min

                            [INFO] Finished at: 2014-07-11T19:15:55-03:00

                            [INFO] Final Memory: 43M/426M

                            [INFO] ------------------------------------------------------------------------

                             

                            Process finished with exit code 0

                             

                            Im using eap 6.2 remote adapter.

                             

                            If you need any more info just tell.

                             

                            thanks in advance

                            • 11. Re: Arquillian persistence-dbunit performance issues on Oracle
                              Rafael Pestano Novice

                              I've workaround this issue with oracle by using @CleanupUsingScript in my tests and disabling clean strategy in arquillian.xml

                               

                                <extension qualifier="persistence">

                                      <property name="defaultDataSource">java:jboss/datasources/RedTesteDS</property>

                                      <property name="defaultDataSeedStrategy">INSERT</property>

                                      <property name="defaultCleanupPhase">NONE</property>

                                      <property name="dumpData">false</property>

                                  </extension>

                               

                                  <extension qualifier="persistence-script">

                                      <property name="sqlStatementDelimiter">;</property>

                                      <property name="sqlDialect">oracle</property>

                                  </extension>

                               

                              Also becareful with the oracle delimiter problem: [ARQ-1444] Oracle does not support query delimiter inside statements - JBoss Issue Tracker

                               

                              I hope it helps someone

                              • 12. Re: Arquillian persistence-dbunit performance issues on Oracle
                                Bartosz Majsak Master

                                Cleanup issue is b/c of the way how sequences are handled for Oracle. Since Alpha7 we have a way to define new one, but apparently it fails on Wildfly... https://issues.jboss.org/browse/ARQ-1815