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());
   }
 }

Reply via email to