blob: bc678a42c385b5be45c39b980de643532906c596 [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.iotdb.session.util;
import org.apache.iotdb.common.rpc.thrift.TEndPoint;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
import org.apache.iotdb.tsfile.utils.Binary;
import org.apache.iotdb.tsfile.utils.BitMap;
import org.apache.iotdb.tsfile.write.record.Tablet;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
import org.junit.Assert;
import org.junit.Test;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class SessionUtilsTest {
@Test
public void testGetTimeBuffer() {
List<MeasurementSchema> schemas = new ArrayList<>();
MeasurementSchema schema = new MeasurementSchema();
schema.setMeasurementId("pressure");
schema.setType(TSDataType.BOOLEAN);
schema.setCompressor(CompressionType.SNAPPY.serialize());
schema.setEncoding(TSEncoding.PLAIN.serialize());
schemas.add(schema);
long[] timestamp = new long[] {1l, 2l};
Object[] values = new Object[] {true, false};
BitMap[] partBitMap = new BitMap[2];
Tablet tablet = new Tablet("device1", schemas, timestamp, values, partBitMap, 2);
ByteBuffer timeBuffer = SessionUtils.getTimeBuffer(tablet);
Assert.assertNotNull(timeBuffer);
}
@Test
public void testGetValueBuffer() {
List<MeasurementSchema> schemas = new ArrayList<>();
MeasurementSchema schema = new MeasurementSchema();
schema.setMeasurementId("pressure");
schema.setType(TSDataType.INT32);
schema.setCompressor(CompressionType.SNAPPY.serialize());
schema.setEncoding(TSEncoding.PLAIN.serialize());
schemas.add(schema);
schema = new MeasurementSchema();
schema.setMeasurementId("pressure");
schema.setType(TSDataType.INT64);
schema.setCompressor(CompressionType.SNAPPY.serialize());
schema.setEncoding(TSEncoding.PLAIN.serialize());
schemas.add(schema);
schema = new MeasurementSchema();
schema.setMeasurementId("pressure");
schema.setType(TSDataType.FLOAT);
schema.setCompressor(CompressionType.SNAPPY.serialize());
schema.setEncoding(TSEncoding.PLAIN.serialize());
schemas.add(schema);
schema = new MeasurementSchema();
schema.setMeasurementId("pressure");
schema.setType(TSDataType.DOUBLE);
schema.setCompressor(CompressionType.SNAPPY.serialize());
schema.setEncoding(TSEncoding.PLAIN.serialize());
schemas.add(schema);
schema = new MeasurementSchema();
schema.setMeasurementId("pressure");
schema.setType(TSDataType.TEXT);
schema.setCompressor(CompressionType.SNAPPY.serialize());
schema.setEncoding(TSEncoding.PLAIN.serialize());
schemas.add(schema);
schema = new MeasurementSchema();
schema.setMeasurementId("pressure");
schema.setType(TSDataType.BOOLEAN);
schema.setCompressor(CompressionType.SNAPPY.serialize());
schema.setEncoding(TSEncoding.PLAIN.serialize());
schemas.add(schema);
long[] timestamp = new long[] {1l};
Object[] values = new Object[6];
values[0] = new int[] {1, 2};
values[1] = new long[] {1l, 2l};
values[2] = new float[] {1.1f, 1.2f};
values[3] = new double[] {0.707, 0.708};
values[4] =
new Binary[] {new Binary(new byte[] {(byte) 8}), new Binary(new byte[] {(byte) 16})};
values[5] = new boolean[] {true, false};
BitMap[] partBitMap = new BitMap[6];
Tablet tablet = new Tablet("device1", schemas, timestamp, values, partBitMap, 2);
ByteBuffer timeBuffer = SessionUtils.getValueBuffer(tablet);
Assert.assertNotNull(timeBuffer);
}
@Test
public void testGetValueBuffer2() throws IoTDBConnectionException {
List<Object> valueList = Arrays.asList(12, 13l, 1.2f, 0.707, "test", false);
List<TSDataType> typeList =
Arrays.asList(
TSDataType.INT32,
TSDataType.INT64,
TSDataType.FLOAT,
TSDataType.DOUBLE,
TSDataType.TEXT,
TSDataType.BOOLEAN);
ByteBuffer timeBuffer = SessionUtils.getValueBuffer(typeList, valueList);
Assert.assertNotNull(timeBuffer);
valueList = new ArrayList<>();
valueList.add(null);
typeList = Arrays.asList(TSDataType.INT32);
timeBuffer = SessionUtils.getValueBuffer(typeList, valueList);
Assert.assertNotNull(timeBuffer);
valueList = Arrays.asList(false);
typeList = Arrays.asList(TSDataType.UNKNOWN);
try {
timeBuffer = SessionUtils.getValueBuffer(typeList, valueList);
} catch (Exception e) {
Assert.assertTrue(e instanceof IoTDBConnectionException);
}
}
@Test
public void testParseSeedNodeUrls() {
List<String> nodeUrls = Arrays.asList("127.0.0.1:1234");
List<TEndPoint> tEndPoints = SessionUtils.parseSeedNodeUrls(nodeUrls);
Assert.assertEquals(tEndPoints.size(), 1);
try {
tEndPoints = SessionUtils.parseSeedNodeUrls(null);
} catch (Exception e) {
Assert.assertTrue(e instanceof NumberFormatException);
}
nodeUrls = Arrays.asList("127.0.0.1:1234:0");
try {
tEndPoints = SessionUtils.parseSeedNodeUrls(nodeUrls);
} catch (Exception e) {
Assert.assertTrue(e instanceof NumberFormatException);
}
nodeUrls = Arrays.asList("127.0.0.1:test");
try {
tEndPoints = SessionUtils.parseSeedNodeUrls(nodeUrls);
} catch (Exception e) {
Assert.assertTrue(e instanceof NumberFormatException);
}
}
@Test
public void testParseSeedNodeUrlsException() {
List<String> nodeUrls = Arrays.asList("127.0.0.1:1234");
List<TEndPoint> tEndPoints = SessionUtils.parseSeedNodeUrls(nodeUrls);
Assert.assertEquals(tEndPoints.size(), 1);
}
}