<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.

-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.iotdb</groupId>
        <artifactId>iotdb-parent</artifactId>
        <version>2.0.7</version>
    </parent>
    <artifactId>integration-test</artifactId>
    <name>IoTDB: Integration-Test</name>
    <properties>
        <integrationTest.excludedGroups/>
        <integrationTest.forkCount>1</integrationTest.forkCount>
        <integrationTest.includedGroups/>
        <integrationTest.launchNodeInSameJVM>true</integrationTest.launchNodeInSameJVM>
        <integrationTest.nodeMaxHeapSize>200m</integrationTest.nodeMaxHeapSize>
        <integrationTest.nodeNewHeapSize>200m</integrationTest.nodeNewHeapSize>
        <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
        <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
        <integrationTest.dataRegionPerDataNode>0</integrationTest.dataRegionPerDataNode>
        <integrationTest.testEnv/>
        <lightWeightStandaloneMode.configNodeConsensus>Simple</lightWeightStandaloneMode.configNodeConsensus>
        <!-- -DClusterConfigurations values configured here -->
        <lightWeightStandaloneMode.configNodeNumber>1</lightWeightStandaloneMode.configNodeNumber>
        <lightWeightStandaloneMode.dataNodeNumber>1</lightWeightStandaloneMode.dataNodeNumber>
        <lightWeightStandaloneMode.dataRegionConsensus>Simple</lightWeightStandaloneMode.dataRegionConsensus>
        <lightWeightStandaloneMode.dataRegionReplicaNumber>1</lightWeightStandaloneMode.dataRegionReplicaNumber>
        <lightWeightStandaloneMode.schemaRegionConsensus>Simple</lightWeightStandaloneMode.schemaRegionConsensus>
        <lightWeightStandaloneMode.schemaRegionReplicaNumber>1</lightWeightStandaloneMode.schemaRegionReplicaNumber>
        <scalableSingleNodeMode.configNodeConsensus>Ratis</scalableSingleNodeMode.configNodeConsensus>
        <scalableSingleNodeMode.configNodeNumber>1</scalableSingleNodeMode.configNodeNumber>
        <scalableSingleNodeMode.dataNodeNumber>1</scalableSingleNodeMode.dataNodeNumber>
        <scalableSingleNodeMode.dataRegionConsensus>IoT</scalableSingleNodeMode.dataRegionConsensus>
        <scalableSingleNodeMode.dataRegionReplicaNumber>1</scalableSingleNodeMode.dataRegionReplicaNumber>
        <scalableSingleNodeMode.schemaRegionConsensus>Ratis</scalableSingleNodeMode.schemaRegionConsensus>
        <scalableSingleNodeMode.schemaRegionReplicaNumber>1</scalableSingleNodeMode.schemaRegionReplicaNumber>
        <highPerformanceMode.configNodeConsensus>Ratis</highPerformanceMode.configNodeConsensus>
        <highPerformanceMode.configNodeNumber>1</highPerformanceMode.configNodeNumber>
        <highPerformanceMode.dataNodeNumber>3</highPerformanceMode.dataNodeNumber>
        <highPerformanceMode.dataRegionConsensus>IoT</highPerformanceMode.dataRegionConsensus>
        <highPerformanceMode.dataRegionReplicaNumber>2</highPerformanceMode.dataRegionReplicaNumber>
        <highPerformanceMode.schemaRegionConsensus>Ratis</highPerformanceMode.schemaRegionConsensus>
        <highPerformanceMode.schemaRegionReplicaNumber>3</highPerformanceMode.schemaRegionReplicaNumber>
        <strongConsistencyClusterMode.configNodeConsensus>Ratis</strongConsistencyClusterMode.configNodeConsensus>
        <strongConsistencyClusterMode.configNodeNumber>3</strongConsistencyClusterMode.configNodeNumber>
        <strongConsistencyClusterMode.dataNodeNumber>3</strongConsistencyClusterMode.dataNodeNumber>
        <strongConsistencyClusterMode.dataRegionConsensus>Ratis</strongConsistencyClusterMode.dataRegionConsensus>
        <strongConsistencyClusterMode.dataRegionReplicaNumber>3</strongConsistencyClusterMode.dataRegionReplicaNumber>
        <strongConsistencyClusterMode.schemaRegionConsensus>Ratis</strongConsistencyClusterMode.schemaRegionConsensus>
        <strongConsistencyClusterMode.schemaRegionReplicaNumber>3</strongConsistencyClusterMode.schemaRegionReplicaNumber>
        <pipeConsensusBatchMode.configNodeConsensus>Ratis</pipeConsensusBatchMode.configNodeConsensus>
        <pipeConsensusBatchMode.configNodeNumber>1</pipeConsensusBatchMode.configNodeNumber>
        <pipeConsensusBatchMode.dataNodeNumber>3</pipeConsensusBatchMode.dataNodeNumber>
        <pipeConsensusBatchMode.dataRegionConsensus>IoTV2</pipeConsensusBatchMode.dataRegionConsensus>
        <pipeConsensusBatchMode.dataRegionReplicaNumber>2</pipeConsensusBatchMode.dataRegionReplicaNumber>
        <pipeConsensusBatchMode.schemaRegionConsensus>Ratis</pipeConsensusBatchMode.schemaRegionConsensus>
        <pipeConsensusBatchMode.schemaRegionReplicaNumber>3</pipeConsensusBatchMode.schemaRegionReplicaNumber>
        <pipeConsensusStreamMode.configNodeConsensus>Ratis</pipeConsensusStreamMode.configNodeConsensus>
        <pipeConsensusStreamMode.configNodeNumber>1</pipeConsensusStreamMode.configNodeNumber>
        <pipeConsensusStreamMode.dataNodeNumber>3</pipeConsensusStreamMode.dataNodeNumber>
        <pipeConsensusStreamMode.dataRegionConsensus>IoTV2</pipeConsensusStreamMode.dataRegionConsensus>
        <pipeConsensusStreamMode.dataRegionReplicaNumber>2</pipeConsensusStreamMode.dataRegionReplicaNumber>
        <pipeConsensusStreamMode.schemaRegionConsensus>Ratis</pipeConsensusStreamMode.schemaRegionConsensus>
        <pipeConsensusStreamMode.schemaRegionReplicaNumber>3</pipeConsensusStreamMode.schemaRegionReplicaNumber>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>iotdb-server</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>iotdb-session</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>iotdb-jdbc</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>trigger-api</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>isession</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>service-rpc</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>iotdb-thrift-confignode</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>node-commons</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>iotdb-thrift-commons</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tsfile</groupId>
            <artifactId>tsfile</artifactId>
            <version>${tsfile.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>udf-api</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>library-udf</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>iotdb-consensus</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.thrift</groupId>
            <artifactId>libthrift</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.validation</groupId>
            <artifactId>jakarta.validation-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>iotdb-confignode</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>iotdb-thrift</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>iotdb-cli</artifactId>
            <version>2.0.7</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk18on</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <version>5.10.2</version>
            <artifactId>junit-jupiter-api</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.awaitility</groupId>
            <artifactId>awaitility</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.iotdb</groupId>
            <artifactId>iotdb-server</artifactId>
            <version>2.0.7</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.github.stephenc.jcip</groupId>
            <artifactId>jcip-annotations</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.fusesource.mqtt-client</groupId>
            <artifactId>mqtt-client</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <!-- skip default-test -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <executions>
                    <execution>
                        <id>default-test</id>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- If the test starts separate processes, we should package first -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <skipAssembly>${integrationTest.launchNodeInSameJVM}</skipAssembly>
                </configuration>
                <executions>
                    <!-- Package binaries-->
                    <execution>
                        <id>cluster-test-assembly</id>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <descriptors>
                                <descriptor>src/assembly/mpp-test.xml</descriptor>
                            </descriptors>
                            <finalName>template-node</finalName>
                            <appendAssemblyId>false</appendAssemblyId>
                        </configuration>
                    </execution>
                    <execution>
                        <id>cluster-test-assembly-share</id>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <descriptors>
                                <descriptor>src/assembly/mpp-share.xml</descriptor>
                            </descriptors>
                            <finalName>template-node-share</finalName>
                            <appendAssemblyId>false</appendAssemblyId>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- Run integration tests -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                        <configuration>
                            <groups>${integrationTest.includedGroups}</groups>
                            <excludedGroups>${integrationTest.excludedGroups}</excludedGroups>
                            <useSystemClassLoader>false</useSystemClassLoader>
                            <parallel>none</parallel>
                            <forkCount>${integrationTest.forkCount}</forkCount>
                            <reuseForks>false</reuseForks>
                            <systemPropertyVariables>
                                <TestEnv>${integrationTest.testEnv}</TestEnv>
                                <RandomSelectWriteNode>${integrationTest.randomSelectWriteNode}</RandomSelectWriteNode>
                                <ReadAndVerifyWithMultiNode>${integrationTest.readAndVerifyWithMultiNode}</ReadAndVerifyWithMultiNode>
                                <DataRegionPerDataNode>${integrationTest.dataRegionPerDataNode}</DataRegionPerDataNode>
                                <lightWeightStandaloneMode.configNodeNumber>${lightWeightStandaloneMode.configNodeNumber}</lightWeightStandaloneMode.configNodeNumber>
                                <lightWeightStandaloneMode.dataNodeNumber>${lightWeightStandaloneMode.dataNodeNumber}</lightWeightStandaloneMode.dataNodeNumber>
                                <lightWeightStandaloneMode.configNodeConsensus>${lightWeightStandaloneMode.configNodeConsensus}</lightWeightStandaloneMode.configNodeConsensus>
                                <lightWeightStandaloneMode.schemaRegionConsensus>${lightWeightStandaloneMode.schemaRegionConsensus}</lightWeightStandaloneMode.schemaRegionConsensus>
                                <lightWeightStandaloneMode.dataRegionConsensus>${lightWeightStandaloneMode.dataRegionConsensus}</lightWeightStandaloneMode.dataRegionConsensus>
                                <lightWeightStandaloneMode.schemaRegionReplicaNumber>${lightWeightStandaloneMode.schemaRegionReplicaNumber}</lightWeightStandaloneMode.schemaRegionReplicaNumber>
                                <lightWeightStandaloneMode.dataRegionReplicaNumber>${lightWeightStandaloneMode.dataRegionReplicaNumber}</lightWeightStandaloneMode.dataRegionReplicaNumber>
                                <scalableSingleNodeMode.configNodeNumber>${scalableSingleNodeMode.configNodeNumber}</scalableSingleNodeMode.configNodeNumber>
                                <scalableSingleNodeMode.dataNodeNumber>${scalableSingleNodeMode.dataNodeNumber}</scalableSingleNodeMode.dataNodeNumber>
                                <scalableSingleNodeMode.configNodeConsensus>${scalableSingleNodeMode.configNodeConsensus}</scalableSingleNodeMode.configNodeConsensus>
                                <scalableSingleNodeMode.schemaRegionConsensus>${scalableSingleNodeMode.schemaRegionConsensus}</scalableSingleNodeMode.schemaRegionConsensus>
                                <scalableSingleNodeMode.dataRegionConsensus>${scalableSingleNodeMode.dataRegionConsensus}</scalableSingleNodeMode.dataRegionConsensus>
                                <scalableSingleNodeMode.schemaRegionReplicaNumber>${scalableSingleNodeMode.schemaRegionReplicaNumber}</scalableSingleNodeMode.schemaRegionReplicaNumber>
                                <scalableSingleNodeMode.dataRegionReplicaNumber>${scalableSingleNodeMode.dataRegionReplicaNumber}</scalableSingleNodeMode.dataRegionReplicaNumber>
                                <highPerformanceMode.configNodeNumber>${highPerformanceMode.configNodeNumber}</highPerformanceMode.configNodeNumber>
                                <highPerformanceMode.dataNodeNumber>${highPerformanceMode.dataNodeNumber}</highPerformanceMode.dataNodeNumber>
                                <highPerformanceMode.configNodeConsensus>${highPerformanceMode.configNodeConsensus}</highPerformanceMode.configNodeConsensus>
                                <highPerformanceMode.schemaRegionConsensus>${highPerformanceMode.schemaRegionConsensus}</highPerformanceMode.schemaRegionConsensus>
                                <highPerformanceMode.dataRegionConsensus>${highPerformanceMode.dataRegionConsensus}</highPerformanceMode.dataRegionConsensus>
                                <highPerformanceMode.schemaRegionReplicaNumber>${highPerformanceMode.schemaRegionReplicaNumber}</highPerformanceMode.schemaRegionReplicaNumber>
                                <highPerformanceMode.dataRegionReplicaNumber>${highPerformanceMode.dataRegionReplicaNumber}</highPerformanceMode.dataRegionReplicaNumber>
                                <strongConsistencyClusterMode.configNodeNumber>${strongConsistencyClusterMode.configNodeNumber}</strongConsistencyClusterMode.configNodeNumber>
                                <strongConsistencyClusterMode.dataNodeNumber>${strongConsistencyClusterMode.dataNodeNumber}</strongConsistencyClusterMode.dataNodeNumber>
                                <strongConsistencyClusterMode.configNodeConsensus>${strongConsistencyClusterMode.configNodeConsensus}</strongConsistencyClusterMode.configNodeConsensus>
                                <strongConsistencyClusterMode.schemaRegionConsensus>${strongConsistencyClusterMode.schemaRegionConsensus}</strongConsistencyClusterMode.schemaRegionConsensus>
                                <strongConsistencyClusterMode.dataRegionConsensus>${strongConsistencyClusterMode.dataRegionConsensus}</strongConsistencyClusterMode.dataRegionConsensus>
                                <strongConsistencyClusterMode.schemaRegionReplicaNumber>${strongConsistencyClusterMode.schemaRegionReplicaNumber}</strongConsistencyClusterMode.schemaRegionReplicaNumber>
                                <strongConsistencyClusterMode.dataRegionReplicaNumber>${strongConsistencyClusterMode.dataRegionReplicaNumber}</strongConsistencyClusterMode.dataRegionReplicaNumber>
                                <pipeConsensusBatchMode.configNodeNumber>${pipeConsensusBatchMode.configNodeNumber}</pipeConsensusBatchMode.configNodeNumber>
                                <pipeConsensusBatchMode.dataNodeNumber>${pipeConsensusBatchMode.dataNodeNumber}</pipeConsensusBatchMode.dataNodeNumber>
                                <pipeConsensusBatchMode.configNodeConsensus>${pipeConsensusBatchMode.configNodeConsensus}</pipeConsensusBatchMode.configNodeConsensus>
                                <pipeConsensusBatchMode.schemaRegionConsensus>${pipeConsensusBatchMode.schemaRegionConsensus}</pipeConsensusBatchMode.schemaRegionConsensus>
                                <pipeConsensusBatchMode.dataRegionConsensus>${pipeConsensusBatchMode.dataRegionConsensus}</pipeConsensusBatchMode.dataRegionConsensus>
                                <pipeConsensusBatchMode.schemaRegionReplicaNumber>${pipeConsensusBatchMode.schemaRegionReplicaNumber}</pipeConsensusBatchMode.schemaRegionReplicaNumber>
                                <pipeConsensusBatchMode.dataRegionReplicaNumber>${pipeConsensusBatchMode.dataRegionReplicaNumber}</pipeConsensusBatchMode.dataRegionReplicaNumber>
                                <pipeConsensusStreamMode.configNodeNumber>${pipeConsensusStreamMode.configNodeNumber}</pipeConsensusStreamMode.configNodeNumber>
                                <pipeConsensusStreamMode.dataNodeNumber>${pipeConsensusStreamMode.dataNodeNumber}</pipeConsensusStreamMode.dataNodeNumber>
                                <pipeConsensusStreamMode.configNodeConsensus>${pipeConsensusStreamMode.configNodeConsensus}</pipeConsensusStreamMode.configNodeConsensus>
                                <pipeConsensusStreamMode.schemaRegionConsensus>${pipeConsensusStreamMode.schemaRegionConsensus}</pipeConsensusStreamMode.schemaRegionConsensus>
                                <pipeConsensusStreamMode.dataRegionConsensus>${pipeConsensusStreamMode.dataRegionConsensus}</pipeConsensusStreamMode.dataRegionConsensus>
                                <pipeConsensusStreamMode.schemaRegionReplicaNumber>${pipeConsensusStreamMode.schemaRegionReplicaNumber}</pipeConsensusStreamMode.schemaRegionReplicaNumber>
                                <pipeConsensusStreamMode.dataRegionReplicaNumber>${pipeConsensusStreamMode.dataRegionReplicaNumber}</pipeConsensusStreamMode.dataRegionReplicaNumber>
                            </systemPropertyVariables>
                            <summaryFile>target/failsafe-reports/failsafe-summary-IT.xml</summaryFile>
                        </configuration>
                    </execution>
                    <execution>
                        <id>verify</id>
                        <goals>
                            <goal>verify</goal>
                        </goals>
                        <configuration>
                            <summaryFiles>
                                <summaryFile>target/failsafe-reports/failsafe-summary-IT.xml</summaryFile>
                            </summaryFiles>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- Running this here wouldn't really make much sense -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>check-dependencies</id>
                        <goals>
                            <goal>analyze-only</goal>
                        </goals>
                        <phase>verify</phase>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <configuration>
                    <mainClass>org.apache.iotdb.it.framework.IoTDBTestReporter</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>report</id>
                        <goals>
                            <goal>java</goal>
                        </goals>
                        <phase>post-integration-test</phase>
                    </execution>
                </executions>
            </plugin>
            <!-- Make sure stuff is also cleaned up, which might be left over from the tests -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <configuration>
                    <filesets>
                        <fileset>
                            <directory>data</directory>
                            <includes>
                                <include>**</include>
                            </includes>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>SimpleIT</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.LocalStandaloneIT</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>false</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>false</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>Simple</integrationTest.testEnv>
            </properties>
        </profile>
        <!-- Currently RemoteIT is not working as it lacks of the remote endpoint parameters -->
        <profile>
            <id>RemoteIT</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.RemoteIT</integrationTest.includedGroups>
                <integrationTest.testEnv>Remote</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT1,org.apache.iotdb.itbase.category.MultiClusterIT2DualTreeAutoBasic,org.apache.iotdb.itbase.category.MultiClusterIT2DualTreeAutoEnhanced,org.apache.iotdb.itbase.category.MultiClusterIT2DualTreeManual,org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTreeArchVerification,org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTreeRegressionConsumer,org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTreeRegressionMisc,org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTableArchVerification,org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTableRegressionConsumer,org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTableRegressionMisc,org.apache.iotdb.itbase.category.MultiClusterIT3,org.apache.iotdb.itbase.category.MultiClusterIT2DualTableManualBasic,org.apache.iotdb.itbase.category.MultiClusterIT2DualTableManualEnhanced</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT1</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT1</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2DualTreeAutoBasic</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2DualTreeAutoBasic</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2DualTreeAutoEnhanced</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2DualTreeAutoEnhanced</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2DualTableManualBasic</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2DualTableManualBasic</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2DualTableManualEnhanced</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2DualTableManualEnhanced</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2DualTreeManual</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2DualTreeManual</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2SubscriptionTreeArchVerification</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTreeArchVerification</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2SubscriptionTreeRegressionConsumer</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTreeRegressionConsumer</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2SubscriptionTreeRegressionMisc</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTreeRegressionMisc</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2SubscriptionTableArchVerification</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTableArchVerification</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2SubscriptionTableRegressionConsumer</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTableRegressionConsumer</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT2SubscriptionTableRegressionMisc</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTableRegressionMisc</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>MultiClusterIT3</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.MultiClusterIT3</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>MultiCluster</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>ClusterIT</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.ClusterIT</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>Cluster1</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>AIClusterIT</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.AIClusterIT</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>false</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>false</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>AI</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>DailyIT</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups/>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.DailyIT</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>Cluster1</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>TableSimpleIT</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.TableLocalStandaloneIT</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>false</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>false</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>TABLE_SIMPLE</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>TableClusterIT</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.excludedGroups>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.TableClusterIT</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>TABLE_CLUSTER1</integrationTest.testEnv>
            </properties>
        </profile>
        <profile>
            <id>ManualIT</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <integrationTest.excludedGroups/>
                <integrationTest.includedGroups>org.apache.iotdb.itbase.category.ManualIT</integrationTest.includedGroups>
                <integrationTest.launchNodeInSameJVM>false</integrationTest.launchNodeInSameJVM>
                <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
                <integrationTest.readAndVerifyWithMultiNode>true</integrationTest.readAndVerifyWithMultiNode>
                <integrationTest.testEnv>Simple</integrationTest.testEnv>
            </properties>
        </profile>
    </profiles>
</project>
