<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <artifactId>druid-embedded-tests</artifactId>
  <name>druid-embedded-tests</name>
  <description>Unit tests that run an embedded Druid cluster</description>

  <properties>
    <surefire.rerunFailingTestsCount>0</surefire.rerunFailingTestsCount>
    <!-- Must match iceberg.core.version in extensions-contrib/druid-iceberg-extensions/pom.xml -->
    <iceberg.version>1.7.2</iceberg.version>
  </properties>

  <parent>
    <groupId>org.apache.druid</groupId>
    <artifactId>druid</artifactId>
    <version>37.0.0</version>
  </parent>

  <dependencies>
    <!-- Test dependencies -->
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-processing</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-indexing-service</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-kafka-indexing-service</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-multi-stage-query</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-catalog</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-server</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-sql</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-testcontainers</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-testing-tools</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.inject</groupId>
      <artifactId>guice</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-common</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jdbi</groupId>
      <artifactId>jdbi</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-storage</artifactId>
      <version>2.29.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-core</artifactId>
      <version>2.27.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.code.findbugs</groupId>
      <artifactId>jsr305</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.http-client</groupId>
      <artifactId>google-http-client</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-storage</artifactId>
      <version>8.6.0</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-lang3</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.opencsv</groupId>
      <artifactId>opencsv</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-processing</artifactId>
      <scope>test</scope>
      <type>test-jar</type>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-server</artifactId>
      <scope>test</scope>
      <type>test-jar</type>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-sql</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
      <type>test-jar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-services</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
      <type>test-jar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-services</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-indexing-service</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
      <type>test-jar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-kafka-indexing-service</artifactId>
      <version>${project.parent.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-kinesis-indexing-service</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>mysql-metadata-storage</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>postgresql-metadata-storage</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-s3-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-protobuf-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-avro-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-basic-security</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions.contrib</groupId>
      <artifactId>druid-exact-count-bitmap</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions.contrib</groupId>
      <artifactId>druid-thrift-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>com.googlecode.json-simple</groupId>
          <artifactId>json-simple</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions.contrib</groupId>
      <artifactId>druid-iceberg-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-common</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions.contrib</groupId>
      <artifactId>kafka-emitter</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-lookups-cached-global</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-datasketches</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-aws-common</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>druid-gcp-common</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-google-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-azure-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions.contrib</groupId>
      <artifactId>aliyun-oss-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-hdfs-storage</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-parquet-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-orc-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>simple-client-sslcontext</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
    <!-- Pin protobuf-java-util to the version from druid-protobuf-extensions to satisfy
         the enforcer's RequireUpperBoundDeps rule (google-cloud-storage brings a lower version). -->
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java-util</artifactId>
      <version>${protobuf.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <version>${protobuf.version}</version>
      <scope>test</scope>
    </dependency>

    <!-- Some embedded tests use the router and the web-console for debugging -->
    <dependency>
      <groupId>org.apache.druid</groupId>
      <artifactId>web-console</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>

    <!-- Non-Druid test dependencies -->
    <dependency>
      <groupId>org.apache.datasketches</groupId>
      <artifactId>datasketches-java</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.iceberg</groupId>
      <artifactId>iceberg-api</artifactId>
      <version>${iceberg.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.iceberg</groupId>
      <artifactId>iceberg-core</artifactId>
      <version>${iceberg.version}</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.apache.avro</groupId>
          <artifactId>avro</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.iceberg</groupId>
      <artifactId>iceberg-parquet</artifactId>
      <version>${iceberg.version}</version>
      <scope>test</scope>
      <exclusions>
        <!-- Let parquet version be driven by druid-parquet-extensions (1.15.2) -->
        <exclusion>
          <groupId>org.apache.parquet</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client-minicluster</artifactId>
      <version>${hadoop.compile.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.ws.rs</groupId>
      <artifactId>jsr311-api</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.vintage</groupId>
      <artifactId>junit-vintage-engine</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-params</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-launcher</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-yaml</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>it.unimi.dsi</groupId>
      <artifactId>fastutil-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.kafka</groupId>
      <artifactId>kafka-clients</artifactId>
      <version>${apache.kafka.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>testcontainers</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>testcontainers-mariadb</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>testcontainers-postgresql</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>testcontainers-kafka</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>testcontainers-localstack</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>testcontainers-k3s</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mariadb.jdbc</groupId>
      <artifactId>mariadb-java-client</artifactId>
      <version>${mariadb.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>testcontainers-minio</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>testcontainers-redpanda</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>testcontainers-azure</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.aiven</groupId>
      <artifactId>testcontainers-fake-gcs-server</artifactId>
      <version>0.1.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.fabric8</groupId>
      <artifactId>kubernetes-model-core</artifactId>
      <version>${fabric8.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.fabric8</groupId>
      <artifactId>kubernetes-client-api</artifactId>
      <version>${fabric8.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.fabric8</groupId>
      <artifactId>kubernetes-client</artifactId>
      <version>${fabric8.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.github.docker-java</groupId>
      <artifactId>docker-java-api</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.github.docker-java</groupId>
      <artifactId>docker-java-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.github.docker-java</groupId>
      <artifactId>docker-java-transport-httpclient5</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>s3</artifactId>
      <version>${aws.sdk.v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>sts</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>http-client-spi</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>kinesis</artifactId>
      <version>${aws.sdk.v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>auth</artifactId>
      <version>${aws.sdk.v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>sdk-core</artifactId>
      <version>${aws.sdk.v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>regions</artifactId>
      <version>${aws.sdk.v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.github.os72</groupId>
      <artifactId>protobuf-dynamic</artifactId>
      <version>0.9.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.confluent</groupId>
      <artifactId>kafka-protobuf-provider</artifactId>
      <version>${confluent.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.avro</groupId>
      <artifactId>avro</artifactId>
      <version>${avro.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.confluent</groupId>
      <artifactId>kafka-schema-registry-client</artifactId>
      <version>${confluent.version}</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.avro</groupId>
          <artifactId>avro</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.ws.rs</groupId>
          <artifactId>javax.ws.rs-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.ws.rs</groupId>
          <artifactId>javax.ws.rs-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.ws.rs</groupId>
          <artifactId>jsr311-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>jakarta.ws.rs</groupId>
          <artifactId>jakarta.ws.rs-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-compress</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.calcite.avatica</groupId>
      <artifactId>avatica-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.calcite.avatica</groupId>
      <artifactId>avatica</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents.client5</groupId>
      <artifactId>httpclient5</artifactId>
      <version>5.5.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.thrift</groupId>
      <artifactId>libthrift</artifactId>
      <version>0.13.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.11.3</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- needed by iceberg tests -->
    <dependency>
      <groupId>org.apache.parquet</groupId>
      <artifactId>parquet-avro</artifactId>
      <version>1.15.2</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>commons-pool</groupId>
          <artifactId>commons-pool</artifactId>
        </exclusion>
        <exclusion>
          <groupId>it.unimi.dsi</groupId>
          <artifactId>fastutil</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.druid.extensions.contrib</groupId>
      <artifactId>druid-consul-extensions</artifactId>
      <version>${project.parent.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <configuration>
          <ignoredUsedUndeclaredDependencies>
            <!-- Configuration class comes from hadoop-common, which is re-exported via hadoop-client-api.
                 Declaring hadoop-common directly pulls in banned transitive dependencies. -->
            <ignoredUsedUndeclaredDependency>org.apache.hadoop:hadoop-common</ignoredUsedUndeclaredDependency>
            <ignoredUsedUndeclaredDependency>org.apache.hadoop:hadoop-client-api</ignoredUsedUndeclaredDependency>
          </ignoredUsedUndeclaredDependencies>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.6.2</version>
        <executions>
          <execution>
            <id>default-cli</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <banDuplicatePomDependencyVersions />
                <bannedDependencies>
                  <excludes>
                    <!--LGPL licenced library-->
                    <exclude>com.google.code.findbugs:annotations</exclude>
                    <!-- shouldn't be loaded alongside with log4j-slf4j2-impl -->
                    <exclude>org.apache.logging.log4j:log4j-slf4j-impl</exclude>
                    <!-- See https://github.com/apache/druid/pull/17370 -->
                    <exclude>javax.xml.bind:jaxb-api</exclude>
                    <exclude>org.eclipse.jetty.toolchain:jetty-servlet-api</exclude>
                  </excludes>
                </bannedDependencies>
                <requireUpperBoundDeps>
                  <excludedScopes>
                    <excludedScope>test</excludedScope>
                  </excludedScopes>
                </requireUpperBoundDeps>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- Skip this module from jacoco coverage as it contains only tests -->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
      <!-- Do not run Docker tests except with the docker-tests profile -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <excludedGroups>docker-test,perf</excludedGroups>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.owasp</groupId>
        <artifactId>dependency-check-maven</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>docker-tests</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <skipTests>true</skipTests>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
              <groups>docker-test</groups>
              <includes>
                <!-- Search for Docker tests intead of just IT*/*IT -->
                <include>*DockerTest*</include>
              </includes>
              <redirectTestOutputToFile>true</redirectTestOutputToFile>
              <argLine>
                ${jdk.strong.encapsulation.argLine}
                -Xmx2048m
                -XX:MaxDirectMemorySize=2500m
                -XX:+ExitOnOutOfMemoryError
                -XX:+HeapDumpOnOutOfMemoryError
                -Duser.language=en
                -Dfile.encoding=UTF-8
                -Duser.timezone=UTC
                -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
                -Daws.region=us-east-1
                -Ddruid.test.stupidPool.poison=true
              </argLine>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
