You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by lt...@apache.org on 2019/11/29 09:15:11 UTC

[incubator-iotdb] branch add_load_tsfile_feature updated (b68c549 -> 41bf8ea)

This is an automated email from the ASF dual-hosted git repository.

lta pushed a change to branch add_load_tsfile_feature
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git.


    from b68c549  complete load tsfile and fix some bugs of corner cases
     add 7f2df2e  [IOTDB-308]switch jdk in travis from jdk8 to jdk11 (#574)
     add 1fe67d4  add RandomOnDiskUsableSpaceStrategy
     add 3c02aff  allow using user defined JAVA_HOME and allow blank space in the JAVA_HOME (#579)
     add ed598fd  get lock in FileReaderManager outside of the synchronized block (#582)
     add b2433c7  [IOTDB-316] add AVG function to 4-SQL Reference.md and modify style (#584)
     add aa9b0c1  fix starting with slash / on WinOS Travis (#580)
     add 2cc5808  [IOTDB-318] Fix printing unnecessary error log into log_error.log file (#583)
     add 249688c  [IOTDB-263] Refactor IoTDBQueryResultSet of JDBC (#566)
     add 057db75  refine chunk writer (#586)
     add 3a1b225  [IOTDB-279] Merge TsDigest into Statistics (#553)
     add c057827  Fix "flush + wrong aggregation" causes failed query in v0.8 (#591)
     add 6bae410  Move the vulnera-checks section into the apache-release profile (#590)
     add adfc5ea   [IOTDB-323] Batch insert in session (#588)
     add 955cd99  [IOTDB-321] Improve some SQL related definition in documents (#592)
     add ba2db62  Add CN document of TsFile (#575)
     add 15643e1  [IOTDB-322] upgrade to thrift 0.12.0 (#589)
     new 83db91a  Merge branch 'master' into add_load_tsfile_feature
     new ad864ad  add unit test
     new 41bf8ea  add unit test

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .travis.yml                                        |  25 +-
 client/src/assembly/client.xml                     |   2 +-
 distribution/src/assembly/distribution.xml         |   2 +-
 .../1-DDL (Data Definition Language).md            |  37 ++
 .../5-Operation Manual/4-SQL Reference.md          |  23 +-
 .../8-System Design (Developer)/1-Hierarchy.md     | 392 ++++++++++++++++++++-
 .../UserGuide/4-Client/3-Programming - Session.md  |   4 +
 .../1-DDL (Data Definition Language).md            |  38 +-
 .../5-Operation Manual/4-SQL Reference.md          |  21 +-
 .../8-System Design (Developer)/1-Hierarchy.md     |  11 +-
 .../main/java/org/apache/iotdb/SessionExample.java |  34 ++
 .../org/apache/iotdb/jdbc/IoTDBQueryResultSet.java | 113 ++++--
 .../java/org/apache/iotdb/jdbc/IoTDBStatement.java |   2 +-
 .../src/main/java/org/apache/iotdb/jdbc/Utils.java | 117 ++++--
 .../apache/iotdb/jdbc/IoTDBQueryResultSetTest.java |   2 +-
 .../test/java/org/apache/iotdb/jdbc/UtilsTest.java |   9 +-
 pom.xml                                            | 170 ++++-----
 .../resources/conf/iotdb-engine.properties         |   1 +
 .../src/assembly/resources/sbin/start-server.bat   |  44 +--
 server/src/assembly/server.xml                     |   2 +-
 ...y.java => RandomOnDiskUsableSpaceStrategy.java} |  50 +--
 .../org/apache/iotdb/db/engine/StorageEngine.java  |  11 +-
 .../engine/storagegroup/StorageGroupProcessor.java |   7 +-
 .../iotdb/db/qp/executor/QueryProcessExecutor.java |   5 +-
 .../iotdb/db/query/control/FileReaderManager.java  |  26 +-
 .../resourceRelated/UnseqResourceMergeReader.java  |   6 +-
 .../org/apache/iotdb/db/service/TSServiceImpl.java | 132 ++++---
 .../apache/iotdb/db/tools/TsFileSketchTool.java    |   9 +-
 .../strategy/DirectoryStrategyTest.java            |  23 +-
 .../integration/IoTDBLoadExternalTsfileTest.java   | 227 ++++++++++++
 service-rpc/rpc-changelist.md                      |   2 +
 service-rpc/src/main/thrift/rpc.thrift             |  12 +
 .../java/org/apache/iotdb/session/Session.java     | 102 ++++--
 .../org/apache/iotdb/session/IoTDBSessionIT.java   |  70 +++-
 .../iotdb/tsfile/file/metadata/ChunkMetaData.java  |  19 +-
 .../iotdb/tsfile/file/metadata/TsDigest.java       | 317 -----------------
 .../file/metadata/statistics/Statistics.java       | 282 +++++++++++++++
 .../iotdb/tsfile/read/TsFileSequenceReader.java    |  16 +-
 .../reader/series/FileSeriesReaderWithFilter.java  |   6 +-
 .../tool/upgrade/TsfileUpgradeToolV0_8_0.java      |  16 +-
 .../iotdb/tsfile/write/chunk/ChunkWriterImpl.java  |  45 +--
 .../apache/iotdb/tsfile/write/page/PageWriter.java |   9 +-
 .../iotdb/tsfile/write/writer/TsFileIOWriter.java  |  16 +-
 .../tsfile/file/metadata/utils/TestHelper.java     |  34 +-
 .../iotdb/tsfile/file/metadata/utils/Utils.java    |   3 +-
 45 files changed, 1738 insertions(+), 756 deletions(-)
 copy server/src/main/java/org/apache/iotdb/db/conf/directories/strategy/{MaxDiskUsableSpaceFirstStrategy.java => RandomOnDiskUsableSpaceStrategy.java} (57%)
 create mode 100644 server/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileTest.java
 delete mode 100644 tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TsDigest.java


[incubator-iotdb] 03/03: add unit test

Posted by lt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lta pushed a commit to branch add_load_tsfile_feature
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 41bf8ea15fb610e62f33011b30f26615ca42ffcf
Author: lta <li...@163.com>
AuthorDate: Fri Nov 29 17:14:32 2019 +0800

    add unit test
---
 .../org/apache/iotdb/db/engine/StorageEngine.java  |  11 +-
 .../engine/storagegroup/StorageGroupProcessor.java |   6 +-
 .../iotdb/db/qp/executor/QueryProcessExecutor.java |   5 +-
 .../integration/IoTDBLoadExternalTsfileTest.java   | 155 +++++++++++++++++++--
 4 files changed, 159 insertions(+), 18 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index e8c4c34..7bb0260 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -435,9 +435,14 @@ public class StorageEngine implements IService {
   }
 
   public void loadNewTsFile(TsFileResource newTsFileResource)
-      throws TsFileProcessorException, StorageEngineException {
-    getProcessor(newTsFileResource.getFile().getParentFile().getName())
-        .loadNewTsFile(newTsFileResource);
+      throws TsFileProcessorException, StorageEngineException, StorageGroupException {
+    Map<String, Long> startTimeMap = newTsFileResource.getStartTimeMap();
+    if (startTimeMap == null || startTimeMap.isEmpty()) {
+      throw new StorageEngineException("Can not get the corresponding storage group.");
+    }
+    String device = startTimeMap.keySet().iterator().next();
+    String storageGroupName = MManager.getInstance().getStorageGroupNameByPath(device);
+    getProcessor(storageGroupName).loadNewTsFile(newTsFileResource);
   }
 
   public boolean deleteTsfile(File deletedTsfile) throws StorageEngineException {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
index 70ee1e7..ead863e 100755
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
@@ -1387,8 +1387,7 @@ public class StorageGroupProcessor {
       case LOAD_UNSEQUENCE:
         targetFile =
             new File(DirectoryManager.getInstance().getNextFolderForUnSequenceFile(),
-                syncedTsFile.getParentFile().getName() + File.separatorChar + syncedTsFile
-                    .getName());
+                storageGroupName + File.separatorChar + syncedTsFile.getName());
         tsFileResource.setFile(targetFile);
         unSequenceFileList.add(index, tsFileResource);
         logger
@@ -1399,8 +1398,7 @@ public class StorageGroupProcessor {
       case LOAD_SEQUENCE:
         targetFile =
             new File(DirectoryManager.getInstance().getNextFolderForSequenceFile(),
-                syncedTsFile.getParentFile().getName() + File.separatorChar + syncedTsFile
-                    .getName());
+                storageGroupName + File.separatorChar + syncedTsFile.getName());
         tsFileResource.setFile(targetFile);
         sequenceFileList.add(index, tsFileResource);
         logger
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/QueryProcessExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/QueryProcessExecutor.java
index 146e27f..be4de18 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/QueryProcessExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/QueryProcessExecutor.java
@@ -21,6 +21,7 @@ package org.apache.iotdb.db.qp.executor;
 import static org.apache.iotdb.db.conf.IoTDBConstant.PRIVILEGE;
 import static org.apache.iotdb.db.conf.IoTDBConstant.ROLE;
 import static org.apache.iotdb.db.conf.IoTDBConstant.USER;
+import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
 
 import java.io.File;
 import java.io.IOException;
@@ -179,7 +180,7 @@ public class QueryProcessExecutor extends AbstractQueryProcessExecutor {
     for (File file : files) {
       if (file.isDirectory()) {
         recursionFileDir(file);
-      } else {
+      } else if (file.getName().endsWith(TSFILE_SUFFIX)) {
         loadFile(file);
       }
     }
@@ -196,7 +197,7 @@ public class QueryProcessExecutor extends AbstractQueryProcessExecutor {
                 file.getAbsolutePath()));
       }
       StorageEngine.getInstance().loadNewTsFile(tsFileResource);
-    } catch (IOException | TsFileProcessorException | StorageEngineException e) {
+    } catch (IOException | TsFileProcessorException | StorageEngineException | StorageGroupException e) {
       throw new QueryProcessException(
           String.format("Cannot load file %s because %s", file.getAbsolutePath(), e.getMessage()));
     }
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileTest.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileTest.java
index 6e7a88b..21b13a5 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileTest.java
@@ -1,9 +1,32 @@
+/*
+ * 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.db.integration;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.File;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.util.ArrayList;
 import java.util.List;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
@@ -12,6 +35,7 @@ import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.jdbc.Config;
 import org.junit.After;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -25,13 +49,31 @@ public class IoTDBLoadExternalTsfileTest {
       "CREATE TIMESERIES root.vehicle.d0.s1 WITH DATATYPE=TEXT, ENCODING=PLAIN",
       "CREATE TIMESERIES root.vehicle.d1.s2 WITH DATATYPE=FLOAT, ENCODING=RLE",
       "CREATE TIMESERIES root.vehicle.d1.s3 WITH DATATYPE=BOOLEAN, ENCODING=PLAIN",
+      "CREATE TIMESERIES root.test.d0.s0 WITH DATATYPE=INT32, ENCODING=RLE",
+      "CREATE TIMESERIES root.test.d0.s1 WITH DATATYPE=TEXT, ENCODING=PLAIN",
+      "CREATE TIMESERIES root.test.d1.g0.s0 WITH DATATYPE=INT32, ENCODING=RLE",
       "insert into root.vehicle.d0(timestamp,s0) values(10,100)",
       "insert into root.vehicle.d0(timestamp,s0,s1) values(12,101,'102')",
       "insert into root.vehicle.d0(timestamp,s1) values(19,'103')",
       "insert into root.vehicle.d1(timestamp,s2) values(11,104.0)",
       "insert into root.vehicle.d1(timestamp,s2,s3) values(15,105.0,true)",
       "insert into root.vehicle.d1(timestamp,s3) values(17,false)",
-      "insert into root.vehicle.d0(timestamp,s0) values(20,1000)"
+      "insert into root.vehicle.d0(timestamp,s0) values(20,1000)",
+      "insert into root.test.d0(timestamp,s0) values(10,106)",
+      "insert into root.test.d0(timestamp,s0,s1) values(14,107,'108')",
+      "insert into root.test.d0(timestamp,s1) values(16,'109')",
+      "insert into root.test.d1.g0(timestamp,s0) values(1,110)",
+      "insert into root.test.d0(timestamp,s0) values(30,1006)",
+      "insert into root.test.d0(timestamp,s0,s1) values(34,1007,'1008')",
+      "insert into root.test.d0(timestamp,s1) values(36,'1090')",
+      "insert into root.test.d1.g0(timestamp,s0) values(10,1100)",
+      "flush",
+      "insert into root.test.d0(timestamp,s0) values(150,126)",
+      "insert into root.test.d0(timestamp,s0,s1) values(80,127,'128')",
+      "insert into root.test.d0(timestamp,s1) values(200,'129')",
+      "insert into root.test.d1.g0(timestamp,s0) values(140,430)",
+      "insert into root.test.d0(timestamp,s0) values(150,426)",
+      "flush"
   };
 
   private static final String TIMESTAMP_STR = "Time";
@@ -56,18 +98,114 @@ public class IoTDBLoadExternalTsfileTest {
   }
 
   @Test
-  public void LoadNewTsfileTest() throws SQLException {
+  public void moveTsfileTest() throws SQLException {
     try (Connection connection = DriverManager.
         getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
         Statement statement = connection.createStatement()) {
-      statement.execute("flush");
-      List<TsFileResource> resources = StorageEngine.getInstance().getProcessor("root.vehicle")
-          .getSequenceFileList();
-      for(TsFileResource resource:resources){
-        System.out.println(resource.getFile().getAbsolutePath());
+
+      // move root.vehicle
+      List<TsFileResource> resources = new ArrayList<>(
+          StorageEngine.getInstance().getProcessor("root.vehicle")
+              .getSequenceFileList());
+      assertEquals(1, resources.size());
+      File tmpDir = new File(resources.get(0).getFile().getParentFile().getParentFile(), "tmp");
+      if (!tmpDir.exists()) {
+        tmpDir.mkdirs();
+      }
+      for (TsFileResource resource : resources) {
+        statement.execute(String.format("move %s %s", resource.getFile().getPath(), tmpDir));
+      }
+      assertEquals(0, StorageEngine.getInstance().getProcessor("root.vehicle")
+          .getSequenceFileList().size());
+      assertNotNull(tmpDir.listFiles());
+      assertEquals(1, tmpDir.listFiles().length >> 1);
+
+      // move root.test
+      resources = new ArrayList<>(
+          StorageEngine.getInstance().getProcessor("root.test")
+              .getSequenceFileList());
+      assertEquals(2, resources.size());
+      for (TsFileResource resource : resources) {
+        statement.execute(String.format("move %s %s", resource.getFile().getPath(), tmpDir));
       }
+      assertEquals(0, StorageEngine.getInstance().getProcessor("root.test")
+          .getSequenceFileList().size());
+      assertNotNull(tmpDir.listFiles());
+      assertEquals(3, tmpDir.listFiles().length >> 1);
     } catch (StorageEngineException e) {
-      e.printStackTrace();
+      Assert.fail();
+    }
+  }
+
+  @Test
+  public void loadTsfileTest() throws SQLException {
+    try (Connection connection = DriverManager.
+        getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
+        Statement statement = connection.createStatement()) {
+
+      // move root.vehicle
+      List<TsFileResource> resources = new ArrayList<>(
+          StorageEngine.getInstance().getProcessor("root.vehicle")
+              .getSequenceFileList());
+      File tmpDir = new File(resources.get(0).getFile().getParentFile().getParentFile(), "tmp");
+      if (!tmpDir.exists()) {
+        tmpDir.mkdirs();
+      }
+      for (TsFileResource resource : resources) {
+        statement.execute(String.format("move %s %s", resource.getFile().getPath(), tmpDir));
+      }
+
+      // move root.test
+      resources = new ArrayList<>(
+          StorageEngine.getInstance().getProcessor("root.test")
+              .getSequenceFileList());
+      for (TsFileResource resource : resources) {
+        statement.execute(String.format("move %s %s", resource.getFile().getPath(), tmpDir));
+      }
+
+      // load all tsfile in tmp dir
+      statement.execute(String.format("load %s", tmpDir.getAbsolutePath()));
+      resources = new ArrayList<>(
+          StorageEngine.getInstance().getProcessor("root.vehicle")
+              .getSequenceFileList());
+      assertEquals(1, resources.size());
+      resources = new ArrayList<>(
+          StorageEngine.getInstance().getProcessor("root.test")
+              .getSequenceFileList());
+      assertEquals(2, resources.size());
+      assertNotNull(tmpDir.listFiles());
+      assertEquals(0, tmpDir.listFiles().length >> 1);
+    } catch (StorageEngineException e) {
+      Assert.fail();
+    }
+  }
+
+  @Test
+  public void removeTsfileTest() throws SQLException {
+    try (Connection connection = DriverManager.
+        getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
+        Statement statement = connection.createStatement()) {
+      List<TsFileResource> resources = new ArrayList<>(
+          StorageEngine.getInstance().getProcessor("root.vehicle")
+              .getSequenceFileList());
+      assertEquals(1, resources.size());
+      for (TsFileResource resource : resources) {
+        statement.execute(String.format("remove %s", resource.getFile().getPath()));
+      }
+      assertEquals(0, StorageEngine.getInstance().getProcessor("root.vehicle")
+          .getSequenceFileList().size());
+
+      resources = new ArrayList<>(
+          StorageEngine.getInstance().getProcessor("root.test")
+              .getSequenceFileList());
+      assertEquals(2, resources.size());
+      for (TsFileResource resource : resources) {
+        statement.execute(String.format("remove %s", resource.getFile().getPath()));
+      }
+      assertEquals(0, StorageEngine.getInstance().getProcessor("root.test")
+          .getSequenceFileList().size());
+    } catch (StorageEngineException e) {
+      Assert.fail();
     }
   }
 
@@ -77,7 +215,6 @@ public class IoTDBLoadExternalTsfileTest {
             "root");
         Statement statement = connection.createStatement()) {
 
-
       for (String sql : sqls) {
         statement.execute(sql);
       }


[incubator-iotdb] 01/03: Merge branch 'master' into add_load_tsfile_feature

Posted by lt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lta pushed a commit to branch add_load_tsfile_feature
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 83db91a0709b4d619b1d3ac780072d2f8a12b141
Merge: b68c549 15643e1
Author: lta <li...@163.com>
AuthorDate: Fri Nov 29 16:01:38 2019 +0800

    Merge branch 'master' into add_load_tsfile_feature

 .travis.yml                                        |  25 +-
 client/src/assembly/client.xml                     |   2 +-
 distribution/src/assembly/distribution.xml         |   2 +-
 .../1-DDL (Data Definition Language).md            |  37 ++
 .../5-Operation Manual/4-SQL Reference.md          |  23 +-
 .../8-System Design (Developer)/1-Hierarchy.md     | 392 ++++++++++++++++++++-
 .../UserGuide/4-Client/3-Programming - Session.md  |   4 +
 .../1-DDL (Data Definition Language).md            |  38 +-
 .../5-Operation Manual/4-SQL Reference.md          |  21 +-
 .../8-System Design (Developer)/1-Hierarchy.md     |  11 +-
 .../main/java/org/apache/iotdb/SessionExample.java |  34 ++
 .../org/apache/iotdb/jdbc/IoTDBQueryResultSet.java | 113 ++++--
 .../java/org/apache/iotdb/jdbc/IoTDBStatement.java |   2 +-
 .../src/main/java/org/apache/iotdb/jdbc/Utils.java | 117 ++++--
 .../apache/iotdb/jdbc/IoTDBQueryResultSetTest.java |   2 +-
 .../test/java/org/apache/iotdb/jdbc/UtilsTest.java |   9 +-
 pom.xml                                            | 170 ++++-----
 .../resources/conf/iotdb-engine.properties         |   1 +
 .../src/assembly/resources/sbin/start-server.bat   |  44 +--
 server/src/assembly/server.xml                     |   2 +-
 .../strategy/RandomOnDiskUsableSpaceStrategy.java  |  63 ++++
 .../engine/storagegroup/StorageGroupProcessor.java |   1 -
 .../iotdb/db/query/control/FileReaderManager.java  |  26 +-
 .../resourceRelated/UnseqResourceMergeReader.java  |   6 +-
 .../org/apache/iotdb/db/service/TSServiceImpl.java | 132 ++++---
 .../apache/iotdb/db/tools/TsFileSketchTool.java    |   9 +-
 .../strategy/DirectoryStrategyTest.java            |  23 +-
 service-rpc/rpc-changelist.md                      |   2 +
 service-rpc/src/main/thrift/rpc.thrift             |  12 +
 .../java/org/apache/iotdb/session/Session.java     | 102 ++++--
 .../org/apache/iotdb/session/IoTDBSessionIT.java   |  70 +++-
 .../iotdb/tsfile/file/metadata/ChunkMetaData.java  |  19 +-
 .../iotdb/tsfile/file/metadata/TsDigest.java       | 317 -----------------
 .../file/metadata/statistics/Statistics.java       | 282 +++++++++++++++
 .../iotdb/tsfile/read/TsFileSequenceReader.java    |  16 +-
 .../reader/series/FileSeriesReaderWithFilter.java  |   6 +-
 .../tool/upgrade/TsfileUpgradeToolV0_8_0.java      |  16 +-
 .../iotdb/tsfile/write/chunk/ChunkWriterImpl.java  |  45 +--
 .../apache/iotdb/tsfile/write/page/PageWriter.java |   9 +-
 .../iotdb/tsfile/write/writer/TsFileIOWriter.java  |  16 +-
 .../tsfile/file/metadata/utils/TestHelper.java     |  34 +-
 .../iotdb/tsfile/file/metadata/utils/Utils.java    |   3 +-
 42 files changed, 1533 insertions(+), 725 deletions(-)



[incubator-iotdb] 02/03: add unit test

Posted by lt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lta pushed a commit to branch add_load_tsfile_feature
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit ad864ad759c21d94814ccd7dbff22a0dbf759390
Author: lta <li...@163.com>
AuthorDate: Fri Nov 29 17:14:18 2019 +0800

    add unit test
---
 .../integration/IoTDBLoadExternalTsfileTest.java   | 90 ++++++++++++++++++++++
 1 file changed, 90 insertions(+)

diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileTest.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileTest.java
new file mode 100644
index 0000000..6e7a88b
--- /dev/null
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileTest.java
@@ -0,0 +1,90 @@
+package org.apache.iotdb.db.integration;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.List;
+import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
+import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.utils.EnvironmentUtils;
+import org.apache.iotdb.jdbc.Config;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class IoTDBLoadExternalTsfileTest {
+
+  private static IoTDB daemon;
+  private static String[] sqls = new String[]{
+      "SET STORAGE GROUP TO root.vehicle",
+      "SET STORAGE GROUP TO root.test",
+      "CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=INT32, ENCODING=RLE",
+      "CREATE TIMESERIES root.vehicle.d0.s1 WITH DATATYPE=TEXT, ENCODING=PLAIN",
+      "CREATE TIMESERIES root.vehicle.d1.s2 WITH DATATYPE=FLOAT, ENCODING=RLE",
+      "CREATE TIMESERIES root.vehicle.d1.s3 WITH DATATYPE=BOOLEAN, ENCODING=PLAIN",
+      "insert into root.vehicle.d0(timestamp,s0) values(10,100)",
+      "insert into root.vehicle.d0(timestamp,s0,s1) values(12,101,'102')",
+      "insert into root.vehicle.d0(timestamp,s1) values(19,'103')",
+      "insert into root.vehicle.d1(timestamp,s2) values(11,104.0)",
+      "insert into root.vehicle.d1(timestamp,s2,s3) values(15,105.0,true)",
+      "insert into root.vehicle.d1(timestamp,s3) values(17,false)",
+      "insert into root.vehicle.d0(timestamp,s0) values(20,1000)"
+  };
+
+  private static final String TIMESTAMP_STR = "Time";
+  private static final String TEMPERATURE_STR = "root.ln.wf01.wt01.temperature";
+  private static final String STATUS_STR = "root.ln.wf01.wt01.status";
+  private static final String HARDWARE_STR = "root.ln.wf01.wt01.hardware";
+
+  @Before
+  public void setUp() throws Exception {
+    EnvironmentUtils.closeStatMonitor();
+    daemon = IoTDB.getInstance();
+    daemon.active();
+    EnvironmentUtils.envSetUp();
+    Class.forName(Config.JDBC_DRIVER_NAME);
+    prepareData();
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    daemon.stop();
+    EnvironmentUtils.cleanEnv();
+  }
+
+  @Test
+  public void LoadNewTsfileTest() throws SQLException {
+    try (Connection connection = DriverManager.
+        getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
+        Statement statement = connection.createStatement()) {
+      statement.execute("flush");
+      List<TsFileResource> resources = StorageEngine.getInstance().getProcessor("root.vehicle")
+          .getSequenceFileList();
+      for(TsFileResource resource:resources){
+        System.out.println(resource.getFile().getAbsolutePath());
+      }
+    } catch (StorageEngineException e) {
+      e.printStackTrace();
+    }
+  }
+
+  private void prepareData() throws SQLException {
+    try (Connection connection = DriverManager
+        .getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root",
+            "root");
+        Statement statement = connection.createStatement()) {
+
+
+      for (String sql : sqls) {
+        statement.execute(sql);
+      }
+
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+  }
+}
+