/*
 * 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.
 */
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

plugins { id 'org.apache.beam.module' }
applyJavaNature(
  publish: false,
  automaticModuleName: 'org.apache.beam.sdk.testing.kafka')

description = "Apache Beam :: SDKs :: Java :: Test Kafka Service"
ext.summary = """Self-contained Kafka service for testing IO transforms."""


dependencies {
  testImplementation library.java.kafka
  testImplementation "org.apache.zookeeper:zookeeper:3.5.6"
  testRuntimeOnly library.java.slf4j_log4j12
}

task runTestKafkaService (type: JavaExec) {
  mainClass = "org.apache.beam.sdk.testing.kafka.LocalKafka"
  classpath = sourceSets.test.runtimeClasspath
  args = [
    project.findProperty("kafka.port") ?: "9092",
    project.findProperty("zookeeper.port") ?: "2181"
  ]
}

task buildTestKafkaServiceJar(type: ShadowJar) {
  archiveAppendix = "testKafkaService"
  // Use zip64 mode to avoid "Archive contains more than 65535 entries".
  zip64 = true
  mergeServiceFiles()
  manifest {
    attributes(
            'Main-Class': 'org.apache.beam.sdk.testing.kafka.LocalKafka'
    )
  }
  exclude "META-INF/INDEX.LIST"
  exclude "META-INF/*.SF"
  exclude "META-INF/*.DSA"
  exclude "META-INF/*.RSA"
  configurations = [
    project.configurations.testRuntimeClasspath
  ]
  from sourceSets.main.output
  from sourceSets.test.output
}
