Description
Apache IoTDB is an Open Source IoT database designed to meet the rigorous data, storage, and analytics requirements of large-scale Internet of Things (IoT) and Industrial Internet of Things (IIoT) applications.
Now, IoTDB uses JUnit for its UT/IT test.
However, there are two drawbacks:
1. There are many singleton class instances in IoTDB. Therefore, modifying something in a test may impact others, and it requires us do many cleanup work after a test.
Especially, after we open an serversocket (by Thrift), though we have called the socket.close, the socket may be not closed quickly (controlled by Thrift). But, if the next test begins, then a "the port is already used" error will occur.
2. when testing IoTDB's cluster module, we may need to start at least 3 IoTDB instances in one server.
Using JUnit, the 3 instances will be in one JVM, which is conflicted with the reality "IoTDB has many singleton instances".
So, next, we want to use TestContainer, which is a combiner of Docker and JUnit.
This task is for:
1. using TestContainer to re-implement all IT codes of IoTDB;
2. using TestContainer to add some IT codes for IoTDB's cluster module.
Needed skills:
- Java
- Docker (Docker-Compose better)
- Know or learn Junit and TestContainer
[1] iotdb.apache.org
[2] https://www.testcontainers.org/