blob: 134ea1529cedfc7643ef736ff6c9e385e1e13038 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.calcite.avatica.remote;
import org.apache.calcite.avatica.ColumnMetaData.Rep;
import org.apache.calcite.avatica.proto.Common;
import org.apache.calcite.avatica.proto.Requests;
import org.apache.calcite.avatica.proto.Requests.UpdateBatch;
import org.apache.calcite.avatica.remote.Service.ExecuteBatchRequest;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
/**
* Test class for ExecuteBatchRequest
*/
public class ExecuteBatchRequestTest {
private ExecuteBatchRequest identityRequest = new ExecuteBatchRequest();
private List<TypedValue> paramValues =
Arrays.asList(TypedValue.create(Rep.BOOLEAN.name(), Boolean.TRUE),
TypedValue.create(Rep.STRING.name(), "string"));
@Test public void testConversionFromProtobuf() {
ExecuteBatchRequest request = new ExecuteBatchRequest("connectionId", 12345,
Arrays.asList(paramValues, paramValues, paramValues));
assertFalse("A request with the POJO TypedValue list should return false",
request.hasProtoUpdateBatches());
// Everything will be serialized via protobuf
Requests.ExecuteBatchRequest protoRequest = request.serialize();
ExecuteBatchRequest copy = identityRequest.deserialize(protoRequest);
assertNull("Parameter values (pojo) list should be null", copy.parameterValues);
assertTrue("hasProtoUpdateBatches() should return true", copy.hasProtoUpdateBatches());
List<UpdateBatch> protoParameterValues = copy.getProtoUpdateBatches();
assertNotNull("Protobuf serialized parameterValues should not be null", protoParameterValues);
assertEquals(request.parameterValues.size(), protoParameterValues.size());
for (int i = 0; i < request.parameterValues.size(); i++) {
List<TypedValue> orig = request.parameterValues.get(i);
List<Common.TypedValue> proto = protoParameterValues.get(i).getParameterValuesList();
assertEquals("Mismatch in length of TypedValues at index " + i, orig.size(), proto.size());
// Don't re-test TypedValue serialization
}
// Everything else should be equivalent.
assertEquals(request.connectionId, copy.connectionId);
assertEquals(request.statementId, copy.statementId);
}
}
// End ExecuteBatchRequestTest.java