Skip to content

Commit

Permalink
add test for ExecuteResult and fix ExecuteResultAdapter
Browse files Browse the repository at this point in the history
  • Loading branch information
t-horikawa committed Oct 23, 2023
1 parent c98a08f commit 005ead9
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,12 @@ public Map<CounterType, Long> getCounters() {

private CounterType counterType(SqlResponse.ExecuteResult.CounterType type) throws IOException {
switch (type) {
case INSERTED_ROWS:
return CounterType.INSERTED_ROWS;
case UPDATED_ROWS:
return CounterType.UPDATED_ROWS;
case MERGED_ROWS:
return CounterType.MERGED_ROWS;
case DELETED_ROWS:
return CounterType.DELETED_ROWS;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,11 @@ static RequestHandler returns(SqlResponse.DescribeTable response) {
var sqlResponse = SqlResponse.Response.newBuilder().setDescribeTable(response).build();
return returns(toDelimitedByteArray(sqlResponse));
}
static RequestHandler returns(SqlResponse.ExecuteResult response) {
Objects.requireNonNull(response);
var sqlResponse = SqlResponse.Response.newBuilder().setExecuteResult(response).build();
return returns(toDelimitedByteArray(sqlResponse));
}
static RequestHandler returns(SqlResponse.Batch response) {
Objects.requireNonNull(response);
var sqlResponse = SqlResponse.Response.newBuilder().setBatch(response).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@

import com.tsurugidb.sql.proto.SqlCommon;
import com.tsurugidb.sql.proto.SqlRequest;
import com.tsurugidb.sql.proto.SqlRequest.ExecuteStatement;
import com.tsurugidb.sql.proto.SqlResponse;
import com.tsurugidb.sql.proto.SqlStatus;
import com.tsurugidb.tsubakuro.channel.common.connection.wire.Response;
import com.tsurugidb.tsubakuro.common.Session;
import com.tsurugidb.tsubakuro.common.impl.SessionImpl;
import com.tsurugidb.tsubakuro.exception.BrokenResponseException;
import com.tsurugidb.tsubakuro.exception.ServerException;
import com.tsurugidb.tsubakuro.sql.CounterType;
import com.tsurugidb.tsubakuro.sql.SearchPath;
import com.tsurugidb.tsubakuro.sql.SqlService;
import com.tsurugidb.tsubakuro.sql.SqlServiceCode;
Expand Down Expand Up @@ -635,7 +637,7 @@ void sendDescribeTableEngineError() throws Exception {
}

@Test
void sendExecuteSuccess() throws Exception {
void sendExecuteSuccess_deprecated() throws Exception {
wire.next(accepts(SqlRequest.Request.RequestCase.EXECUTE_STATEMENT,
RequestHandler.returns(SqlResponse.ResultOnly.newBuilder()
.setSuccess(newVoid())
Expand All @@ -654,7 +656,7 @@ void sendExecuteSuccess() throws Exception {
}

@Test
void sendExecuteEngineError() throws Exception {
void sendExecuteEngineError_deprecated() throws Exception {
wire.next(accepts(SqlRequest.Request.RequestCase.EXECUTE_STATEMENT,
RequestHandler.returns(SqlResponse.ResultOnly.newBuilder()
.setError(newEngineError())
Expand All @@ -673,6 +675,58 @@ void sendExecuteEngineError() throws Exception {
assertFalse(wire.hasRemaining());
}

@Test
void sendExecuteSuccess() throws Exception {
wire.next(accepts(SqlRequest.Request.RequestCase.EXECUTE_STATEMENT,
RequestHandler.returns(SqlResponse.ExecuteResult.newBuilder()
.setSuccess(SqlResponse.ExecuteResult.Success.newBuilder()
.addCounters(SqlResponse.ExecuteResult.CounterEntry.newBuilder().setType(SqlResponse.ExecuteResult.CounterType.INSERTED_ROWS).setValue(1))
.addCounters(SqlResponse.ExecuteResult.CounterEntry.newBuilder().setType(SqlResponse.ExecuteResult.CounterType.UPDATED_ROWS).setValue(2))
.addCounters(SqlResponse.ExecuteResult.CounterEntry.newBuilder().setType(SqlResponse.ExecuteResult.CounterType.MERGED_ROWS).setValue(3))
.addCounters(SqlResponse.ExecuteResult.CounterEntry.newBuilder().setType(SqlResponse.ExecuteResult.CounterType.DELETED_ROWS).setValue(4)))
.build())));

var message = SqlRequest.ExecuteStatement.newBuilder()
.setSql("SELECT 1")
.build();
try (
var service = new SqlServiceStub(session);
var future = service.send(message);
) {
var executeResult = future.get();
var counterTypes = executeResult.getCounterTypes();
assertTrue(counterTypes.containsAll(List.of(CounterType.INSERTED_ROWS, CounterType.UPDATED_ROWS, CounterType.MERGED_ROWS, CounterType.DELETED_ROWS)));
var counters = executeResult.getCounters();
assertEquals(counters.get(CounterType.INSERTED_ROWS), 1);
assertEquals(counters.get(CounterType.UPDATED_ROWS), 2);
assertEquals(counters.get(CounterType.MERGED_ROWS), 3);
assertEquals(counters.get(CounterType.DELETED_ROWS), 4);
}
assertFalse(wire.hasRemaining());
}

@Test
void sendExecuteEngineError() throws Exception {
wire.next(accepts(SqlRequest.Request.RequestCase.EXECUTE_STATEMENT,
RequestHandler.returns(SqlResponse.ExecuteResult.newBuilder()
.setError(newEngineError())
.build())));

var message = SqlRequest.ExecuteStatement.newBuilder()
.setSql("SELECT 1")
.build();
try (
var service = new SqlServiceStub(session);
var future = service.send(message);
) {
var error = assertThrows(SqlServiceException.class, () -> future.await());
assertEquals(SqlServiceCode.SQL_SERVICE_EXCEPTION, error.getDiagnosticCode());
}
assertFalse(wire.hasRemaining());
}



@Test
void sendQuerySuccess() throws Exception {
wire.next(accepts(SqlRequest.Request.RequestCase.EXECUTE_QUERY,
Expand Down

0 comments on commit 005ead9

Please sign in to comment.