dev@glassfish.java.net

Re: Instability of QuickLook tests

From: Ming Zhang <Ming.Zhang_at_Sun.COM>
Date: Sun, 04 Oct 2009 17:10:56 -0700

Jane,

I have checked in one more test to delete http-listener "ls123452". Now
admin tests can be run repeatedly without errors and the domain.xml gets
cleaned up after each admin test run.

Lloyd,
the AMX tests still failed in the 2nd QL run (iterateAllSanityCheck,
testAMXComplianceMonitorFailureCount) after my change for admin tests.
Is this due to the configuration changes in domain.xml after admin GUI
loaded? Is it reasonable to expect AMX tests will accommodate the
configurations of admin GUI in domain.xml?

Thanks,
Ming

Jane Young wrote:
> Ming,
>
> Recreating the domain will resolve the AMX test failures. Looks like
> QL may not be cleaning-up domain.xml and resetting to the original
> configuration.
> I see that admin-gui configuration is added to domain.xml after
> running QL. This is because admin-gui is getting invoked the first
> time. There is a new http-listener, "ls123452". Should that be
> removed? I'm not sure what other configurations are added and need
> to be removed after running QL.
>
> Can you look into this?
>
>
> Thanks,
> Jane
>
>
> Ming Zhang wrote:
>> I tried to reproduce the issue with the promoted b66
>> (http://download.java.net/glassfish/v3/promoted/glassfish-v3-b66.zip)
>> and here are what I found:
>>
>> * Run QL first time in web distribution profile and all passed.
>> * Run QL again and the amx or admin tests start having errors
>> * To isolate the problem, I deleted the b66 and unzip again. Run
>> amx test individually multiple times and tests passed:
>> o quicklook/amx % ant
>> -Dglassfish.home=/export/home/ming/v3/b66/glassfishv3/glassfish
>> all
>> * Start domain and derby. Run admin tests individually. The tests
>> passed first time and started failed when ran again.
>> o quicklook/admin % ant
>> -Dglassfish.home=/export/home/ming/v3/b66/glassfishv3/glassfish
>> all
>>
>> The stack trace on server side is clean:
>> http://javaweb.sfbay/~mzh777/v3/ql/b66/server.log
>> But there are exceptions on client side. Can someone on admin team
>> take a look for the error?
>>
>> Thanks,
>> Ming
>>
>> To turn on the the verbose mode for testng
>> quicklook/admin % svn diff
>> Index: testng.xml
>> ===================================================================
>> --- testng.xml (revision 32234)
>> +++ testng.xml (working copy)
>> @@ -35,7 +35,7 @@
>> -->
>> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
>>
>> -<suite name="QuickLookTests" verbose="2" >
>> +<suite name="QuickLookTests" verbose="4" >
>>
>> and here are the output on console:
>>
>> runtest-impl-xml:
>> [echo] =============Starting TestNG test at ..//classes/test
>> from testng.xml ============
>> [testng] [Parser] Running:
>> [testng] /export/home/ming/v3/quicklook/admin/testng.xml
>>
>> [testng] [RunInfo] Adding method selector:
>> org.testng.internal.XmlMethodSelector_at_ef2c60 priority: 10
>> [testng] [TestClass] Creating TestClass for [ClassImpl
>> test.admin.JdbcConnectionPoolTests]
>> [testng] [TestClass] Adding method
>> test.admin.JdbcConnectionPoolTests.createPool() on TestClass class
>> test.admin.JdbcConnectionPoolTests
>> [testng] [TestClass] Adding method
>> test.admin.JdbcConnectionPoolTests.ensureCreatedPoolExists() on
>> TestClass class test.admin.JdbcConnectionPoolTests
>> [testng] [TestClass] Adding method
>> test.admin.JdbcConnectionPoolTests.deletedPoolDoesNotExist() on
>> TestClass class test.admin.JdbcConnectionPoolTests
>> [testng] [TestClass] Adding method
>> test.admin.JdbcConnectionPoolTests.deletePool() on TestClass class
>> test.admin.JdbcConnectionPoolTests
>> [testng] [TestClass] Adding method
>> test.admin.JdbcConnectionPoolTests.pingPool() on TestClass class
>> test.admin.JdbcConnectionPoolTests
>> [testng] [XmlMethodSelector] Including method
>> test.admin.setUpEnvironment()
>> [testng] [XmlMethodSelector] Including method
>> test.admin.setupEnvironment()
>> [testng] [MethodInheritance]
>> test.admin.JdbcConnectionPoolTests.setupEnvironment(java.lang.String)
>> DEPENDS ON
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)
>> [testng] [TestClass] Creating TestClass for [ClassImpl
>> test.admin.JvmOptionTests]
>> [testng] [TestClass] Adding method
>> test.admin.JvmOptionTests.deletedJoeDoesNotExist() on TestClass class
>> test.admin.JvmOptionTests
>> [testng] [TestClass] Adding method
>> test.admin.JvmOptionTests.deleteJoe() on TestClass class
>> test.admin.JvmOptionTests
>> [testng] [TestClass] Adding method
>> test.admin.JvmOptionTests.ensureCreatedJoeExists() on TestClass class
>> test.admin.JvmOptionTests
>> [testng] [TestClass] Adding method
>> test.admin.JvmOptionTests.createJoe() on TestClass class
>> test.admin.JvmOptionTests
>> [testng] [TestClass] Creating TestClass for [ClassImpl
>> test.admin.WebtierTests]
>> [testng] [TestClass] Adding method
>> test.admin.WebtierTests.deleteListener() on TestClass class
>> test.admin.WebtierTests
>> [testng] [TestClass] Adding method
>> test.admin.WebtierTests.ensureDeletedListenerDoesNotExist() on
>> TestClass class test.admin.WebtierTests
>> [testng] [TestClass] Adding method
>> test.admin.WebtierTests.createListenerWithOldParam() on TestClass
>> class test.admin.WebtierTests
>> [testng] [TestClass] Adding method
>> test.admin.WebtierTests.ensureCreatedListenerExists() on TestClass
>> class test.admin.WebtierTests
>> [testng] [TestClass] Adding method
>> test.admin.WebtierTests.createListener() on TestClass class
>> test.admin.WebtierTests
>> [testng] [XmlMethodSelector] Including method test.admin.setup()
>> [testng] [MethodInheritance] test.admin.WebtierTests.setup()
>> DEPENDS ON
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)
>> [testng] [MethodInheritance]
>> test.admin.JdbcConnectionPoolTests.setupEnvironment(java.lang.String)
>> DEPENDS ON
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)
>> [testng] [MethodInheritance] test.admin.WebtierTests.setup()
>> DEPENDS ON
>> test.admin.JdbcConnectionPoolTests.setupEnvironment(java.lang.String)
>> [testng] [XmlMethodSelector] Including method test.admin.createPool()
>> [testng] [XmlMethodSelector] Including method
>> test.admin.ensureCreatedPoolExists()
>> [testng] [XmlMethodSelector] Including method
>> test.admin.deletedPoolDoesNotExist()
>> [testng] [XmlMethodSelector] Including method test.admin.deletePool()
>> [testng] [XmlMethodSelector] Including method test.admin.pingPool()
>> [testng] [XmlMethodSelector] Including method
>> test.admin.deletedJoeDoesNotExist()
>> [testng] [XmlMethodSelector] Including method test.admin.deleteJoe()
>> [testng] [XmlMethodSelector] Including method
>> test.admin.ensureCreatedJoeExists()
>> [testng] [XmlMethodSelector] Including method test.admin.createJoe()
>> [testng] [XmlMethodSelector] Including method
>> test.admin.deleteListener()
>> [testng] [XmlMethodSelector] Including method
>> test.admin.ensureDeletedListenerDoesNotExist()
>> [testng] [XmlMethodSelector] Including method
>> test.admin.createListenerWithOldParam()
>> [testng] [XmlMethodSelector] Including method
>> test.admin.ensureCreatedListenerExists()
>> [testng] [XmlMethodSelector] Including method
>> test.admin.createListener()
>> [testng] [SuiteRunner] Created 1 TestRunners
>> [testng] [TestRunner] Running test asadmin_tests on 3 classes,
>> included groups:[] excluded groups:[]
>> [testng] [TestClass]
>> [testng] ======
>> [testng] TESTCLASS: test.admin.JdbcConnectionPoolTests
>> [testng] [TestClass] BeforeClass :
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)
>> [testng] [TestClass] BeforeClass :
>> test.admin.JdbcConnectionPoolTests.setupEnvironment(java.lang.String)
>> [testng] [TestClass] Test :
>> test.admin.JdbcConnectionPoolTests.createPool()
>> [testng] [TestClass] Test :
>> test.admin.JdbcConnectionPoolTests.ensureCreatedPoolExists()
>> [testng] [TestClass] Test :
>> test.admin.JdbcConnectionPoolTests.deletedPoolDoesNotExist()
>> [testng] [TestClass] Test :
>> test.admin.JdbcConnectionPoolTests.deletePool()
>> [testng] [TestClass] Test :
>> test.admin.JdbcConnectionPoolTests.pingPool()
>> [testng] [TestClass]
>> [testng] ======
>>
>> [testng] [TestClass]
>> [testng] ======
>> [testng] TESTCLASS: test.admin.JvmOptionTests
>> [testng] [TestClass] BeforeClass :
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)
>> [testng] [TestClass] Test :
>> test.admin.JvmOptionTests.deletedJoeDoesNotExist()
>> [testng] [TestClass] Test :
>> test.admin.JvmOptionTests.deleteJoe()
>> [testng] [TestClass] Test :
>> test.admin.JvmOptionTests.ensureCreatedJoeExists()
>> [testng] [TestClass] Test :
>> test.admin.JvmOptionTests.createJoe()
>> [testng] [TestClass]
>> [testng] ======
>>
>> [testng] [TestClass]
>> [testng] ======
>> [testng] TESTCLASS: test.admin.WebtierTests
>> [testng] [TestClass] BeforeClass :
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)
>> [testng] [TestClass] BeforeClass : test.admin.WebtierTests.setup()
>> [testng] [TestClass] Test :
>> test.admin.WebtierTests.deleteListener()
>> [testng] [TestClass] Test :
>> test.admin.WebtierTests.ensureDeletedListenerDoesNotExist()
>> [testng] [TestClass] Test :
>> test.admin.WebtierTests.createListenerWithOldParam()
>> [testng] [TestClass] Test :
>> test.admin.WebtierTests.ensureCreatedListenerExists()
>> [testng] [TestClass] Test :
>> test.admin.WebtierTests.createListener()
>> [testng] [TestClass]
>> [testng] ======
>>
>> [testng] [TestRunner] WILL BE RUN IN RANDOM ORDER:
>> [testng] [TestRunner]
>> test.admin.WebtierTests.createListenerWithOldParam()
>> [testng] [TestRunner] WILL BE RUN SEQUENTIALLY:
>> [testng] [TestRunner] test.admin.WebtierTests.createListener()
>> [testng] [TestRunner]
>> test.admin.JdbcConnectionPoolTests.createPool()
>> [testng] [TestRunner] test.admin.JvmOptionTests.createJoe()
>> [testng] [TestRunner]
>> test.admin.JvmOptionTests.ensureCreatedJoeExists()
>> [testng] [TestRunner] test.admin.JvmOptionTests.deleteJoe()
>> [testng] [TestRunner]
>> test.admin.WebtierTests.ensureCreatedListenerExists()
>> [testng] [TestRunner] test.admin.WebtierTests.deleteListener()
>> [testng] [TestRunner]
>> test.admin.WebtierTests.ensureDeletedListenerDoesNotExist()
>> [testng] [TestRunner] test.admin.JdbcConnectionPoolTests.pingPool()
>> [testng] [TestRunner]
>> test.admin.JvmOptionTests.deletedJoeDoesNotExist()
>> [testng] [TestRunner]
>> test.admin.JdbcConnectionPoolTests.ensureCreatedPoolExists()
>> [testng] [TestRunner]
>> test.admin.JdbcConnectionPoolTests.deletePool()
>> [testng] [TestRunner]
>> test.admin.JdbcConnectionPoolTests.deletedPoolDoesNotExist()
>> [testng] [TestRunner] ====
>> [testng] [TestRunner] ===
>> [testng] [TestRunner] Found 2 applicable methods
>> [testng] [Invoker 20469344] Invoking @BeforeClass
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)
>> [testng] [Invoker 20469344] Invoking @BeforeClass
>> test.admin.WebtierTests.setup()
>> [testng] [Invoker 20469344] Invoking
>> test.admin.WebtierTests.createListener
>> [testng] [Invoker 20469344] Invoking @BeforeClass
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)
>> [testng] [Invoker 20469344] Invoking @BeforeClass
>> test.admin.JdbcConnectionPoolTests.setupEnvironment(java.lang.String)
>> [testng] [Invoker 20469344] Invoking
>> test.admin.JdbcConnectionPoolTests.createPool
>> [testng] [Invoker 20469344] Invoking @BeforeClass
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)
>> [testng] [Invoker 20469344] Invoking
>> test.admin.JvmOptionTests.createJoe
>> [testng] [Invoker 20469344] Invoking
>> test.admin.JvmOptionTests.ensureCreatedJoeExists
>> [testng] [Invoker 20469344] Invoking
>> test.admin.JvmOptionTests.deleteJoe
>> [testng] [Invoker 20469344] Invoking
>> test.admin.WebtierTests.ensureCreatedListenerExists
>> [testng] [Invoker 20469344] Invoking
>> test.admin.WebtierTests.deleteListener
>> [testng] [Invoker 20469344] Invoking
>> test.admin.JdbcConnectionPoolTests.pingPool
>> [testng] [Invoker 20469344] Invoking
>> test.admin.JvmOptionTests.deletedJoeDoesNotExist
>> [testng] [Invoker 20469344] Invoking
>> test.admin.JdbcConnectionPoolTests.ensureCreatedPoolExists
>> [testng] [Invoker 20469344] Invoking
>> test.admin.JdbcConnectionPoolTests.deletePool
>> [testng] [Invoker 20469344] Invoking
>> test.admin.JdbcConnectionPoolTests.deletedPoolDoesNotExist
>> [testng] [Invoker 20469344] Invoking
>> test.admin.WebtierTests.createListenerWithOldParam
>>
>> [testng] *********** INVOKED METHODS
>>
>> [testng]
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)http://localhost:4848/__asadmin
>> admin 7408068
>> [testng] test.admin.WebtierTests.setup() 7408068
>> [testng] test.admin.WebtierTests.createListener() 7408068
>> [testng]
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)http://localhost:4848/__asadmin
>> admin 24744797
>> [testng]
>> test.admin.JdbcConnectionPoolTests.setupEnvironment(java.lang.String)resources/resources.xml
>> 24744797
>> [testng]
>> test.admin.JdbcConnectionPoolTests.createPool() 24744797
>> [testng]
>> test.admin.BaseAsadminTest.setUpEnvironment(java.lang.String,
>> java.lang.String, java.lang.String)http://localhost:4848/__asadmin
>> admin 9949215
>> [testng] test.admin.JvmOptionTests.createJoe() 9949215
>> [testng]
>> test.admin.JvmOptionTests.ensureCreatedJoeExists() 9949215
>> [testng] test.admin.JvmOptionTests.deleteJoe() 9949215
>> [testng]
>> test.admin.WebtierTests.ensureCreatedListenerExists() 7408068
>> [testng] test.admin.WebtierTests.deleteListener() 7408068
>> [testng] test.admin.JdbcConnectionPoolTests.pingPool()
>> 24744797
>> [testng]
>> test.admin.JvmOptionTests.deletedJoeDoesNotExist() 9949215
>> [testng]
>> test.admin.JdbcConnectionPoolTests.ensureCreatedPoolExists() 24744797
>> [testng]
>> test.admin.JdbcConnectionPoolTests.deletePool() 24744797
>> [testng]
>> test.admin.JdbcConnectionPoolTests.deletedPoolDoesNotExist() 24744797
>> [testng]
>> test.admin.WebtierTests.createListenerWithOldParam() 7408068
>>
>> [testng] ***********
>>
>> [testng] Creating
>> /export/home/ming/v3/quicklook/test-output/QuickLookTests/asadmin_tests.html
>> [testng] PASSED: createListener
>> [testng] PASSED: createPool
>> [testng] PASSED: createJoe
>> [testng] PASSED: ensureCreatedJoeExists
>> [testng] PASSED: deleteJoe
>> [testng] PASSED: ensureCreatedListenerExists
>> [testng] PASSED: pingPool
>> [testng] PASSED: deletedJoeDoesNotExist
>> [testng] PASSED: ensureCreatedPoolExists
>> [testng] PASSED: deletePool
>> [testng] PASSED: deletedPoolDoesNotExist
>> [testng] PASSED: createListenerWithOldParam
>> [testng] FAILED: deleteListener
>> [testng] java.lang.RuntimeException: null
>> [testng] at
>> test.admin.util.GeneralUtils.handleManifestFailure(GeneralUtils.java:124)
>> [testng] at
>> test.admin.WebtierTests.deleteListener(WebtierTests.java:101)
>> [testng] ... Removed 22 stack frames
>> [testng] SKIPPED: ensureDeletedListenerDoesNotExist
>>
>> [testng] ===============================================
>> [testng] asadmin_tests
>> [testng] Tests run: 14, Failures: 1, Skips: 1
>> [testng] ===============================================
>>
>>
>> [testng] ===============================================
>> [testng] QuickLookTests
>> [testng] Total tests run: 14, Failures: 1, Skips: 1
>> [testng] ===============================================
>>
>> Ken Cavanaugh wrote:
>>> Darani and I have been running the QLs on multiple machines in order to
>>> verify the functioning of ORB b030 (GFv3 is currently using ORB b029),
>>> and every time we run the tests we get different results. I've had
>>> the same
>>> problems with trying to integrate Gmbal b016.
>>>
>>> The main tests that do this in the QL appear to be
>>> iterateAllSanityCheck (an
>>> AMX test), testAMXComplianceMonitorFailureCount, and deleteListener.
>>> Over 4 QL runs, I've observed the following:
>>>
>>> * Run 1: passed with Gmbal b015
>>> * Run 2: all 3 tests failed with Gmbal b016
>>> * Run 3: with CORBA b030, testAMXComplianceMonitorFailureCount
>>> failed
>>> o The AMX compliance monitor complained about the following:
>>> + Attribute 'Enabled' failed for
>>> amx:pp=/domain/configs/config[server-config]/java-config,type=profiler
>>> + Attribute 'JvmOptions' failed for
>>> amx:pp=/domain/configs/config[server-config]/java-config,type=profiler
>>> + Attribute 'NativeLibraryPath' failed for
>>> amx:pp=/domain/configs/config[server-config]/java-config,type=profiler
>>> + Attribute 'Classpath' failed for
>>> amx:pp=/domain/configs/config[server-config]/java-config,type=profiler
>>> + Attribute 'Property' failed for
>>> amx:pp=/domain/configs/config[server-config]/java-config,type=profiler
>>> + amx:pp=/domain/configs/config[server-config]/java-config,type=profiler
>>> General test failure in validateAMXConfig:
>>> java.lang.NullPointerException: "null"
>>> org.glassfish.admin.amx.core.AMXValidator.validateAMXConfig(AMXValidator.java:650)
>>> org.glassfish.admin.amx.core.AMXValidator._validate(AMXValidator.java:618)
>>> org.glassfish.admin.amx.core.AMXValidator.validate(AMXValidator.java:1213)
>>> org.glassfish.admin.amx.impl.mbean.ComplianceMonitor$ValidatorThread.doRun(ComplianceMonitor.java:235)
>>> org.glassfish.admin.amx.impl.mbean.ComplianceMonitor$ValidatorThread.run(ComplianceMonitor.java:206)
>>> * Run 4: I re-ran the same software as in run 3. This time all
>>> 3 tests failed.
>>> + There were several Gmbal failures in the log
>>> (unregister failures). These were all caused by
>>> InstanceNotFoundExceptions on a number of MBeans:
>>> # amx:pp=/mon/server-mon[server],type=bean-method-mon,name=remoteview/HelloBean/bean-methods/hello
>>> # amx:pp=/mon/server-mon[server],type=bean-method-mon,name=remoteview/HelloBean/bean-methods/asyncCancel-int
>>> # amx:pp=/mon/server-mon[server],type=bean-method-mon,name=remoteview/HelloBean/bean-methods/asyncThrowException-java.lang.String
>>> # amx:pp=/mon/server-mon[server],type=bean-method-mon,name=remoteview/HelloBean/bean-methods/throwException-java.lang.String
>>> # amx:pp=/mon/server-mon[server],type=bean-method-mon,name=remoteview/HelloBean/bean-methods/asyncBlock-int
>>> # etc. for a total of 153 MBeans: each
>>> unregister failure happened twice in a row.
>>>
>>> Now, I initially assumed that the QL failures I observed in Run 2
>>> were do to interactions between
>>> a new Gmbal feature (root parent monitoring) and the rest of GFv3
>>> monitoring. But the same tests
>>> seem to fail almost randomly in other situations. Particularly
>>> disturbing is the fact the Run 3 and Run 4
>>> shared completely IDENTICAL app server code, and exhibited different
>>> failures. I also highly doubt that
>>> the ORB has anything to do with the observed (and unpredictable)
>>> failures. Note that very similar failures
>>> are seen both with Gmbal b016 and with CORBA b030. That coincidence
>>> and the lack of repeatability lead
>>> me to wonder about the stability of the QLs, and whether the
>>> failures on Gmbal b016 have anything at all to do
>>> with the recent Gmbal changes.
>>>
>>> This is a big problem. Darani and I have been unable to complete
>>> any CORBA or Gmbal integrations recently,
>>> because we keep seeing different failures. Darani had b30 passing
>>> ALL tests at one point, then when she attempted
>>> to verify one final time to complete the integration, similar
>>> failures occurred.
>>>
>>> We need help to understand why we see this level of instability in
>>> QL runs. Without fixing this, we
>>> are unable to integrate either CORBA or Gmbal, and we are nearly out
>>> of time for a number
>>> of important fixes (many of which are ready to go) before hard code
>>> freeze.
>>>
>>> Thanks,
>>>
>>> Ken.
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net For
>>> additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>