Thanks.  In case this helps....Alena helped me do some digging.  The reason is 
because the unit test creates ManagementServer which causes the JVM to 
initialize all static variables which causes new code that moved the static 
LockMaster to initialize which which causes the requirement on the JDBC 
drivers.  When running the unit tests, there's no jdbc drivers and so it fails.

--Alex

> -----Original Message-----
> From: Darren Shepherd [mailto:darren.s.sheph...@gmail.com]
> Sent: Friday, October 25, 2013 2:53 PM
> To: dev@cloudstack.apache.org
> Subject: Re: failing unit tests....
> 
> I'll fix that.
> 
> Darren
> 
> On Fri, Oct 25, 2013 at 1:54 PM, Alex Huang <alex.hu...@citrix.com> wrote:
> > I'm getting this failing unit test when building with the latest from 
> > master.
> Anyone working on it or know what it is already?  From the stack, it looks 
> like
> it's a problem location the jdbc driver.  This was working just yesterday.
> >
> > Test set: com.cloud.alert.AlertControlsUnitTest
> > ----------------------------------------------------------------------
> > --------- Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time
> > elapsed: 0.175 sec <<< FAILURE!
> > warning(junit.framework.TestSuite$1)  Time elapsed: 0.004 sec  <<<
> FAILURE!
> > junit.framework.AssertionFailedError: Exception in constructor:
> testInjected (java.lang.ExceptionInInitializerError
> >         at
> com.cloud.alert.AlertControlsUnitTest.<init>(AlertControlsUnitTest.java:46)
> >         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
> >         at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructor
> AccessorImpl.java:57)
> >         at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCon
> structorAccessorImpl.java:45)
> >         at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
> >         at junit.framework.TestSuite.createTest(TestSuite.java:61)
> >         at junit.framework.TestSuite.addTestMethod(TestSuite.java:294)
> >         at
> junit.framework.TestSuite.addTestsFromTestCase(TestSuite.java:150)
> >         at junit.framework.TestSuite.<init>(TestSuite.java:129)
> >         at
> org.junit.internal.runners.JUnit38ClassRunner.<init>(JUnit38ClassRunner.jav
> a:71)
> >         at
> org.junit.internal.builders.JUnit3Builder.runnerForClass(JUnit3Builder.java:14)
> >         at
> org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.j
> ava:57)
> >         at
> org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDe
> faultPossibilitiesBuilder.java:29)
> >         at
> org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.j
> ava:57)
> >         at
> org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
> >         at
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.jav
> a:234)
> >         at
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Prov
> ider.java:134)
> >         at
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java
> :113)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
> ava:57)
> >         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:43)
> >         at java.lang.reflect.Method.invoke(Method.java:606)
> >         at
> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(Refl
> ectionUtils.java:189)
> >         at
> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(Pr
> oviderFactory.java:165)
> >         at
> org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(Provider
> Factory.java:85)
> >         at
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(Forked
> Booter.java:103)
> >         at
> >
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:7
> > 4) Caused by: com.cloud.utils.exception.CloudRuntimeException: Unable
> > to initialize a connection to the database for locking purposes:
> >         at com.cloud.utils.db.Merovingian2.<init>(Merovingian2.java:74)
> >         at
> com.cloud.utils.db.Merovingian2.createLockMaster(Merovingian2.java:80)
> >         at
> com.cloud.server.LockMasterListener.<init>(LockMasterListener.java:33)
> >         at
> com.cloud.server.ManagementServerImpl.<clinit>(ManagementServerImpl.
> java:602)
> >         ... 27 more
> > Caused by: java.sql.SQLException: No suitable driver found for
> jdbc:mysql://localhost:3306/cloud?autoReconnect=true&prepStmtCacheSize
> =517&cachePrepStmts=true&prepStmtCacheSqlLimit=4096
> >         at java.sql.DriverManager.getConnection(DriverManager.java:596)
> >         at java.sql.DriverManager.getConnection(DriverManager.java:215)
> >         at
> org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnec
> tion(DriverManagerConnectionFactory.java:75)
> >         at
> >
> org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(Poolabl
> eC
> > onnectionFactory.java:582)
> >
> > --Alex

Reply via email to