This is an automated email from the ASF dual-hosted git repository. lta pushed a commit to branch cluster in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit 4abde09c4e71a8de156a63a495d47fff3d5547c0 Author: lta <[email protected]> AuthorDate: Fri May 17 17:47:59 2019 +0800 add aggregation query it --- .../org/apache/iotdb/cluster/entity/Server.java | 24 +- .../cluster/integration/IoTDBAggregationIT.java | 5 - .../integration/IoTDBAggregationLargeDataIT.java | 916 +++++++++++++++++++++ .../integration/IoTDBAggregationSmallDataIT.java | 760 +++++++++++++++++ .../cluster/integration/IoTDBFillQueryIT.java | 1 - .../integration/IoTDBMetadataFetchLocallyIT.java | 1 - .../iotdb/cluster/integration/IoTDBQueryIT.java | 1 - .../cluster/integration/IoTDBQueryLargeDataIT.java | 2 - .../apache/iotdb/cluster/utils/RaftUtilsTest.java | 19 +- .../java/org/apache/iotdb/cluster/utils/Utils.java | 5 + .../iotdb/db/engine/filenode/FileNodeManager.java | 3 + 11 files changed, 1709 insertions(+), 28 deletions(-) diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/entity/Server.java b/cluster/src/main/java/org/apache/iotdb/cluster/entity/Server.java index 842d2ed..c6cb03b 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/entity/Server.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/entity/Server.java @@ -121,16 +121,20 @@ public class Server { Router router = Router.getInstance(); PhysicalNode[][] groups = router.getGroupsNodes(serverId.getIp(), serverId.getPort()); - for (int i = 0; i < groups.length; i++) { - PhysicalNode[] group = groups[i]; - String groupId = router.getGroupID(group); - DataPartitionHolder dataPartitionHolder = new DataPartitionRaftHolder(groupId, - RaftUtils.getPeerIdArrayFrom(group), serverId, rpcServer, false); - dataPartitionHolder.init(); - dataPartitionHolder.start(); - dataPartitionHolderMap.put(groupId, dataPartitionHolder); - LOGGER.info("{} group has started", groupId); - Router.getInstance().showPhysicalNodes(groupId); + try { + for (int i = 0; i < groups.length; i++) { + PhysicalNode[] group = groups[i]; + String groupId = router.getGroupID(group); + DataPartitionHolder dataPartitionHolder = new DataPartitionRaftHolder(groupId, + RaftUtils.getPeerIdArrayFrom(group), serverId, rpcServer, false); + dataPartitionHolder.init(); + dataPartitionHolder.start(); + dataPartitionHolderMap.put(groupId, dataPartitionHolder); + LOGGER.info("{} group has started", groupId); + Router.getInstance().showPhysicalNodes(groupId); + } + }catch (Exception e){ + e.printStackTrace(); } try { diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBAggregationIT.java b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBAggregationIT.java index bf7c4da..201ddf6 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBAggregationIT.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBAggregationIT.java @@ -182,11 +182,6 @@ public class IoTDBAggregationIT { public void remoteTest() throws SQLException { QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); test(); - try { - Thread.sleep(200); - } catch (InterruptedException e) { - e.printStackTrace(); - } } @Test diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBAggregationLargeDataIT.java b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBAggregationLargeDataIT.java new file mode 100644 index 0000000..973d3e7 --- /dev/null +++ b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBAggregationLargeDataIT.java @@ -0,0 +1,916 @@ +/** + * 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.cluster.integration; + +import static org.apache.iotdb.cluster.integration.Constant.count; +import static org.apache.iotdb.cluster.integration.Constant.first; +import static org.apache.iotdb.cluster.integration.Constant.max_time; +import static org.apache.iotdb.cluster.integration.Constant.max_value; +import static org.apache.iotdb.cluster.integration.Constant.mean; +import static org.apache.iotdb.cluster.integration.Constant.min_value; +import static org.apache.iotdb.cluster.integration.Constant.sum; +import static org.junit.Assert.fail; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import org.apache.iotdb.cluster.config.ClusterConfig; +import org.apache.iotdb.cluster.config.ClusterDescriptor; +import org.apache.iotdb.cluster.entity.Server; +import org.apache.iotdb.cluster.integration.Constant; +import org.apache.iotdb.cluster.utils.EnvironmentUtils; +import org.apache.iotdb.cluster.utils.QPExecutorUtils; +import org.apache.iotdb.cluster.utils.hash.PhysicalNode; +import org.apache.iotdb.jdbc.Config; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +public class IoTDBAggregationLargeDataIT { + + private Server server; + private static final ClusterConfig CLUSTER_CONFIG = ClusterDescriptor.getInstance().getConfig(); + private static final PhysicalNode localNode = new PhysicalNode(CLUSTER_CONFIG.getIp(), + CLUSTER_CONFIG.getPort()); + + private static final String TIMESTAMP_STR = "Time"; + private final String d0s0 = "root.vehicle.d0.s0"; + private final String d0s1 = "root.vehicle.d0.s1"; + private final String d0s2 = "root.vehicle.d0.s2"; + private final String d0s3 = "root.vehicle.d0.s3"; + private final String d0s4 = "root.vehicle.d0.s4"; + + private static String[] createSql = new String[]{ + "SET STORAGE GROUP TO root.vehicle", + "CREATE TIMESERIES root.vehicle.d1.s0 WITH DATATYPE=INT32, ENCODING=RLE", + "CREATE TIMESERIES root.vehicle.d0.s2 WITH DATATYPE=FLOAT, ENCODING=RLE", + "CREATE TIMESERIES root.vehicle.d0.s3 WITH DATATYPE=TEXT, ENCODING=PLAIN", + "CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=INT32, ENCODING=RLE", + "CREATE TIMESERIES root.vehicle.d0.s1 WITH DATATYPE=INT64, ENCODING=RLE", + "CREATE TIMESERIES root.vehicle.d0.s4 WITH DATATYPE=BOOLEAN, ENCODING=PLAIN", + }; + + private static String[] insertSql = new String[]{ + "insert into root.vehicle.d0(timestamp,s0) values(1,101)", + "insert into root.vehicle.d0(timestamp,s0) values(2,198)", + "insert into root.vehicle.d0(timestamp,s0) values(100,99)", + "insert into root.vehicle.d0(timestamp,s0) values(101,99)", + "insert into root.vehicle.d0(timestamp,s0) values(102,80)", + "insert into root.vehicle.d0(timestamp,s0) values(103,99)", + "insert into root.vehicle.d0(timestamp,s0) values(104,90)", + "insert into root.vehicle.d0(timestamp,s0) values(105,99)", + "insert into root.vehicle.d0(timestamp,s0) values(106,99)", + "insert into root.vehicle.d0(timestamp,s0) values(2,10000)", + "insert into root.vehicle.d0(timestamp,s0) values(50,10000)", + "insert into root.vehicle.d0(timestamp,s0) values(1000,22222)", + "insert into root.vehicle.d0(timestamp,s0) values(106,199)", + "DELETE FROM root.vehicle.d0.s0 WHERE time < 104", + + "insert into root.vehicle.d0(timestamp,s1) values(1,1101)", + "insert into root.vehicle.d0(timestamp,s1) values(2,198)", + "insert into root.vehicle.d0(timestamp,s1) values(100,199)", + "insert into root.vehicle.d0(timestamp,s1) values(101,199)", + "insert into root.vehicle.d0(timestamp,s1) values(102,180)", + "insert into root.vehicle.d0(timestamp,s1) values(103,199)", + "insert into root.vehicle.d0(timestamp,s1) values(104,190)", + "insert into root.vehicle.d0(timestamp,s1) values(105,199)", + "insert into root.vehicle.d0(timestamp,s1) values(2,40000)", + "insert into root.vehicle.d0(timestamp,s1) values(50,50000)", + "insert into root.vehicle.d0(timestamp,s1) values(1000,55555)", + + "insert into root.vehicle.d0(timestamp,s2) values(1000,55555)", + "insert into root.vehicle.d0(timestamp,s2) values(2,2.22)", + "insert into root.vehicle.d0(timestamp,s2) values(3,3.33)", + "insert into root.vehicle.d0(timestamp,s2) values(4,4.44)", + "insert into root.vehicle.d0(timestamp,s2) values(102,10.00)", + "insert into root.vehicle.d0(timestamp,s2) values(105,11.11)", + "insert into root.vehicle.d0(timestamp,s2) values(1000,1000.11)", + + "insert into root.vehicle.d0(timestamp,s3) values(60,'aaaaa')", + "insert into root.vehicle.d0(timestamp,s3) values(70,'bbbbb')", + "insert into root.vehicle.d0(timestamp,s3) values(80,'ccccc')", + "insert into root.vehicle.d0(timestamp,s3) values(101,'ddddd')", + "insert into root.vehicle.d0(timestamp,s3) values(102,'fffff')", + + "insert into root.vehicle.d1(timestamp,s0) values(1,999)", + "insert into root.vehicle.d1(timestamp,s0) values(1000,888)", + + "insert into root.vehicle.d0(timestamp,s4) values(100, false)", + "insert into root.vehicle.d0(timestamp,s4) values(100, true)", + }; + + @Before + public void setUp() throws Exception { + EnvironmentUtils.closeStatMonitor(); + EnvironmentUtils.closeMemControl(); + CLUSTER_CONFIG.createAllPath(); + server = Server.getInstance(); + + server.start(); + EnvironmentUtils.envSetUp(); + Class.forName(Config.JDBC_DRIVER_NAME); + } + + @After + public void tearDown() throws Exception { + server.stop(); + QPExecutorUtils.setLocalNodeAddr(localNode.getIp(), localNode.getPort()); + EnvironmentUtils.cleanEnv(); + } + + + @Test + public void test() throws ClassNotFoundException, SQLException { + insertSQL(); + + lastAggreWithSingleFilterTest(); + meanAggreWithSingleFilterTest(); + sumAggreWithSingleFilterTest(); + firstAggreWithSingleFilterTest(); + countAggreWithSingleFilterTest(); + minMaxTimeAggreWithSingleFilterTest(); + minValueAggreWithSingleFilterTest(); + maxValueAggreWithSingleFilterTest(); + + lastAggreWithMultiFilterTest(); + countAggreWithMultiFilterTest(); + minTimeAggreWithMultiFilterTest(); + maxTimeAggreWithMultiFilterTest(); + minValueAggreWithMultiFilterTest(); + maxValueAggreWithMultiFilterTest(); + meanAggreWithMultiFilterTest(); + sumAggreWithMultiFilterTest(); + firstAggreWithMultiFilterTest(); + } + + @Test + @Ignore + public void remoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + insertSQL(); + + lastAggreWithSingleFilterTest(); + meanAggreWithSingleFilterTest(); + sumAggreWithSingleFilterTest(); + firstAggreWithSingleFilterTest(); + countAggreWithSingleFilterTest(); + minMaxTimeAggreWithSingleFilterTest(); + minValueAggreWithSingleFilterTest(); + maxValueAggreWithSingleFilterTest(); + + lastAggreWithMultiFilterTest(); + countAggreWithMultiFilterTest(); + minTimeAggreWithMultiFilterTest(); + maxTimeAggreWithMultiFilterTest(); + minValueAggreWithMultiFilterTest(); + maxValueAggreWithMultiFilterTest(); +// meanAggreWithMultiFilterTest(); + sumAggreWithMultiFilterTest(); + firstAggreWithMultiFilterTest(); + } + + private void lastAggreWithMultiFilterTest() throws SQLException { + String[] retArray = new String[]{ + "0,9,39,63.0,E,true" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select last(s0),last(s1),last(s2),last(s3),last(s4)" + + " from root.vehicle.d0 where s1 >= 0"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + + resultSet.getString(Constant.last(d0s0)) + "," + resultSet + .getString(Constant.last(d0s1)) + + "," + resultSet.getString(Constant.last(d0s2)) + "," + + resultSet.getString(Constant.last(d0s3)) + "," + resultSet + .getString(Constant.last(d0s4)); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void lastAggreWithSingleFilterTest() throws SQLException { + String[] retArray = new String[]{ + "0,9,39,63.0" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select last(s0),last(s1),last(s2)" + + " from root.vehicle.d0 where s1 >= 0"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + + resultSet.getString(Constant.last(d0s0)) + "," + + resultSet.getString(Constant.last(d0s1)) + "," + + resultSet.getString(Constant.last(d0s2)); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void sumAggreWithSingleFilterTest() throws SQLException { + String[] retArray = new String[]{ + "0,55061.0,156752.0,20254" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select sum(s0),sum(s1),sum(s2)" + + " from root.vehicle.d0 where s1 >= 0"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(sum(d0s0)) + "," + + resultSet.getString(sum(d0s1)) + "," + Math + .round(resultSet.getDouble(Constant.sum(d0s2))); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void firstAggreWithSingleFilterTest() throws SQLException { + String[] retArray = new String[]{ + "0,90,1101,2.22,ddddd,true" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select first(s0),first(s1),first(s2),first(s3)," + + "first(s4) from root.vehicle.d0 where s1 >= 0"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + + resultSet.getString(Constant.first(d0s0)) + "," + + resultSet.getString(Constant.first(d0s1)) + "," + + resultSet.getString(Constant.first(d0s2)) + + "," + resultSet.getString(Constant.first(d0s3)) + "," + + resultSet.getString(Constant.first(d0s4)); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void meanAggreWithSingleFilterTest() throws SQLException { + String[] retArray = new String[]{ + "0,75,212,28" + }; + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select mean(s0),mean(s1),mean(s2) from root.vehicle.d0 where s1 >= 0"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = + resultSet.getString(TIMESTAMP_STR) + "," + Math.round(resultSet.getDouble(mean(d0s0))) + + "," + Math.round(resultSet.getDouble(mean(d0s1))) + "," + + Math.round(resultSet.getDouble(mean(d0s2))); + //System.out.println("!!!!!============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void countAggreWithSingleFilterTest() throws SQLException { + String[] retArray = new String[]{ + "0,733,740,734" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select count(s0),count(s1),count(s2) from root.vehicle.d0 where s1 >= 0"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(count(d0s0)) + + "," + resultSet.getString(count(d0s1)) + "," + resultSet.getString(count(d0s2)); + //System.out.println("!!!!!============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void minMaxTimeAggreWithSingleFilterTest() throws SQLException { + String[] retArray = new String[]{ + "0,104,1,2,101,100" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select min_time(s0),min_time(s1),min_time(s2),min_time(s3),min_time(s4)" + + " from root.vehicle.d0 where s1 >= 0"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + + resultSet.getString(Constant.min_time(d0s0)) + "," + + resultSet.getString(Constant.min_time(d0s1)) + "," + + resultSet.getString(Constant.min_time(d0s2)) + + "," + resultSet.getString(Constant.min_time(d0s3)) + + "," + resultSet.getString(Constant.min_time(d0s4)); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + + retArray = new String[]{ + "0,3999,3999,3999,3599,100" + }; + statement = connection.createStatement(); + hasResultSet = statement.execute("select max_time(s0),max_time(s1),max_time(s2)," + + "max_time(s3),max_time(s4) from root.vehicle.d0 " + + "where s1 < 50000 and s1 != 100"); + Assert.assertTrue(hasResultSet); + resultSet = statement.getResultSet(); + cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(max_time(d0s0)) + + "," + resultSet.getString(max_time(d0s1)) + "," + resultSet.getString(max_time(d0s2)) + + "," + resultSet.getString(max_time(d0s3)) + "," + resultSet.getString(max_time(d0s4)); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void minValueAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,0,0,0.0,B,true" + }; + + Connection connection = null; + try { + connection = DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select min_value(s0),min_value(s1),min_value(s2)," + + "min_value(s3),min_value(s4) from root.vehicle.d0 " + + "where s1 < 50000 and s1 != 100"); + + if (hasResultSet) { + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = + resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(min_value(d0s0)) + + "," + resultSet.getString(min_value(d0s1)) + "," + resultSet + .getString(min_value(d0s2)) + + "," + resultSet.getString(min_value(d0s3)) + "," + resultSet + .getString(min_value(d0s4)); + //System.out.println("============ " + ans); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + } + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void maxValueAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,99,40000,122.0,fffff,true" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select max_value(s0),max_value(s1),max_value(s2)," + + "max_value(s3),max_value(s4) from root.vehicle.d0 " + + "where s1 < 50000 and s1 != 100"); + + if (hasResultSet) { + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = + resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(max_value(d0s0)) + + "," + resultSet.getString(max_value(d0s1)) + "," + resultSet + .getString(max_value(d0s2)) + + "," + resultSet.getString(max_value(d0s3)) + "," + resultSet + .getString(max_value(d0s4)); + //System.out.println("============ " + ans); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + } + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void meanAggreWithMultiFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,55061.0,733,75,212,28" + }; + + try(Connection connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root")){ + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select sum(s0),count(s0),mean(s0),mean(s1)," + + "mean(s2) from root.vehicle.d0 " + + "where s1 >= 0 or s2 < 10"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = + resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(sum(d0s0)) + "," + + resultSet.getString(count(d0s0)) + "," + Math.round(resultSet.getDouble(mean(d0s0))) + + "," + + Math.round(resultSet.getDouble(mean(d0s1))) + "," + Math + .round(resultSet.getDouble(mean(d0s2))); + System.out.println("!!!!!============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + private void sumAggreWithMultiFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,55061.0,156752.0,20262" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select sum(s0),sum(s1),sum(s2) from root.vehicle.d0" + + " where s1 >= 0 or s2 < 10"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(sum(d0s0)) + + "," + resultSet.getString(sum(d0s1)) + "," + Math + .round(resultSet.getDouble(sum(d0s2))); + //String ans = resultSet.getString(sum(d0s3)); + //System.out.println("!!!!!============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void firstAggreWithMultiFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,90,1101,2.22,ddddd,true" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select first(s0),first(s1),first(s2),first(s3)," + + "first(s4) from root.vehicle.d0 where s1 >= 0 or s2 < 10"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first(d0s0)) + + "," + resultSet.getString(first(d0s1)) + "," + resultSet.getString(first(d0s2)) + + "," + resultSet.getString(first(d0s3)) + "," + resultSet.getString(first(d0s4)); + //String ans = resultSet.getString(first(d0s3)); + //System.out.println("!!!!!============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void countAggreWithMultiFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,733,740,736,482,1" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select count(s0),count(s1),count(s2),count(s3)," + + "count(s4) from root.vehicle.d0 where s1 >= 0 or s2 < 10"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(count(d0s0)) + + "," + resultSet.getString(count(d0s1)) + "," + resultSet.getString(count(d0s2)) + + "," + resultSet.getString(count(d0s3)) + "," + resultSet.getString(count(d0s4)); + //String ans = resultSet.getString(count(d0s3)); + //System.out.println("!!!!!============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void minTimeAggreWithMultiFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,104,1,2,101,100" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select min_time(s0),min_time(s1),min_time(s2)," + + "min_time(s3),min_time(s4) from root.vehicle.d0 where s1 >= 0"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + + resultSet.getString(Constant.min_time(d0s0)) + "," + + resultSet.getString(Constant.min_time(d0s1)) + "," + + resultSet.getString(Constant.min_time(d0s2)) + "," + + resultSet.getString(Constant.min_time(d0s3)) + "," + + resultSet.getString(Constant.min_time(d0s4)); + // System.out.println("============ " + ans); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void maxTimeAggreWithMultiFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,3999,3999,3999,3599,100" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select max_time(s0),max_time(s1),max_time(s2)," + + "max_time(s3),max_time(s4) from root.vehicle.d0 " + + "where s1 < 50000 and s1 != 100"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(max_time(d0s0)) + + "," + resultSet.getString(max_time(d0s1)) + "," + resultSet.getString(max_time(d0s2)) + + "," + resultSet.getString(max_time(d0s3)) + "," + resultSet.getString(max_time(d0s4)); + //System.out.println("============ " + ans); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void minValueAggreWithMultiFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,0,0,0.0,B,true" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select min_value(s0),min_value(s1),min_value(s2)," + + "min_value(s3),min_value(s4) from root.vehicle.d0 " + + "where s1 < 50000 and s1 != 100"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(min_value(d0s0)) + + "," + resultSet.getString(min_value(d0s1)) + "," + resultSet + .getString(min_value(d0s2)) + + "," + resultSet.getString(min_value(d0s3)) + "," + resultSet + .getString(min_value(d0s4)); + //System.out.println("============ " + ans); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private void maxValueAggreWithMultiFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,99,40000,122.0,fffff,true" + }; + + Connection connection = null; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select max_value(s0),max_value(s1),max_value(s2)," + + "max_value(s3),max_value(s4) from root.vehicle.d0 where s1 < 50000 and s1 != 100"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(max_value(d0s0)) + + "," + resultSet.getString(max_value(d0s1)) + "," + resultSet + .getString(max_value(d0s2)) + + "," + resultSet.getString(max_value(d0s3)) + "," + resultSet + .getString(max_value(d0s4)); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } + + private static String[] stringValue = new String[]{"A", "B", "C", "D", "E"}; + + private static void insertSQL() throws SQLException { + Connection connection = null; + double d0s0sum = 0.0, d0s1sum = 0.0, d0s2sum = 0.0; + int cnt = 0; + try { + connection = DriverManager. + getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root"); + Statement statement = connection.createStatement(); + for (String sql : createSql) { + statement.execute(sql); + } + + // insert large amount of data + for (int time = 3000; time < 3600; time++) { + if (time % 5 == 0) { + continue; + } + + String sql = String.format("insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", + time, time % 100); + statement.execute(sql); + sql = String.format("insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", + time, time % 17); + statement.execute(sql); + sql = String.format("insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", + time, time % 22); + statement.execute(sql); + sql = String.format("insert into root.vehicle.d0(timestamp,s3) values(%s,'%s')", + time, stringValue[time % 5]); + statement.execute(sql); + cnt++; + d0s0sum += time % 100; + d0s1sum += time % 17; + d0s2sum += time % 22; + } + + statement.execute("flush"); + System.out.println("cnt = " + cnt); + + // insert large amount of data + for (int time = 3700; time < 4000; time++) { + if (time % 6 == 0) { + continue; + } + + String sql = String.format("insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", + time, time % 70); + statement.execute(sql); + sql = String.format("insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", + time, time % 40); + statement.execute(sql); + sql = String.format("insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", + time, time % 123); + statement.execute(sql); + + cnt++; + d0s0sum += time % 70; + d0s1sum += time % 40; + d0s2sum += time % 123; + } + + statement.execute("merge"); + + System.out.println("large insert cnt = " + cnt); + System.out + .println("d0s0sum = " + d0s0sum + "; d0s1sum = " + d0s1sum + "; d0s2sum = " + d0s2sum); + for (String sql : insertSql) { + statement.execute(sql); + } + + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } finally { + if (connection != null) { + connection.close(); + } + } + } +} diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBAggregationSmallDataIT.java b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBAggregationSmallDataIT.java new file mode 100644 index 0000000..02dc01f --- /dev/null +++ b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBAggregationSmallDataIT.java @@ -0,0 +1,760 @@ +/** + * 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.cluster.integration; + +import static org.apache.iotdb.cluster.integration.Constant.count; +import static org.apache.iotdb.cluster.integration.Constant.first; +import static org.apache.iotdb.cluster.integration.Constant.last; +import static org.apache.iotdb.cluster.integration.Constant.max_time; +import static org.apache.iotdb.cluster.integration.Constant.max_value; +import static org.apache.iotdb.cluster.integration.Constant.mean; +import static org.apache.iotdb.cluster.integration.Constant.min_time; +import static org.apache.iotdb.cluster.integration.Constant.min_value; +import static org.apache.iotdb.cluster.integration.Constant.sum; +import static org.apache.iotdb.cluster.utils.Utils.insertData; +import static org.junit.Assert.fail; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import org.apache.iotdb.cluster.config.ClusterConfig; +import org.apache.iotdb.cluster.config.ClusterDescriptor; +import org.apache.iotdb.cluster.entity.Server; +import org.apache.iotdb.cluster.utils.EnvironmentUtils; +import org.apache.iotdb.cluster.utils.QPExecutorUtils; +import org.apache.iotdb.cluster.utils.hash.PhysicalNode; +import org.apache.iotdb.jdbc.Config; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +/** + * Multiple aggregation with filter test. + */ +public class IoTDBAggregationSmallDataIT { + + private Server server; + private static final ClusterConfig CLUSTER_CONFIG = ClusterDescriptor.getInstance().getConfig(); + private static final PhysicalNode localNode = new PhysicalNode(CLUSTER_CONFIG.getIp(), + CLUSTER_CONFIG.getPort()); + + private static final String TIMESTAMP_STR = "Time"; + private final String d0s0 = "root.vehicle.d0.s0"; + private final String d0s1 = "root.vehicle.d0.s1"; + private final String d0s2 = "root.vehicle.d0.s2"; + private final String d0s3 = "root.vehicle.d0.s3"; + private final String d0s4 = "root.vehicle.d0.s4"; + private final String d1s0 = "root.vehicle.d1.s0"; + private final String d1s1 = "root.vehicle.d1.s1"; + + private static String[] createSqls = new String[]{ + "SET STORAGE GROUP TO root.vehicle", + "CREATE TIMESERIES root.vehicle.d1.s0 WITH DATATYPE=INT32, ENCODING=RLE", + "CREATE TIMESERIES root.vehicle.d1.s1 WITH DATATYPE=INT64, ENCODING=RLE", + + "CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=INT32, ENCODING=RLE", + "CREATE TIMESERIES root.vehicle.d0.s1 WITH DATATYPE=INT64, ENCODING=RLE", + "CREATE TIMESERIES root.vehicle.d0.s2 WITH DATATYPE=FLOAT, ENCODING=RLE", + "CREATE TIMESERIES root.vehicle.d0.s3 WITH DATATYPE=TEXT, ENCODING=PLAIN", + "CREATE TIMESERIES root.vehicle.d0.s4 WITH DATATYPE=BOOLEAN, ENCODING=PLAIN"}; + private static String[] insertSqls = new String[]{ + + "insert into root.vehicle.d0(timestamp,s0) values(1,101)", + "insert into root.vehicle.d0(timestamp,s0) values(2,198)", + "insert into root.vehicle.d0(timestamp,s0) values(100,99)", + "insert into root.vehicle.d0(timestamp,s0) values(101,99)", + "insert into root.vehicle.d0(timestamp,s0) values(102,80)", + "insert into root.vehicle.d0(timestamp,s0) values(103,99)", + "insert into root.vehicle.d0(timestamp,s0) values(104,90)", + "insert into root.vehicle.d0(timestamp,s0) values(105,99)", + "insert into root.vehicle.d0(timestamp,s0) values(106,99)", + "insert into root.vehicle.d0(timestamp,s0) values(2,10000)", + "insert into root.vehicle.d0(timestamp,s0) values(50,10000)", + "insert into root.vehicle.d0(timestamp,s0) values(1000,22222)", + "insert into root.vehicle.d0(timestamp,s0) values(106,199)", + "DELETE FROM root.vehicle.d0.s0 WHERE time < 104", + + "insert into root.vehicle.d0(timestamp,s1) values(1,1101)", + "insert into root.vehicle.d0(timestamp,s1) values(2,198)", + "insert into root.vehicle.d0(timestamp,s1) values(100,199)", + "insert into root.vehicle.d0(timestamp,s1) values(101,199)", + "insert into root.vehicle.d0(timestamp,s1) values(102,180)", + "insert into root.vehicle.d0(timestamp,s1) values(103,199)", + "insert into root.vehicle.d0(timestamp,s1) values(104,190)", + "insert into root.vehicle.d0(timestamp,s1) values(105,199)", + "insert into root.vehicle.d0(timestamp,s1) values(2,40000)", + "insert into root.vehicle.d0(timestamp,s1) values(50,50000)", + "insert into root.vehicle.d0(timestamp,s1) values(1000,55555)", + + "insert into root.vehicle.d0(timestamp,s2) values(1000,55555)", + "insert into root.vehicle.d0(timestamp,s2) values(2,2.22)", + "insert into root.vehicle.d0(timestamp,s2) values(3,3.33)", + "insert into root.vehicle.d0(timestamp,s2) values(4,4.44)", + "insert into root.vehicle.d0(timestamp,s2) values(102,10.00)", + "insert into root.vehicle.d0(timestamp,s2) values(105,11.11)", + "insert into root.vehicle.d0(timestamp,s2) values(1000,1000.11)", + + "insert into root.vehicle.d0(timestamp,s3) values(60,'aaaaa')", + "insert into root.vehicle.d0(timestamp,s3) values(70,'bbbbb')", + "insert into root.vehicle.d0(timestamp,s3) values(80,'ccccc')", + "insert into root.vehicle.d0(timestamp,s3) values(101,'ddddd')", + "insert into root.vehicle.d0(timestamp,s3) values(102,'fffff')", + + "insert into root.vehicle.d1(timestamp,s0) values(1,999)", + "insert into root.vehicle.d1(timestamp,s0) values(1000,888)", + + "insert into root.vehicle.d0(timestamp,s1) values(2000-01-01T08:00:00+08:00, 100)", + "insert into root.vehicle.d0(timestamp,s3) values(2000-01-01T08:00:00+08:00, 'good')", + + "insert into root.vehicle.d0(timestamp,s4) values(100, false)", + "insert into root.vehicle.d0(timestamp,s4) values(100, true)" + }; + + @Before + public void setUp() throws Exception { + EnvironmentUtils.closeStatMonitor(); + EnvironmentUtils.closeMemControl(); + CLUSTER_CONFIG.createAllPath(); + server = Server.getInstance(); + server.start(); + EnvironmentUtils.envSetUp(); + Class.forName(Config.JDBC_DRIVER_NAME); + insertSQL(); + } + + @After + public void tearDown() throws Exception { + server.stop(); + QPExecutorUtils.setLocalNodeAddr(localNode.getIp(), localNode.getPort()); + EnvironmentUtils.cleanEnv(); + } + + @Test + public void countOnlyTimeFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,3,7,4,5,1" + }; + + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select count(s0),count(s1),count(s2),count(s3),count(s4) " + + "from root.vehicle.d0 where time >= 3 and time <= 106"); + + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(count(d0s0)) + + "," + resultSet.getString(count(d0s1)) + "," + resultSet.getString(count(d0s2)) + + "," + resultSet.getString(count(d0s3)) + "," + resultSet.getString(count(d0s4)); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void countOnlyTimeFilterRemoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + countOnlyTimeFilterTest(); + } + + @Test + public void functionsNoFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,4,0,6,1", + "0,22222,null,good", + "0,90,null,aaaaa", + "0,22222,null,good", + "0,22610.0,0.0" + }; + + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + + //select count(d0.s0),count(d1.s1),count(d0.s3),count(d0.s4) from root.vehicle + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select count(d0.s0),count(d1.s1),count(d0.s3),count(d0.s4) from root.vehicle"); + + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(count(d0s0)) + + "," + resultSet.getString(count(d1s1)) + "," + resultSet.getString(count(d0s3)) + + "," + resultSet.getString(count(d0s4)); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + + //select max_value(d0.s0),max_value(d1.s1),max_value(d0.s3) from root.vehicle + statement = connection.createStatement(); + hasResultSet = statement.execute( + "select max_value(d0.s0),max_value(d1.s1),max_value(d0.s3) from root.vehicle"); + resultSet = statement.getResultSet(); + Assert.assertTrue(hasResultSet); + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(max_value(d0s0)) + + "," + resultSet.getString(max_value(d1s1)) + "," + + resultSet.getString(max_value(d0s3)); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(2, cnt); + statement.close(); + + //select first(d0.s0),first(d1.s1),first(d0.s3) from root.vehicle + statement = connection.createStatement(); + hasResultSet = statement.execute( + "select first(d0.s0),first(d1.s1),first(d0.s3) from root.vehicle"); + resultSet = statement.getResultSet(); + Assert.assertTrue(hasResultSet); + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first(d0s0)) + + "," + resultSet.getString(first(d1s1)) + "," + resultSet.getString(first(d0s3)); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(3, cnt); + statement.close(); + + //select last(d0.s0),last(d1.s1),last(d0.s3) from root.vehicle + statement = connection.createStatement(); + hasResultSet = statement.execute( + "select last(d0.s0),last(d1.s1),last(d0.s3) from root.vehicle"); + resultSet = statement.getResultSet(); + Assert.assertTrue(hasResultSet); + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last(d0s0)) + + "," + resultSet.getString(last(d1s1)) + "," + resultSet.getString(last(d0s3)); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(4, cnt); + statement.close(); + + //select sum(d0.s0),sum(d1.s1),sum(d0.s3) from root.vehicle + statement = connection.createStatement(); + hasResultSet = statement.execute("select sum(d0.s0),sum(d1.s1) from root.vehicle"); + resultSet = statement.getResultSet(); + Assert.assertTrue(hasResultSet); + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(sum(d0s0)) + + "," + resultSet.getString(sum(d1s1)); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(5, cnt); + statement.close(); + + + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void functionsNoFilterRemoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + functionsNoFilterTest(); + } + + @Test + public void lastAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,22222,55555" + }; + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select last(s0),last(s1) from root.vehicle.d0 where s2 >= 3.33"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = + resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last(d0s0)) + "," + + resultSet.getString(last(d0s1)); + //System.out.println("!!!!!============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void lastAggreWithSingleFilterRemoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + lastAggreWithSingleFilterTest(); + } + + @Test + public void firstAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,99,180" + }; + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select first(s0),first(s1) from root.vehicle.d0 where s2 >= 3.33"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = + resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first(d0s0)) + "," + + resultSet.getString(first(d0s1)); + //System.out.println("!!!!!============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void firstAggreWithSingleFilterRemoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + firstAggreWithSingleFilterTest(); + } + + @Test + public void sumAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,22321.0,55934.0,1029" + }; + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select sum(s0),sum(s1),sum(s2) from root.vehicle.d0 where s2 >= 3.33"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(sum(d0s0)) + + "," + resultSet.getString(sum(d0s1)) + "," + Math + .round(resultSet.getDouble(sum(d0s2))); + //System.out.println("!!!!!============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void sumAggreWithSingleFilterRemoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + sumAggreWithSingleFilterTest(); + } + + @Test + public void meanAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,11160.5,18645,206" + }; + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select mean(s0),mean(s1),mean(s2) from root.vehicle.d0 where s2 >= 3.33"); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(mean(d0s0)) + + "," + Math.round(resultSet.getDouble(mean(d0s1))) + "," + + Math.round(resultSet.getDouble(mean(d0s2))); + //System.out.println("!!!!!============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void meanAggreWithSingleFilterRemoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + meanAggreWithSingleFilterTest(); + } + + @Test + public void countAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,2,3,5,1,0" + }; + + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select count(s0),count(s1),count(s2),count(s3)," + + "count(s4) from root.vehicle.d0 where s2 >= 3.33"); + // System.out.println(hasResultSet + "..."); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(count(d0s0)) + + "," + resultSet.getString(count(d0s1)) + "," + resultSet.getString(count(d0s2)) + + "," + resultSet.getString(count(d0s3)) + "," + resultSet.getString(count(d0s4)); + // System.out.println("============ " + ans); + Assert.assertEquals(retArray[cnt], ans); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void countAggreWithSingleFilterRemoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + countAggreWithSingleFilterTest(); + } + + @Test + public void minTimeAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,104,1,2,101,100" + }; + + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select min_time(s0),min_time(s1),min_time(s2)" + + ",min_time(s3),min_time(s4) from root.vehicle.d0 " + + "where s1 < 50000 and s1 != 100"); + + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(min_time(d0s0)) + + "," + resultSet.getString(min_time(d0s1)) + "," + resultSet.getString(min_time(d0s2)) + + "," + resultSet.getString(min_time(d0s3)) + "," + resultSet.getString(min_time(d0s4)); + // System.out.println("============ " + ans); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + Assert.assertEquals(1, cnt); + } + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void minTimeAggreWithSingleFilterRemoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + minTimeAggreWithSingleFilterTest(); + } + + @Test + public void maxTimeAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,105,105,105,102,100" + }; + + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select max_time(s0),max_time(s1),max_time(s2)" + + ",max_time(s3),max_time(s4) from root.vehicle.d0 " + + "where s1 < 50000 and s1 != 100"); + + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(max_time(d0s0)) + + "," + resultSet.getString(max_time(d0s1)) + "," + resultSet.getString(max_time(d0s2)) + + "," + resultSet.getString(max_time(d0s3)) + "," + resultSet.getString(max_time(d0s4)); + // System.out.println("============ " + ans); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void maxTimeAggreWithSingleFilterRemoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + maxTimeAggreWithSingleFilterTest(); + } + + @Test + public void minValueAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,90,180,2.22,ddddd,true" + }; + + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select min_value(s0),min_value(s1),min_value(s2)" + + ",min_value(s3),min_value(s4) from root.vehicle.d0 " + + "where s1 < 50000 and s1 != 100"); + Assert.assertTrue(hasResultSet); + + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(min_value(d0s0)) + + "," + resultSet.getString(min_value(d0s1)) + + "," + resultSet.getString(min_value(d0s2)) + + "," + resultSet.getString(min_value(d0s3)) + "," + + resultSet.getString(min_value(d0s4)); + // System.out.println("============ " + ans); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void minValueAggreWithSingleFilterRemoteTest() + throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + minValueAggreWithSingleFilterTest(); + } + + @Test + public void maxValueAggreWithSingleFilterTest() throws ClassNotFoundException, SQLException { + String[] retArray = new String[]{ + "0,99,50000,11.11,fffff,true" + }; + + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select max_value(s0),max_value(s1),max_value(s2)," + + "max_value(s3),max_value(s4) from root.vehicle.d0 " + + "where s1 < 50000 and s1 != 100"); + + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(max_value(d0s0)) + + "," + resultSet.getString(max_value(d0s1)) + "," + resultSet + .getString(max_value(d0s2)) + + "," + resultSet.getString(max_value(d0s3)) + "," + resultSet + .getString(max_value(d0s4)); + //System.out.println("============ " + ans); + //Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void maxValueAggreWithSingleFilterRemoteTest() + throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + maxValueAggreWithSingleFilterTest(); + } + + @Test + public void countAggreWithMultiMultiFilterTest() { + String[] retArray = new String[]{ + "0,2", + }; + + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute( + "select count(s0) from root.vehicle.d0 where s2 >= 3.33"); + // System.out.println(hasResultSet + "..."); + Assert.assertTrue(hasResultSet); + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(count(d0s0)); + //System.out.println("============ " + ans); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void countAggreWithMultiMultiFilterRemoteTest() + throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + countAggreWithMultiMultiFilterTest(); + } + + @Test + public void selectAllSQLTest() throws ClassNotFoundException, SQLException { + //d0s0,d0s1,d0s2,d0s3,d1s0 + String[] retArray = new String[]{ + "1,null,1101,null,null,999", + "2,null,40000,2.22,null,null", + "3,null,null,3.33,null,null", + "4,null,null,4.44,null,null", + "50,null,50000,null,null,null", + "60,null,null,null,aaaaa,null", + "70,null,null,null,bbbbb,null", + "80,null,null,null,ccccc,null", + "100,null,199,null,null,null", + "101,null,199,null,ddddd,null", + "102,null,180,10.0,fffff,null", + "103,null,199,null,null,null", + "104,90,190,null,null,null", + "105,99,199,11.11,null,null", + "106,199,null,null,null,null", + "1000,22222,55555,1000.11,null,888", + "946684800000,null,100,null,good,null" + }; + + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + Statement statement = connection.createStatement(); + boolean hasResultSet = statement.execute("select * from root"); + // System.out.println(hasResultSet + "..."); + if (hasResultSet) { + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(d0s0) + "," + + resultSet.getString(d0s1) + "," + resultSet.getString(d0s2) + "," + + resultSet.getString(d0s3) + "," + resultSet.getString(d1s0); + // System.out.println(ans); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(17, cnt); + } + statement.close(); + + retArray = new String[]{ + "100,true" + }; + statement = connection.createStatement(); + hasResultSet = statement.execute("select s4 from root.vehicle.d0"); + if (hasResultSet) { + ResultSet resultSet = statement.getResultSet(); + int cnt = 0; + while (resultSet.next()) { + String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(d0s4); + Assert.assertEquals(ans, retArray[cnt]); + cnt++; + } + Assert.assertEquals(1, cnt); + } + statement.close(); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test + @Ignore + public void selectAllSQLRemoteTest() throws ClassNotFoundException, SQLException { + QPExecutorUtils.setLocalNodeAddr("0.0.0.0", 0); + selectAllSQLTest(); + } + + private static void insertSQL() { + try (Connection connection = DriverManager.getConnection + (Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root")) { + insertData(connection, createSqls, insertSqls); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + +} + diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBFillQueryIT.java b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBFillQueryIT.java index ba8746d..f78c39a 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBFillQueryIT.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBFillQueryIT.java @@ -110,7 +110,6 @@ public class IoTDBFillQueryIT { @Before public void setUp() throws Exception { - EnvironmentUtils.cleanEnv(); EnvironmentUtils.closeStatMonitor(); EnvironmentUtils.closeMemControl(); CLUSTER_CONFIG.createAllPath(); diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBMetadataFetchLocallyIT.java b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBMetadataFetchLocallyIT.java index a007582..f662307 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBMetadataFetchLocallyIT.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBMetadataFetchLocallyIT.java @@ -37,7 +37,6 @@ public class IoTDBMetadataFetchLocallyIT extends IoTDBMetadataFetchAbstract{ @Before public void setUp() throws Exception { - EnvironmentUtils.cleanEnv(); EnvironmentUtils.closeStatMonitor(); EnvironmentUtils.closeMemControl(); config.createAllPath(); diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBQueryIT.java b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBQueryIT.java index 90d4474..5be3cbc 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBQueryIT.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBQueryIT.java @@ -126,7 +126,6 @@ public class IoTDBQueryIT { @Before public void setUp() throws Exception { - EnvironmentUtils.cleanEnv(); EnvironmentUtils.closeStatMonitor(); EnvironmentUtils.closeMemControl(); CLUSTER_CONFIG.createAllPath(); diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBQueryLargeDataIT.java b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBQueryLargeDataIT.java index 926d8a7..b40de2d 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBQueryLargeDataIT.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/integration/IoTDBQueryLargeDataIT.java @@ -43,7 +43,6 @@ import org.junit.Test; public class IoTDBQueryLargeDataIT { - private Server server; private static final ClusterConfig CLUSTER_CONFIG = ClusterDescriptor.getInstance().getConfig(); private static final PhysicalNode localNode = new PhysicalNode(CLUSTER_CONFIG.getIp(), @@ -176,7 +175,6 @@ public class IoTDBQueryLargeDataIT { @Before public void setUp() throws Exception { - EnvironmentUtils.cleanEnv(); EnvironmentUtils.closeStatMonitor(); EnvironmentUtils.closeMemControl(); CLUSTER_CONFIG.createAllPath(); diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/utils/RaftUtilsTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/utils/RaftUtilsTest.java index e7a4201..787bf47 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/utils/RaftUtilsTest.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/utils/RaftUtilsTest.java @@ -60,15 +60,16 @@ public class RaftUtilsTest { private ClusterConfig config = ClusterDescriptor.getInstance().getConfig(); private String[] ipListOld; + private int portOld; private int replicatorOld; private int numOfVirtualNodesOld; - private int PORT = 7777; + private int port = 7777; private String[] ipList = { - "192.168.130.4:" + PORT, - "192.168.130.5:" + PORT, - "192.168.130.2:" + PORT, - "192.168.130.1:" + PORT, - "192.168.130.3:" + PORT + "192.168.130.4:" + port, + "192.168.130.5:" + port, + "192.168.130.2:" + port, + "192.168.130.1:" + port, + "192.168.130.3:" + port }; private int replicator = 3; @@ -124,11 +125,12 @@ public class RaftUtilsTest { Mockito.doNothing().when(response).addResult(any(boolean.class)); Mockito.doNothing().when(response).setErrorMsg(any(String.class)); ipListOld = config.getNodes(); + portOld = config.getPort(); replicatorOld = config.getReplication(); numOfVirtualNodesOld = config.getNumOfVirtualNodes(); int numOfVirtualNodes = 2; - config.setPort(PORT); + config.setPort(port); config.setNodes(ipList); config.setReplication(replicator); config.setNumOfVirtualNodes(numOfVirtualNodes); @@ -138,8 +140,9 @@ public class RaftUtilsTest { } @After - public void tearDown() throws Exception { + public void tearDown() { peerIds.clear(); + config.setPort(portOld); config.setNodes(ipListOld); config.setReplication(replicatorOld); config.setNumOfVirtualNodes(numOfVirtualNodesOld); diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/utils/Utils.java b/cluster/src/test/java/org/apache/iotdb/cluster/utils/Utils.java index f080a9d..0bb3c08 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/utils/Utils.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/utils/Utils.java @@ -26,6 +26,11 @@ import java.sql.SQLException; import java.sql.Statement; public class Utils { + + private Utils() { + + } + public static String getCurrentPath(String... command) throws IOException { ProcessBuilder builder = new ProcessBuilder(command); builder.redirectErrorStream(true); diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java index 516abdc..1abc553 100644 --- a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java +++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenode/FileNodeManager.java @@ -551,6 +551,9 @@ public class FileNodeManager implements IStatistic, IService { try { fileNodeProcessor.delete(deviceId, measurementId, timestamp); } catch (IOException e) { + System.out.println(deviceId); + System.out.println(measurementId); + System.out.println(timestamp); throw new FileNodeManagerException(e); } // change the type of tsfile to overflowed
