couchbase - 我正在使用 CouchbaseMock 进行单元测试,其中 Couchbase 客户端会将 N1QL 查询发送到模拟服务器
问题描述
这是将数据保存到模拟沙发库并使用其 id 获取刚刚保存的数据的单元测试用例:
@Test
public void saveTest() throws JSONException {
JSONObject jo = new JSONObject();
jo.put("id", 136);
jo.put("name", "testName");
jo.put("email", "testEmail");
String result = couchBaseServerDataAccessImpl.save(jo.toString());
String queryResult = couchBaseServerDataAccessImpl.getById("136");
Assert.assertEquals(queryResult, result);
}
这是跟踪:
com.couchbase.client.core.CouchbaseException: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(1) 超过 writerIndex(0): PooledUnsafeDirectByteBuf(ridx: 0, widx: 0, cap: 256) 在 com.couchbase。 client.core.endpoint.AbstractGenericHandler.decode(AbstractGenericHandler.java:369) 在 com.couchbase.client.deps.io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) 在 com.couchbase.client .deps.io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88) 在 com.couchbase.client.deps.io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) 在 com .couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356) 在 com.couchbase.client.deps.io.netty。channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) 在 com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335) 在 com.couchbase.client.deps.io.netty。 channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438) 在 com.couchbase.client.deps.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:312) 在 com.couchbase.client.deps。 io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:286) 在 com.couchbase.client.deps.io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253) 在 com.couchbase.client。 deps.io.netty.channel。AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356) 在 com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) 在 com.couchbase.client.deps.io.netty.channel。 AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335) 在 com.couchbase.client.deps.io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) 在 com.couchbase.client.deps.io.netty。 channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356) 在 com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) 在 com.couchbase.client.deps.io.netty。通道.AbstractChannelHandlerContext。fireChannelRead(AbstractChannelHandlerContext.java:335) 在 com.couchbase.client.deps.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1304) 在 com.couchbase.client.deps.io.netty.channel。 AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356) 在 com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) 在 com.couchbase.client.deps.io.netty.channel。 DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:921) 在 com.couchbase.client.deps.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:135) 在 com.couchbase.client.deps.io。 com.couchbase 上的 netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:646)。client.deps.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:581) at com.couchbase.client.deps.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:498) at com.couchbase.client.deps.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:460) 在 com.couchbase.client.deps.io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor. java:131) at com.couchbase.client.deps.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:748) 原因:java .lang.IndexOutOfBoundsException: readerIndex(0) + length(1) 超过 writerIndex(0): PooledUnsafeDirectByteBuf(ridx: 0, widx: 0, cap: 256) at com.couchbase.client.deps.io.netty.buffer.AbstractByteBuf .checkReadableBytes0(AbstractByteBuf.java:1161) 在 com.couchbase.client.deps.io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:591) 在 com.couchbase.client.core.utils.yasjl.ByteBufJsonParser.readNextChar( ByteBufJsonParser.java:458) 在 com.couchbase.client.core.utils.yasjl.ByteBufJsonParser.parse(ByteBufJsonParser.java:109) 在 com.couchbase.client.core.endpoint.query.parser.YasjlQueryResponseParser.parse(YasjlQueryResponseParser. java:337) 在 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java:175) 在 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java:62)在 com.couchbase.client.core.endpoint.AbstractGenericHandler.decode(AbstractGenericHandler.java:338) ... 29 更多netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:591) 在 com.couchbase.client.core.utils.yasjl.ByteBufJsonParser.readNextChar(ByteBufJsonParser.java:458) 在 com.couchbase.client.core.utils.yasjl。 com.couchbase.client.core.endpoint.query.parser.YasjlQueryResponseParser.parse(YasjlQueryResponseParser.java:337) 上 com.couchbase.client.core.endpoint.query.QueryHandlerV2 上的 ByteBufJsonParser.parse(ByteBufJsonParser.java:109)。 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java:62) 处的 decodeResponse(QueryHandlerV2.java:175) com.couchbase.client.core.endpoint.AbstractGenericHandler.decode(AbstractGenericHandler.java: 338) ... 29 更多netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:591) 在 com.couchbase.client.core.utils.yasjl.ByteBufJsonParser.readNextChar(ByteBufJsonParser.java:458) 在 com.couchbase.client.core.utils.yasjl。 com.couchbase.client.core.endpoint.query.parser.YasjlQueryResponseParser.parse(YasjlQueryResponseParser.java:337) 上 com.couchbase.client.core.endpoint.query.QueryHandlerV2 上的 ByteBufJsonParser.parse(ByteBufJsonParser.java:109)。 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java:62) 处的 decodeResponse(QueryHandlerV2.java:175) com.couchbase.client.core.endpoint.AbstractGenericHandler.decode(AbstractGenericHandler.java: 338) ... 29 更多readNextChar(ByteBufJsonParser.java:458) 在 com.couchbase.client.core.utils.yasjl.ByteBufJsonParser.parse(ByteBufJsonParser.java:109) 在 com.couchbase.client.core.endpoint.query.parser.YasjlQueryResponseParser.parse( YasjlQueryResponseParser.java:337) 在 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java:175) 在 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java: 62) 在 com.couchbase.client.core.endpoint.AbstractGenericHandler.decode(AbstractGenericHandler.java:338) ... 29 更多readNextChar(ByteBufJsonParser.java:458) 在 com.couchbase.client.core.utils.yasjl.ByteBufJsonParser.parse(ByteBufJsonParser.java:109) 在 com.couchbase.client.core.endpoint.query.parser.YasjlQueryResponseParser.parse( YasjlQueryResponseParser.java:337) 在 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java:175) 在 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java: 62) 在 com.couchbase.client.core.endpoint.AbstractGenericHandler.decode(AbstractGenericHandler.java:338) ... 29 更多337) 在 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java:175) 在 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java:62) 在 com .couchbase.client.core.endpoint.AbstractGenericHandler.decode(AbstractGenericHandler.java:338) ... 29 更多337) 在 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java:175) 在 com.couchbase.client.core.endpoint.query.QueryHandlerV2.decodeResponse(QueryHandlerV2.java:62) 在 com .couchbase.client.core.endpoint.AbstractGenericHandler.decode(AbstractGenericHandler.java:338) ... 29 更多
解决方案
推荐阅读
- javascript - 使用 jQuery + FadeOut 更改图像源
- iis - ImageProcessor 图像质量下降
- c# - 如何使用空对象模式实现模型
- python - 如何创建具有默认值的列/如何在 Kusto 上填充具有相同值的列
- python - 在 python 中矢量化太慢?还是quad.integrate?还是我的代码?
- java - 如何打印所有回文数?
- reactjs - 在反应js中将状态从子类发送到父类
- reactjs - 控制台日志更改音乐来源,但歌曲继续播放原始设置状态
- arrays - 发生 MIPS 异常 5 [存储中的地址错误]
- mysql - 来自 MySQL 数据库的 SSRS 已发布报告显示空白/空行