blob: 6818cf3e9138031c0186d97cc06869bccc1c8452 [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.tsfile.utils;
import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.write.record.TSRecord;
import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
import org.apache.iotdb.tsfile.write.schema.Schema;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class RecordUtilsTest {
Schema schema;
private static Schema generateTestData() {
Schema schema = new Schema();
TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
schema.registerTimeseries(
new Path("d1"),
new MeasurementSchema("s1", TSDataType.INT32, TSEncoding.valueOf(conf.getValueEncoder())));
schema.registerTimeseries(
new Path("d1"),
new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.valueOf(conf.getValueEncoder())));
schema.registerTimeseries(
new Path("d1"),
new MeasurementSchema("s3", TSDataType.FLOAT, TSEncoding.valueOf(conf.getValueEncoder())));
schema.registerTimeseries(
new Path("d1"),
new MeasurementSchema("s4", TSDataType.DOUBLE, TSEncoding.valueOf(conf.getValueEncoder())));
schema.registerTimeseries(
new Path("d1"), new MeasurementSchema("s5", TSDataType.BOOLEAN, TSEncoding.PLAIN));
schema.registerTimeseries(
new Path("d1"), new MeasurementSchema("s6", TSDataType.TEXT, TSEncoding.PLAIN));
return schema;
}
@Before
public void prepare() {
schema = new Schema();
schema = generateTestData();
}
@Test
public void testParseSimpleTupleRecordInt() {
String testString = "d1,1471522347000,s1,1";
TSRecord record = RecordUtils.parseSimpleTupleRecord(testString, schema);
assertEquals(1471522347000l, record.time);
assertEquals("d1", record.deviceId);
List<DataPoint> tuples = record.dataPointList;
assertEquals(1, tuples.size());
DataPoint tuple = tuples.get(0);
assertEquals("s1", tuple.getMeasurementId());
assertEquals(TSDataType.INT32, tuple.getType());
assertEquals(1, tuple.getValue());
testString = "d1,1471522347000,s1,1,";
record = RecordUtils.parseSimpleTupleRecord(testString, schema);
assertEquals(1471522347000l, record.time);
assertEquals("d1", record.deviceId);
tuples = record.dataPointList;
assertEquals(1, tuples.size());
tuple = tuples.get(0);
assertEquals("s1", tuple.getMeasurementId());
assertEquals(TSDataType.INT32, tuple.getType());
assertEquals(1, tuple.getValue());
testString = "d1,1471522347000,s1,1,s2";
record = RecordUtils.parseSimpleTupleRecord(testString, schema);
assertEquals(1471522347000l, record.time);
assertEquals("d1", record.deviceId);
tuples = record.dataPointList;
assertEquals(1, tuples.size());
tuple = tuples.get(0);
assertEquals("s1", tuple.getMeasurementId());
assertEquals(TSDataType.INT32, tuple.getType());
assertEquals(1, tuple.getValue());
}
@Test
public void testParseSimpleTupleRecordNull() {
String testString = "d1,1471522347000,s1,1,s2,,s3,";
TSRecord record = RecordUtils.parseSimpleTupleRecord(testString, schema);
assertEquals(1471522347000l, record.time);
List<DataPoint> tuples = record.dataPointList;
assertEquals(1, tuples.size());
DataPoint tuple = tuples.get(0);
assertEquals("s1", tuple.getMeasurementId());
assertEquals(TSDataType.INT32, tuple.getType());
assertEquals(1, tuple.getValue());
}
@Test
public void testParseSimpleTupleRecordAll() {
String testString = "d1,1471522347000,s1,1,s2,134134287192587,s3,1.4,s4,1.128794817,s5,true";
TSRecord record = RecordUtils.parseSimpleTupleRecord(testString, schema);
assertEquals(1471522347000l, record.time);
assertEquals("d1", record.deviceId);
List<DataPoint> tuples = record.dataPointList;
assertEquals(5, tuples.size()); // enum type is omitted.
DataPoint tuple = tuples.get(0);
assertEquals("s1", tuple.getMeasurementId());
assertEquals(TSDataType.INT32, tuple.getType());
assertEquals(1, tuple.getValue());
tuple = tuples.get(1);
assertEquals("s2", tuple.getMeasurementId());
assertEquals(TSDataType.INT64, tuple.getType());
assertEquals(134134287192587l, tuple.getValue());
tuple = tuples.get(2);
assertEquals("s3", tuple.getMeasurementId());
assertEquals(TSDataType.FLOAT, tuple.getType());
assertEquals(1.4f, tuple.getValue());
tuple = tuples.get(3);
assertEquals("s4", tuple.getMeasurementId());
assertEquals(TSDataType.DOUBLE, tuple.getType());
assertEquals(1.128794817d, tuple.getValue());
tuple = tuples.get(4);
assertEquals("s5", tuple.getMeasurementId());
assertEquals(TSDataType.BOOLEAN, tuple.getType());
assertEquals(true, tuple.getValue());
}
@Test
public void testError() {
String testString = "d1,1471522347000,s1,1,s2,s123";
TSRecord record = RecordUtils.parseSimpleTupleRecord(testString, schema);
assertEquals(1471522347000l, record.time);
List<DataPoint> tuples = record.dataPointList;
assertEquals(1, tuples.size());
DataPoint tuple = tuples.get(0);
assertEquals("s1", tuple.getMeasurementId());
assertEquals(TSDataType.INT32, tuple.getType());
assertEquals(1, tuple.getValue());
}
@Test
public void testErrorMeasurementAndTimeStamp() {
String testString = "d1,1471522347000,s1,1,s123,1";
TSRecord record = RecordUtils.parseSimpleTupleRecord(testString, schema);
assertEquals(1471522347000l, record.time);
List<DataPoint> tuples = record.dataPointList;
assertEquals(1, tuples.size());
DataPoint tuple = tuples.get(0);
assertEquals("s1", tuple.getMeasurementId());
assertEquals(TSDataType.INT32, tuple.getType());
assertEquals(1, tuple.getValue());
testString = "d1,1dsjhk,s1,1,s123,1";
record = RecordUtils.parseSimpleTupleRecord(testString, schema);
assertEquals(record.time, -1);
tuples = record.dataPointList;
assertEquals(0, tuples.size());
testString = "d1,1471522347000,s8,1";
record = RecordUtils.parseSimpleTupleRecord(testString, schema);
assertEquals(1471522347000l, record.time);
tuples = record.dataPointList;
assertEquals(0, tuples.size());
}
}