Friday, December 7, 2012

Re: Using Cloud SQL in Unit Test

I was finally able to get this all working and figure it out. I added an answer to your stackoverflow question: http://stackoverflow.com/a/13756507/1075909 .

App Engine and Cloud Sql devs, since I think it would be pretty common that people will want to run test cases outside of App Engine, it would be really nice if the AppEngineDriver (or some other wrapper driver) could run EITHER in AppEngine or outside of AppEngine if the rdbms.driver property points to something else (e.g. the base should be a delegating driver like: http://stackoverflow.com/a/288941/1075909 )

On Wednesday, October 3, 2012 4:48:33 PM UTC-5, Jerome Ansia wrote:
Hi Fabian,

I'm stuck on the same thing actually, i've written a question there :

Did find anything to solve this? Because it looks like it's been a while :)

Thank you!!!

On Tuesday, October 25, 2011 1:38:32 PM UTC-4, Fabian Kajzar wrote:
Hi,

thank you for your answer, but sadly it didn´t changes anything. Still
get the same errors :(

Any other guesses?

Kind regards
Fabian

2011/10/25 Chandana Napagoda <cnap...@gmail.com>:
> Hi,
>
> I think for local test case "datanucleus rdbms" jar need. I have attached
> here it. Try to add it to your class path and try to execute test cases and
> let us know the results.
>
>
> Regards,
> Chandana
> http://cnapagoda.blogspot.com
>
> On Tue, Oct 25, 2011 at 8:44 AM, Fabian Kajzar <fabian...@googlemail.com>
> wrote:
>>
>> Hi folks,
>>
>> i used this setup and it works fine as long as i start a app engine
>> server. (it uses then my local mysql server)
>>
>> But i would like to use it also when i run my unit test. But when i
>> try this, i always get this error:
>>
>> com.google.apphosting.api.ApiProxy$CallNotFoundException: The API
>> package 'rdbms' or call 'OpenConnection()' was not found.
>>        at
>> com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:98)
>>        at
>> com.google.appengine.api.rdbms.RdbmsApiProxyClient$ApiProxyBlockingInterface.makeSyncCall(RdbmsApiProxyClient.java:89)
>>        at
>> com.google.appengine.api.rdbms.RdbmsApiProxyClient$ApiProxyBlockingInterface.openConnection(RdbmsApiProxyClient.java:75)
>>        at
>> com.google.cloud.sql.jdbc.internal.SqlProtoClient.openConnection(SqlProtoClient.java:58)
>>        at com.google.cloud.sql.jdbc.Driver.connect(Driver.java:58)
>>        at com.google.cloud.sql.jdbc.Driver.connect(Driver.java:26)
>>        at java.sql.DriverManager.getConnection(DriverManager.java:582)
>>        at java.sql.DriverManager.getConnection(DriverManager.java:207)
>>        at
>> de.worldcup.appengine.server.BackendServlet.createTurnamentDBTable(BackendServlet.java:28)
>>        at
>> de.worldcup.appengine.test.TurnamentTest.setUp(TurnamentTest.java:30)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at
>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>>        at
>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>>        at
>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>>        at
>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
>>        at
>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>>        at
>> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
>>        at
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
>>        at
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
>>        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>>        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>>        at
>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
>>        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>>        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
>>        at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>>        at
>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>>        at
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>        at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>        at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>        at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>        at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>>
>> so i tried to use a LocalServiceTestHelper (the
>> LocalXMPPServiceTestConfig). Now i always get the error:
>>
>> java.lang.IllegalStateException: System property rdbms.driver must be set.
>>        at
>> com.google.appengine.api.rdbms.dev.LocalRdbmsProperties.registerDriver(LocalRdbmsProperties.java:79)
>>        at
>> com.google.appengine.api.rdbms.dev.LocalRdbmsServiceLocalDriver.init(LocalRdbmsServiceLocalDriver.java:70)
>>        at
>> com.google.appengine.api.rdbms.dev.LocalRdbmsService.init(LocalRdbmsService.java:85)
>>        at
>> com.google.appengine.tools.development.ApiProxyLocalImpl.startServices(ApiProxyLocalImpl.java:561)
>>        at
>> com.google.appengine.tools.development.ApiProxyLocalImpl.access$700(ApiProxyLocalImpl.java:46)
>>        at
>> com.google.appengine.tools.development.ApiProxyLocalImpl$2.run(ApiProxyLocalImpl.java:544)
>>        at
>> com.google.appengine.tools.development.ApiProxyLocalImpl$2.run(ApiProxyLocalImpl.java:542)
>>        at java.security.AccessController.doPrivileged(Native Method)
>>        at
>> com.google.appengine.tools.development.ApiProxyLocalImpl.getService(ApiProxyLocalImpl.java:541)
>>        at
>> com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.callInternal(ApiProxyLocalImpl.java:457)
>>        at
>> com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.call(ApiProxyLocalImpl.java:436)
>>        at
>> com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.call(ApiProxyLocalImpl.java:415)
>>        at
>> java.util.concurrent.Executors$PrivilegedCallable$1.run(Executors.java:463)
>>        at java.security.AccessController.doPrivileged(Native Method)
>>        at
>> java.util.concurrent.Executors$PrivilegedCallable.call(Executors.java:460)
>>        at
>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>        at java.lang.Thread.run(Thread.java:680)
>>
>> any ideas?
>>
>> Kind regards,
>> Fabian
>>
>> 2011/10/24 Manilal K M <libr...@gmail.com>:
>> > On 24 October 2011 07:53, Fabian <fabian...@googlemail.com> wrote:
>> >> Hi folks,
>> >>
>> >> is it possible to use a local mysql server instead of the cloud sql
>> >> when executing unit tests?
>> >
>> > Here are the steps to configure local MySQL server:
>> >
>> > http://code.google.com/apis/sql/docs/developers_guide_java.html#using_the_java_development_server
>> >
>> > Hope this helps.
>> >
>> > --
>> > Manilal K M : മണിലാല്‍ കെ എം.
>> > http://libregeek.blogspot.com
>> >
>
>

No comments:

Post a Comment