This is an automated email from the ASF dual-hosted git repository.
hxd pushed a commit to branch reduce_redundant_test
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
The following commit(s) were added to refs/heads/reduce_redundant_test by this
push:
new efb8654 make TsFileWriter as AutoClosable; make TsFileReadWriteTest
more concise
efb8654 is described below
commit efb86540503dea3be75812e57f84e50089099156
Author: xiangdong huang <[email protected]>
AuthorDate: Sat Apr 6 22:15:27 2019 +0800
make TsFileWriter as AutoClosable; make TsFileReadWriteTest more concise
---
.../apache/iotdb/tsfile/write/TsFileWriter.java | 2 +-
.../iotdb/tsfile/write/TsFileReadWriteTest.java | 183 ++++++---------------
2 files changed, 51 insertions(+), 134 deletions(-)
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/TsFileWriter.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/TsFileWriter.java
index c66b1e6..e784023 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/TsFileWriter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/TsFileWriter.java
@@ -49,7 +49,7 @@ import org.slf4j.LoggerFactory;
*
* @author kangrong
*/
-public class TsFileWriter {
+public class TsFileWriter implements AutoCloseable{
private static final Logger LOG =
LoggerFactory.getLogger(TsFileWriter.class);
/**
diff --git
a/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileReadWriteTest.java
b/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileReadWriteTest.java
index f5e76fc..01bfc97 100644
---
a/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileReadWriteTest.java
+++
b/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileReadWriteTest.java
@@ -30,6 +30,7 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
import org.apache.iotdb.tsfile.read.ReadOnlyTsFile;
import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
+import org.apache.iotdb.tsfile.read.common.Field;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.read.common.RowRecord;
import org.apache.iotdb.tsfile.read.expression.QueryExpression;
@@ -69,136 +70,74 @@ public class TsFileReadWriteTest {
@Test
public void intTest() throws IOException, WriteProcessException {
- int floatCount = 1024 * 1024 * 13 + 1023;
- TsFileWriter tsFileWriter = new TsFileWriter(f);
- // add measurements into file schema
- tsFileWriter
- .addMeasurement(new MeasurementSchema("sensor_1", TSDataType.INT32,
TSEncoding.RLE));
- for (long i = 1; i < floatCount; i++) {
- // construct TSRecord
- TSRecord tsRecord = new TSRecord(i, "device_1");
- DataPoint dPoint1 = new IntDataPoint("sensor_1", (int) i);
- tsRecord.addTuple(dPoint1);
- // write a TSRecord to TsFile
- tsFileWriter.write(tsRecord);
- }
- // close TsFile
- tsFileWriter.close();
- TsFileSequenceReader reader = new TsFileSequenceReader(path);
- ReadOnlyTsFile readTsFile = new ReadOnlyTsFile(reader);
- ArrayList<Path> paths = new ArrayList<>();
- paths.add(new Path("device_1.sensor_1"));
- QueryExpression queryExpression = QueryExpression.create(paths, null);
-
- QueryDataSet queryDataSet = readTsFile.query(queryExpression);
- for (int j = 0; j < paths.size(); j++) {
- assertEquals(paths.get(j), queryDataSet.getPaths().get(j));
- }
-
- int i = 1;
- while (queryDataSet.hasNext()) {
- RowRecord r = queryDataSet.next();
- assertEquals(i, r.getTimestamp());
- assertEquals(i, r.getFields().get(0).getIntV());
- i++;
- }
- reader.close();
+ writeData(TSDataType.INT32, (i) -> new IntDataPoint("sensor_1", (int) i));
+ readData((i, field, delta) -> assertEquals(i, field.getIntV()));
}
@Test
public void longTest() throws IOException, WriteProcessException {
- int floatCount = 1024 * 1024 * 13 + 1023;
- // add measurements into file schema
- TsFileWriter tsFileWriter = new TsFileWriter(f);
- tsFileWriter
- .addMeasurement(new MeasurementSchema("sensor_1", TSDataType.INT64,
TSEncoding.RLE));
- for (long i = 1; i < floatCount; i++) {
- // construct TSRecord
- TSRecord tsRecord = new TSRecord(i, "device_1");
- DataPoint dPoint1 = new LongDataPoint("sensor_1", i);
- tsRecord.addTuple(dPoint1);
- // write a TSRecord to TsFile
- tsFileWriter.write(tsRecord);
- }
- // close TsFile
- tsFileWriter.close();
- TsFileSequenceReader reader = new TsFileSequenceReader(path);
- ReadOnlyTsFile readTsFile = new ReadOnlyTsFile(reader);
- ArrayList<Path> paths = new ArrayList<>();
- paths.add(new Path("device_1.sensor_1"));
- QueryExpression queryExpression = QueryExpression.create(paths, null);
+ writeData(TSDataType.INT64, (i) -> new LongDataPoint("sensor_1", i));
+ readData((i, field, delta) -> assertEquals(i, field.getLongV()));
+ }
- QueryDataSet queryDataSet = readTsFile.query(queryExpression);
- for (int j = 0; j < paths.size(); j++) {
- assertEquals(paths.get(j), queryDataSet.getPaths().get(j));
- }
+ @Test
+ public void floatTest() throws IOException, WriteProcessException {
+ writeData(TSDataType.FLOAT, (i) -> new FloatDataPoint("sensor_1", (float)
i));
+ readData((i, field, delta) -> assertEquals(i, field.getFloatV()));
+ }
- int i = 1;
- while (queryDataSet.hasNext()) {
- RowRecord r = queryDataSet.next();
- assertEquals(i, r.getTimestamp());
- assertEquals(i, r.getFields().get(0).getLongV());
- i++;
- }
- reader.close();
+ @Test
+ public void doubleTest() throws IOException, WriteProcessException {
+ writeData(TSDataType.DOUBLE, (i) -> new DoubleDataPoint("sensor_1",
(double) i));
+ readData((i, field, delta) -> assertEquals(i, field.getDoubleV(), delta));
}
@Test
- public void floatTest() throws IOException, WriteProcessException {
- int floatCount = 1024 * 1024 * 13 + 1023;
- // add measurements into file schema
- TsFileWriter tsFileWriter = new TsFileWriter(f);
- tsFileWriter
- .addMeasurement(new MeasurementSchema("sensor_1", TSDataType.FLOAT,
TSEncoding.RLE));
- for (long i = 1; i < floatCount; i++) {
+ public void readEmptyMeasurementTest() throws IOException,
WriteProcessException {
+ try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
+ // add measurements into file schema
+ tsFileWriter
+ .addMeasurement(new MeasurementSchema("sensor_1", TSDataType.FLOAT,
TSEncoding.RLE));
+ tsFileWriter
+ .addMeasurement(new MeasurementSchema("sensor_2", TSDataType.INT32,
TSEncoding.TS_2DIFF));
// construct TSRecord
- TSRecord tsRecord = new TSRecord(i, "device_1");
- DataPoint dPoint1 = new FloatDataPoint("sensor_1", (float) i);
+ TSRecord tsRecord = new TSRecord(1, "device_1");
+ DataPoint dPoint1 = new FloatDataPoint("sensor_1", 1.2f);
tsRecord.addTuple(dPoint1);
// write a TSRecord to TsFile
tsFileWriter.write(tsRecord);
}
- // close TsFile
- tsFileWriter.close();
+
+ // read example : no filter
TsFileSequenceReader reader = new TsFileSequenceReader(path);
ReadOnlyTsFile readTsFile = new ReadOnlyTsFile(reader);
ArrayList<Path> paths = new ArrayList<>();
- paths.add(new Path("device_1.sensor_1"));
+ paths.add(new Path("device_1.sensor_2"));
QueryExpression queryExpression = QueryExpression.create(paths, null);
-
QueryDataSet queryDataSet = readTsFile.query(queryExpression);
- for (int j = 0; j < paths.size(); j++) {
- assertEquals(paths.get(j), queryDataSet.getPaths().get(j));
- }
-
- int i = 1;
- while (queryDataSet.hasNext()) {
- RowRecord r = queryDataSet.next();
- assertEquals(i, r.getTimestamp());
-
- assertEquals((float) i, r.getFields().get(0).getFloatV(), delta);
- i++;
- }
+ assertFalse(queryDataSet.hasNext());
reader.close();
+ assertTrue(f.delete());
}
- @Test
- public void doubleTest() throws IOException, WriteProcessException {
+ private void writeData(TSDataType dataType, DataPointProxy proxy) throws
IOException, WriteProcessException {
int floatCount = 1024 * 1024 * 13 + 1023;
// add measurements into file schema
- TsFileWriter tsFileWriter = new TsFileWriter(f);
- tsFileWriter
- .addMeasurement(new MeasurementSchema("sensor_1", TSDataType.DOUBLE,
TSEncoding.RLE));
- for (long i = 1; i < floatCount; i++) {
- // construct TSRecord
- TSRecord tsRecord = new TSRecord(i, "device_1");
- DataPoint dPoint1 = new DoubleDataPoint("sensor_1", (double) i);
- tsRecord.addTuple(dPoint1);
- // write a TSRecord to TsFile
- tsFileWriter.write(tsRecord);
+ try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
+ tsFileWriter
+ .addMeasurement(new MeasurementSchema("sensor_1", dataType,
TSEncoding.RLE));
+ for (long i = 1; i < floatCount; i++) {
+ // construct TSRecord
+ TSRecord tsRecord = new TSRecord(i, "device_1");
+ DataPoint dPoint1 = proxy.generateOne(i);
+ tsRecord.addTuple(dPoint1);
+ // write a TSRecord to TsFile
+ tsFileWriter.write(tsRecord);
+ }
}
- // close TsFile
- tsFileWriter.close();
+ }
+
+ private void readData(ReadDataPointProxy proxy) throws IOException {
TsFileSequenceReader reader = new TsFileSequenceReader(path);
ReadOnlyTsFile readTsFile = new ReadOnlyTsFile(reader);
ArrayList<Path> paths = new ArrayList<>();
@@ -209,43 +148,21 @@ public class TsFileReadWriteTest {
for (int j = 0; j < paths.size(); j++) {
assertEquals(paths.get(j), queryDataSet.getPaths().get(j));
}
-
int i = 1;
while (queryDataSet.hasNext()) {
RowRecord r = queryDataSet.next();
assertEquals(i, r.getTimestamp());
- assertEquals((double) i, r.getFields().get(0).getDoubleV(), delta);
+ proxy.assertEqualProxy(i, r.getFields().get(0), delta);
i++;
}
reader.close();
}
- @Test
- public void readEmptyMeasurementTest() throws IOException,
WriteProcessException {
- TsFileWriter tsFileWriter = new TsFileWriter(f);
- // add measurements into file schema
- tsFileWriter
- .addMeasurement(new MeasurementSchema("sensor_1", TSDataType.FLOAT,
TSEncoding.RLE));
- tsFileWriter
- .addMeasurement(new MeasurementSchema("sensor_2", TSDataType.INT32,
TSEncoding.TS_2DIFF));
- // construct TSRecord
- TSRecord tsRecord = new TSRecord(1, "device_1");
- DataPoint dPoint1 = new FloatDataPoint("sensor_1", 1.2f);
- tsRecord.addTuple(dPoint1);
- // write a TSRecord to TsFile
- tsFileWriter.write(tsRecord);
- // close TsFile
- tsFileWriter.close();
+ private interface DataPointProxy {
+ DataPoint generateOne(long value);
+ }
+ private interface ReadDataPointProxy {
+ void assertEqualProxy(long i, Field field, double delta);
- // read example : no filter
- TsFileSequenceReader reader = new TsFileSequenceReader(path);
- ReadOnlyTsFile readTsFile = new ReadOnlyTsFile(reader);
- ArrayList<Path> paths = new ArrayList<>();
- paths.add(new Path("device_1.sensor_2"));
- QueryExpression queryExpression = QueryExpression.create(paths, null);
- QueryDataSet queryDataSet = readTsFile.query(queryExpression);
- assertFalse(queryDataSet.hasNext());
- reader.close();
- assertTrue(f.delete());
}
}