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

jackietien pushed a commit to branch IOTDB-6243
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/IOTDB-6243 by this push:
     new f231e2604ed Add IT
f231e2604ed is described below

commit f231e2604ed3c68b085be2149de42b71bc80e66e
Author: JackieTien97 <[email protected]>
AuthorDate: Mon Nov 13 20:47:09 2023 +0800

    Add IT
---
 .../db/it/fill/IoTDBFillWithThresholdInNSIT.java   | 242 +++++++++++++++++++++
 .../db/it/fill/IoTDBFillWithThresholdInUSIT.java   | 242 +++++++++++++++++++++
 2 files changed, 484 insertions(+)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/fill/IoTDBFillWithThresholdInNSIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/fill/IoTDBFillWithThresholdInNSIT.java
new file mode 100644
index 00000000000..b73def6fafd
--- /dev/null
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/fill/IoTDBFillWithThresholdInNSIT.java
@@ -0,0 +1,242 @@
+/*
+ * 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.it.fill;
+
+import org.apache.iotdb.it.env.EnvFactory;
+import org.apache.iotdb.it.framework.IoTDBTestRunner;
+import org.apache.iotdb.itbase.category.ClusterIT;
+import org.apache.iotdb.itbase.category.LocalStandaloneIT;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Locale;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+@RunWith(IoTDBTestRunner.class)
+@Category({LocalStandaloneIT.class, ClusterIT.class})
+public class IoTDBFillWithThresholdInNSIT {
+
+  private static String[] creationSqls =
+      new String[] {
+        "CREATE DATABASE root.fillTest",
+        "CREATE TIMESERIES root.fillTest.d0.s0 WITH DATATYPE=INT32, 
ENCODING=PLAIN",
+        "CREATE TIMESERIES root.fillTest.d0.s1 WITH DATATYPE=INT64, 
ENCODING=PLAIN",
+        "CREATE TIMESERIES root.fillTest.d0.s2 WITH DATATYPE=FLOAT, 
ENCODING=PLAIN",
+        "CREATE TIMESERIES root.fillTest.d0.s3 WITH DATATYPE=DOUBLE, 
ENCODING=PLAIN",
+        "CREATE TIMESERIES root.fillTest.d0.s4 WITH DATATYPE=TEXT, 
ENCODING=PLAIN",
+        "CREATE TIMESERIES root.fillTest.d0.s5 WITH DATATYPE=BOOLEAN, 
ENCODING=PLAIN",
+      };
+
+  @Before
+  public void setUp() throws Exception {
+    Locale.setDefault(Locale.ENGLISH);
+
+    
EnvFactory.getEnv().getConfig().getCommonConfig().setTimestampPrecision("ns");
+    EnvFactory.getEnv().initClusterEnvironment();
+    prepareData();
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    EnvFactory.getEnv().cleanClusterEnvironment();
+  }
+
+  @Test
+  public void testFill() {
+
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+
+      String[] ans = {
+        "1675223280000000000,4,3,4.0,4.0,on,false",
+        "1675223340000000000,5,5,5.0,5.0,on,true",
+        "1675223400000000000,6,null,6.0,6.0,null,false",
+        "1675223460000000000,null,null,null,null,null,null",
+        "1675223520000000000,null,null,null,null,null,null",
+        "1675223580000000000,null,null,null,null,null,null",
+        "1675223640000000000,null,null,null,null,null,null",
+        "1675223700000000000,null,null,null,null,null,null",
+        "1675223760000000000,7,7,7.0,null,off,false",
+        "1675223820000000000,null,null,null,null,null,null",
+        "1675223880000000000,8,8,8.0,null,on,true"
+      };
+
+      try (ResultSet set =
+          statement.executeQuery(
+              "SELECT last_value(*) FROM root.fillTest.d0 group 
by((2023-02-01T11:47:00.000000000+08:00, 2023-02-01T11:58:00.000000000+08:00], 
1m)")) {
+        int cnt = 0;
+        while (set.next()) {
+          String row =
+              set.getString("Time")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s0)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s1)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s2)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s3)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s4)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s5)");
+
+          assertEquals(ans[cnt], row);
+          cnt++;
+        }
+        assertEquals(ans.length, cnt);
+      }
+
+      ans =
+          new String[] {
+            "1675223280000000000,4,3,4.0,4.0,on,false",
+            "1675223340000000000,5,5,5.0,5.0,on,true",
+            "1675223400000000000,6,5,6.0,6.0,on,false",
+            "1675223460000000000,6,5,6.0,6.0,on,false",
+            "1675223520000000000,6,5,6.0,6.0,on,false",
+            "1675223580000000000,6,5,6.0,6.0,on,false",
+            "1675223640000000000,6,5,6.0,6.0,on,false",
+            "1675223700000000000,6,5,6.0,6.0,on,false",
+            "1675223760000000000,7,7,7.0,6.0,off,false",
+            "1675223820000000000,7,7,7.0,6.0,off,false",
+            "1675223880000000000,8,8,8.0,6.0,on,true"
+          };
+
+      try (ResultSet set =
+          statement.executeQuery(
+              "SELECT last_value(*) FROM root.fillTest.d0 group 
by((2023-02-01T11:47:00.000000000+08:00, 2023-02-01T11:58:00.000000000+08:00], 
1m) FILL(PREVIOUS)")) {
+        int cnt = 0;
+        while (set.next()) {
+          String row =
+              set.getString("Time")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s0)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s1)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s2)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s3)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s4)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s5)");
+          assertEquals(ans[cnt], row);
+          cnt++;
+        }
+        assertEquals(ans.length, cnt);
+      }
+
+      ans =
+          new String[] {
+            "1675223280000000000,4,3,4.0,4.0,on,false",
+            "1675223340000000000,5,5,5.0,5.0,on,true",
+            "1675223400000000000,6,5,6.0,6.0,on,false",
+            "1675223460000000000,6,5,6.0,6.0,on,false",
+            "1675223520000000000,6,null,6.0,6.0,null,false",
+            "1675223580000000000,null,null,null,null,null,null",
+            "1675223640000000000,null,null,null,null,null,null",
+            "1675223700000000000,null,null,null,null,null,null",
+            "1675223760000000000,7,7,7.0,null,off,false",
+            "1675223820000000000,7,7,7.0,null,off,false",
+            "1675223880000000000,8,8,8.0,null,on,true"
+          };
+
+      try (ResultSet set =
+          statement.executeQuery(
+              "SELECT last_value(*) FROM root.fillTest.d0 group 
by((2023-02-01T11:47:00.000000000+08:00, 2023-02-01T11:58:00.000000000+08:00], 
1m) FILL(PREVIOUS, 2m)")) {
+        int cnt = 0;
+        while (set.next()) {
+          String row =
+              set.getString("Time")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s0)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s1)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s2)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s3)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s4)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s5)");
+          assertEquals(ans[cnt], row);
+          cnt++;
+        }
+        assertEquals(ans.length, cnt);
+      }
+    } catch (SQLException e) {
+      fail(e.getMessage());
+    }
+  }
+
+  private void prepareData() {
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+
+      for (String sql : creationSqls) {
+        statement.addBatch(sql);
+      }
+      statement.executeBatch();
+      statement.clearBatch();
+
+      // 2023-02-01T11:47:30.000000000+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223250000000000, 1, 1, 1.0, null, 'on', true)");
+      // 2023-02-01T11:47:40.000000001+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223260000000001, null, 2, 2.0, 2.0, null, false)");
+      // 2023-02-01T11:47:50.000000100+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223270000000100, null, 3, null, 3.0, 'off', false)");
+      // 2023-02-01T11:48:00.000000000+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223280000000000, 4, null, 4.0, 4.0, 'on', null)");
+      // 2023-02-01T11:48:50.000000000+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223330000000000, 5, 5, 5.0, 5.0, 'on', true)");
+      // 2023-02-01T11:49:00.000000001+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223340000000001, 6, null, 6.0, 6.0, null, false)");
+      // 2023-02-01T11:55:50.000000000+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223750000000000, 7, 7, 7.0, null, 'off', false)");
+      // 2023-02-01T11:57:50.000000000+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223870000000000, 8, 8, 8.0, null, 'on', true)");
+
+      statement.executeBatch();
+
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+  }
+}
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/fill/IoTDBFillWithThresholdInUSIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/fill/IoTDBFillWithThresholdInUSIT.java
new file mode 100644
index 00000000000..848b2e1f5ef
--- /dev/null
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/fill/IoTDBFillWithThresholdInUSIT.java
@@ -0,0 +1,242 @@
+/*
+ * 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.it.fill;
+
+import org.apache.iotdb.it.env.EnvFactory;
+import org.apache.iotdb.it.framework.IoTDBTestRunner;
+import org.apache.iotdb.itbase.category.ClusterIT;
+import org.apache.iotdb.itbase.category.LocalStandaloneIT;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Locale;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+@RunWith(IoTDBTestRunner.class)
+@Category({LocalStandaloneIT.class, ClusterIT.class})
+public class IoTDBFillWithThresholdInUSIT {
+
+  private static String[] creationSqls =
+      new String[] {
+        "CREATE DATABASE root.fillTest",
+        "CREATE TIMESERIES root.fillTest.d0.s0 WITH DATATYPE=INT32, 
ENCODING=PLAIN",
+        "CREATE TIMESERIES root.fillTest.d0.s1 WITH DATATYPE=INT64, 
ENCODING=PLAIN",
+        "CREATE TIMESERIES root.fillTest.d0.s2 WITH DATATYPE=FLOAT, 
ENCODING=PLAIN",
+        "CREATE TIMESERIES root.fillTest.d0.s3 WITH DATATYPE=DOUBLE, 
ENCODING=PLAIN",
+        "CREATE TIMESERIES root.fillTest.d0.s4 WITH DATATYPE=TEXT, 
ENCODING=PLAIN",
+        "CREATE TIMESERIES root.fillTest.d0.s5 WITH DATATYPE=BOOLEAN, 
ENCODING=PLAIN",
+      };
+
+  @Before
+  public void setUp() throws Exception {
+    Locale.setDefault(Locale.ENGLISH);
+
+    
EnvFactory.getEnv().getConfig().getCommonConfig().setTimestampPrecision("us");
+    EnvFactory.getEnv().initClusterEnvironment();
+    prepareData();
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    EnvFactory.getEnv().cleanClusterEnvironment();
+  }
+
+  @Test
+  public void testFill() {
+
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+
+      String[] ans = {
+        "1675223280000000,4,3,4.0,4.0,on,false",
+        "1675223340000000,5,5,5.0,5.0,on,true",
+        "1675223400000000,6,null,6.0,6.0,null,false",
+        "1675223460000000,null,null,null,null,null,null",
+        "1675223520000000,null,null,null,null,null,null",
+        "1675223580000000,null,null,null,null,null,null",
+        "1675223640000000,null,null,null,null,null,null",
+        "1675223700000000,null,null,null,null,null,null",
+        "1675223760000000,7,7,7.0,null,off,false",
+        "1675223820000000,null,null,null,null,null,null",
+        "1675223880000000,8,8,8.0,null,on,true"
+      };
+
+      try (ResultSet set =
+          statement.executeQuery(
+              "SELECT last_value(*) FROM root.fillTest.d0 group 
by((2023-02-01T11:47:00.000000+08:00, 2023-02-01T11:58:00.000000+08:00], 1m)")) 
{
+        int cnt = 0;
+        while (set.next()) {
+          String row =
+              set.getString("Time")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s0)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s1)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s2)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s3)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s4)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s5)");
+
+          assertEquals(ans[cnt], row);
+          cnt++;
+        }
+        assertEquals(ans.length, cnt);
+      }
+
+      ans =
+          new String[] {
+            "1675223280000000,4,3,4.0,4.0,on,false",
+            "1675223340000000,5,5,5.0,5.0,on,true",
+            "1675223400000000,6,5,6.0,6.0,on,false",
+            "1675223460000000,6,5,6.0,6.0,on,false",
+            "1675223520000000,6,5,6.0,6.0,on,false",
+            "1675223580000000,6,5,6.0,6.0,on,false",
+            "1675223640000000,6,5,6.0,6.0,on,false",
+            "1675223700000000,6,5,6.0,6.0,on,false",
+            "1675223760000000,7,7,7.0,6.0,off,false",
+            "1675223820000000,7,7,7.0,6.0,off,false",
+            "1675223880000000,8,8,8.0,6.0,on,true"
+          };
+
+      try (ResultSet set =
+          statement.executeQuery(
+              "SELECT last_value(*) FROM root.fillTest.d0 group 
by((2023-02-01T11:47:00.000000+08:00, 2023-02-01T11:58:00.000000+08:00], 1m) 
FILL(PREVIOUS)")) {
+        int cnt = 0;
+        while (set.next()) {
+          String row =
+              set.getString("Time")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s0)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s1)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s2)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s3)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s4)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s5)");
+          assertEquals(ans[cnt], row);
+          cnt++;
+        }
+        assertEquals(ans.length, cnt);
+      }
+
+      ans =
+          new String[] {
+            "1675223280000000,4,3,4.0,4.0,on,false",
+            "1675223340000000,5,5,5.0,5.0,on,true",
+            "1675223400000000,6,5,6.0,6.0,on,false",
+            "1675223460000000,6,5,6.0,6.0,on,false",
+            "1675223520000000,6,null,6.0,6.0,null,false",
+            "1675223580000000,null,null,null,null,null,null",
+            "1675223640000000,null,null,null,null,null,null",
+            "1675223700000000,null,null,null,null,null,null",
+            "1675223760000000,7,7,7.0,null,off,false",
+            "1675223820000000,7,7,7.0,null,off,false",
+            "1675223880000000,8,8,8.0,null,on,true"
+          };
+
+      try (ResultSet set =
+          statement.executeQuery(
+              "SELECT last_value(*) FROM root.fillTest.d0 group 
by((2023-02-01T11:47:00.000000+08:00, 2023-02-01T11:58:00.000000+08:00], 1m) 
FILL(PREVIOUS, 2m)")) {
+        int cnt = 0;
+        while (set.next()) {
+          String row =
+              set.getString("Time")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s0)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s1)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s2)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s3)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s4)")
+                  + ","
+                  + set.getString("last_value(root.fillTest.d0.s5)");
+          assertEquals(ans[cnt], row);
+          cnt++;
+        }
+        assertEquals(ans.length, cnt);
+      }
+    } catch (SQLException e) {
+      fail(e.getMessage());
+    }
+  }
+
+  private void prepareData() {
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+
+      for (String sql : creationSqls) {
+        statement.addBatch(sql);
+      }
+      statement.executeBatch();
+      statement.clearBatch();
+
+      // 2023-02-01T11:47:30.000000+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223250000000, 1, 1, 1.0, null, 'on', true)");
+      // 2023-02-01T11:47:40.000001+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223260000001, null, 2, 2.0, 2.0, null, false)");
+      // 2023-02-01T11:47:50.000100+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223270000100, null, 3, null, 3.0, 'off', false)");
+      // 2023-02-01T11:48:00.000000+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223280000000, 4, null, 4.0, 4.0, 'on', null)");
+      // 2023-02-01T11:48:50.000000+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223330000000, 5, 5, 5.0, 5.0, 'on', true)");
+      // 2023-02-01T11:49:00.000001+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223340000001, 6, null, 6.0, 6.0, null, false)");
+      // 2023-02-01T11:55:50.000000+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223750000000, 7, 7, 7.0, null, 'off', false)");
+      // 2023-02-01T11:57:50.000000+08:00
+      statement.addBatch(
+          "INSERT INTO root.fillTest.d0(timestamp,s0,s1,s2,s3,s4,s5) 
VALUES(1675223870000000, 8, 8, 8.0, null, 'on', true)");
+
+      statement.executeBatch();
+
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+  }
+}

Reply via email to