jest-dynamodb icon indicating copy to clipboard operation
jest-dynamodb copied to clipboard

DynamoDB server doesn't start when running jest

Open venkatesh-kl opened this issue 1 year ago • 1 comments

I have tried to use jest-dynamodb in my test suite. I am not able to run dynamodb via jest-dynamodb. I have to manually run dynamodb using docker & then only the tests start to run. I have created a basic example based on jest's documentation but of no use. Strangely, It works on my colleagues' machines.

Environment details: Node version: 14.20.1 Java version: 1.8.0_202

I am seeing the below error when I don't start the dynamodb via docker.

Determining test suites to run...2023-03-10 13:08:24.550:WARN:oejs.HttpChannel:qtp1583353301-14: /
java.lang.NoClassDefFoundError: com/almworks/sqlite4java/SQLiteJob
        at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getDBAccess(LocalDynamoDBRequestHandler.java:208)
        at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getHandler(LocalDynamoDBRequestHandler.java:199)
        at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.createTable(LocalDynamoDBRequestHandler.java:252)
        at com.amazonaws.services.dynamodbv2.local.dispatchers.CreateTableDispatcher.enact(CreateTableDispatcher.java:18)
        at com.amazonaws.services.dynamodbv2.local.dispatchers.CreateTableDispatcher.enact(CreateTableDispatcher.java:12)
        at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.packageDynamoDBResponse(LocalDynamoDBServerHandler.java:408)
        at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.handle(LocalDynamoDBServerHandler.java:495)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:190)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)        
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
        at org.eclipse.jetty.server.Server.handle(Server.java:516)
        at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
        at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:137)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
        at java.lang.Thread.run(Thread.java:748)
Caused by:
java.lang.ClassNotFoundException: com.almworks.sqlite4java.SQLiteJob
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getDBAccess(LocalDynamoDBRequestHandler.java:208)
        at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getHandler(LocalDynamoDBRequestHandler.java:199)
        at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.createTable(LocalDynamoDBRequestHandler.java:252)
        at com.amazonaws.services.dynamodbv2.local.dispatchers.CreateTableDispatcher.enact(CreateTableDispatcher.java:18)
        at com.amazonaws.services.dynamodbv2.local.dispatchers.CreateTableDispatcher.enact(CreateTableDispatcher.java:12)
        at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.packageDynamoDBResponse(LocalDynamoDBServerHandler.java:408)
        at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.handle(LocalDynamoDBServerHandler.java:495)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:190)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)        
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
        at org.eclipse.jetty.server.Server.handle(Server.java:516)
        at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
        at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:137)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
        at java.lang.Thread.run(Thread.java:748)
SyntaxError: Jest: Got error running globalSetup - C:\users\username\jest-dynamodb\node_modules\@shelf\jest-dynamodb\lib\setup.js, reason: Unexpected token < in JSON at position 0
    at JSON.parse (<anonymous>)
    at C:\users\username\jest-dynamodb\node_modules\@aws-sdk\client-dynamodb\dist-cjs\protocols\Aws_json1_0.js:6388:21
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async parseErrorBody (C:\users\username\jest-dynamodb\node_modules\@aws-sdk\client-dynamodb\dist-cjs\protocols\Aws_json1_0.js:6393:19)
    at async deserializeAws_json1_0CreateTableCommandError (C:\users\username\jest-dynamodb\node_modules\@aws-sdk\client-dynamodb\dist-cjs\protocols\Aws_json1_0.js:788:15)
    at async C:\users\username\jest-dynamodb\node_modules\@aws-sdk\middleware-serde\dist-cjs\deserializerMiddleware.js:7:24
    at async C:\users\username\jest-dynamodb\node_modules\@aws-sdk\middleware-signing\dist-cjs\middleware.js:14:20
    at async C:\users\username\jest-dynamodb\node_modules\@aws-sdk\middleware-retry\dist-cjs\retryMiddleware.js:27:46
    at async C:\users\username\jest-dynamodb\node_modules\@aws-sdk\middleware-logger\dist-cjs\loggerMiddleware.js:5:22
    at async Promise.all (index 0)

I have added the basic example in this gist here: https://gist.github.com/klvenky/199b72cbe0e75f48dfd8ec3ec185510f.

I have already referred to similar issues like 99x/serverless-dynamodb-local#173, but didn't find anything helpful.

venkatesh-kl avatar Mar 10 '23 07:03 venkatesh-kl