You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hx...@apache.org on 2021/05/08 01:54:59 UTC
[iotdb] 01/01: merge master
This is an automated email from the ASF dual-hosted git repository.
hxd pushed a commit to branch test_container
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 93f0c09d70460f945f536c63baf4a5504b39a6a7
Merge: 4f76062 8907772
Author: xiangdong huang <sa...@gmail.com>
AuthorDate: Sat May 8 09:51:24 2021 +0800
merge master
LICENSE-binary | 4 ++--
.../org/apache/iotdb/cluster/query/last/ClusterLastQueryExecutor.java | 1 +
testcontainer/src/test/java/org/apache/iotdb/db/sql/ClusterIT.java | 1 -
3 files changed, 3 insertions(+), 3 deletions(-)
diff --cc testcontainer/src/test/java/org/apache/iotdb/db/sql/ClusterIT.java
index 9345851,79b1292..1084542
--- a/testcontainer/src/test/java/org/apache/iotdb/db/sql/ClusterIT.java
+++ b/testcontainer/src/test/java/org/apache/iotdb/db/sql/ClusterIT.java
@@@ -26,69 -24,122 +26,68 @@@ import org.junit.Before
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.DockerComposeContainer;
-import org.testcontainers.containers.NoProjectNameDockerComposeContainer;
-import org.testcontainers.containers.output.Slf4jLogConsumer;
-import org.testcontainers.containers.wait.strategy.Wait;
-import java.io.File;
-import java.sql.*;
-import java.util.HashSet;
-import java.util.Set;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
-public class ClusterIT {
- private static Logger logger = LoggerFactory.getLogger(ClusterIT.class);
- private static Logger node1Logger = LoggerFactory.getLogger("iotdb-server_1");
- private static Logger node2Logger = LoggerFactory.getLogger("iotdb-server_2");
- private static Logger node3Logger = LoggerFactory.getLogger("iotdb-server_3");
-
- private Statement statement;
- private Connection connection;
-
- // in TestContainer's document, it is @ClassRule, and the environment is `public static`
- // I am not sure the difference now.
- @Rule
- public DockerComposeContainer environment =
- new NoProjectNameDockerComposeContainer(
- "3nodes", new File("src/test/resources/3nodes/docker-compose.yaml"))
- .withExposedService("iotdb-server_1", 6667, Wait.forListeningPort())
- .withLogConsumer("iotdb-server_1", new Slf4jLogConsumer(node1Logger))
- .withExposedService("iotdb-server_2", 6667, Wait.forListeningPort())
- .withLogConsumer("iotdb-server_2", new Slf4jLogConsumer(node2Logger))
- .withExposedService("iotdb-server_3", 6667, Wait.forListeningPort())
- .withLogConsumer("iotdb-server_3", new Slf4jLogConsumer(node3Logger))
- .withLocalCompose(true);
-
- int rpcPort = 6667;
+// do not add tests here.
+// add tests into Cases.java instead.
+public abstract class ClusterIT extends Cases {
- @Before
- public void setUp() throws Exception {
+ private static Logger logger = LoggerFactory.getLogger(ClusterIT.class);
- String ip = environment.getServiceHost("iotdb-server_1", 6667);
- rpcPort = environment.getServicePort("iotdb-server_1", 6667);
+ // "root.sg1" is a special storage for testing whether the read and write operations can be run
+ // correctly if the data is not on the connected node.
+ public String defaultSG = "root.sg1";
- Class.forName(Config.JDBC_DRIVER_NAME);
- connection = DriverManager.getConnection("jdbc:iotdb://" + ip + ":" + rpcPort, "root", "root");
- statement = connection.createStatement();
+ protected int getWriteRpcPort() {
+ return getContainer().getServicePort("iotdb-server_1", 6667);
}
- @After
- public void tearDown() throws Exception {
- statement.close();
- connection.close();
+ protected String getWriteRpcIp() {
+ return getContainer().getServiceHost("iotdb-server_1", 6667);
}
- @Test
- public void testSimplePutAndGet() throws SQLException {
-
- String[] timeSeriesArray = {"root.sg1.aa.bb", "root.sg1.aa.bb.cc", "root.sg1.aa"};
+ protected int[] getReadRpcPorts() {
+ return new int[] {getContainer().getServicePort("iotdb-server_1", 6667)};
+ }
- for (String timeSeries : timeSeriesArray) {
- statement.execute(
- String.format(
- "create timeseries %s with datatype=INT64, encoding=PLAIN, compression=SNAPPY",
- timeSeries));
- }
- ResultSet resultSet = null;
- resultSet = statement.executeQuery("show timeseries");
- Set<String> result = new HashSet<>();
- while (resultSet.next()) {
- result.add(resultSet.getString(1));
- }
- Assert.assertEquals(3, result.size());
- for (String timeseries : timeSeriesArray) {
- Assert.assertTrue(result.contains(timeseries));
- }
+ protected String[] getReadRpcIps() {
+ return new String[] {getContainer().getServiceHost("iotdb-server_1", 6667)};
}
- @Test
- public void testAgg() throws SQLException {
+ protected void startCluster() {}
- String[] timeSeriesArray = {"root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE"};
- String[] initDataArray = {
- "INSERT INTO root.ln.wf01.wt01(timestamp,temperature) values(200,20.71)",
- "INSERT INTO root.ln.wf01.wt01(timestamp,temperature) values(220,50.71)"
- };
+ protected abstract DockerComposeContainer getContainer();
- for (String timeSeries : timeSeriesArray) {
- statement.execute(String.format("create timeseries %s ", timeSeries));
- }
- for (String initData : initDataArray) {
- statement.execute(initData);
+ @Before
+ public void setUp() throws Exception {
+ startCluster();
+
+ Class.forName(Config.JDBC_DRIVER_NAME);
+ writeConnection =
+ DriverManager.getConnection(
+ "jdbc:iotdb://" + getWriteRpcIp() + ":" + getWriteRpcPort(), "root", "root");
+ writeStatement = writeConnection.createStatement();
+
+ int[] readPorts = getReadRpcPorts();
+ String[] readIps = getReadRpcIps();
+ readConnections = new Connection[readPorts.length];
+ readStatements = new Statement[readPorts.length];
+ for (int i = 0; i < readPorts.length; i++) {
+ readConnections[i] =
+ DriverManager.getConnection(
+ "jdbc:iotdb://" + readIps[i] + ":" + readPorts[i], "root", "root");
+ readStatements[i] = readConnections[i].createStatement();
}
- ResultSet resultSet = statement.executeQuery("select avg(temperature) from root.ln.wf01.wt01;");
- Assert.assertTrue(resultSet.next());
- double avg = resultSet.getDouble(1);
- Assert.assertEquals(35.71, avg, 0.1);
- resultSet.close();
}
- @Test
- public void testLast() throws SQLException {
-
- String[] timeSeriesArray = {"root.ln.wf01.wt01.temperature WITH DATATYPE=DOUBLE, ENCODING=RLE"};
- String[] initDataArray = {
- "INSERT INTO root.ln.wf01.wt01(timestamp, temperature) values(100, 10.0)",
- "INSERT INTO root.ln.wf01.wt01(timestamp, temperature) values(200, 20.0)",
- "INSERT INTO root.ln.wf01.wt01(timestamp, temperature) values(150, 15.0)"
- };
-
- for (String timeSeries : timeSeriesArray) {
- statement.execute(String.format("create timeseries %s ", timeSeries));
- }
- for (String initData : initDataArray) {
- statement.execute(initData);
- }
- ResultSet resultSet = statement.executeQuery("select last * from root.ln.wf01.wt01;");
- Assert.assertTrue(resultSet.next());
- double last = Double.parseDouble(resultSet.getString(3));
- Assert.assertEquals(20.0, last, 0.1);
- resultSet.close();
+ @After
+ public void tearDown() throws Exception {
+ super.tearDown();
}
+
+ // do not add tests here.
+ // add tests into Cases.java instead.
-
}