/*
 * Licensed to Elasticsearch B.V. under one or more contributor
 * license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright
 * ownership. Elasticsearch B.V. 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.
 */

def versionMap = gradle.ext.versions

description = """Logstash End to End Benchmarking Utility"""
version = versionMap['logstash-core']
String jacksonVersion = versionMap['jackson']
String jacksonDatabindVersion = versionMap['jackson-databind']

repositories {
  mavenCentral()
}

buildscript {
  repositories {
    mavenCentral()
    gradlePluginPortal()
  }
  dependencies {
    classpath "com.github.johnrengelman:shadow:${shadowGradlePluginVersion}"
  }
}

ext {
  jmh = '1.37'
  elasticsearch = '5.6.16'
}

dependencies {
  implementation 'net.sf.jopt-simple:jopt-simple:5.0.4'
  implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.14'
  implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.26.1'
  implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.18.0'
  implementation group: 'commons-codec', name: 'commons-codec', version: '1.17.0' // transitively required by httpclient

  implementation group: 'commons-io', name: 'commons-io', version: '2.16.1'
  implementation "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}"
  api "com.fasterxml.jackson.core:jackson-databind:${jacksonDatabindVersion}"
  implementation group: 'org.elasticsearch.client', name: 'elasticsearch-rest-client', version: elasticsearch
  implementation "org.openjdk.jmh:jmh-core:$jmh"
  testImplementation group: 'org.wiremock', name: 'wiremock-standalone', version: '3.0.4'

  testImplementation "junit:junit:4.13.2"
}

javadoc {
  enabled = false
}

test {
  // We need to force IPV4 usage to make WireMock tests portable between *nix and Windows.
  // For details see: https://github.com/elastic/logstash/pull/8372
  jvmArgs '-Djava.net.preferIPv4Stack=true'
  exclude '**/org/logstash/benchmark/cli/MainTest*'
  exclude '**/org/logstash/benchmark/cli/MainEsStorageTest*'
}

apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'java'

shadowJar {
  archiveBaseName = 'benchmark-cli'
  archiveClassifier = null
  archiveVersion = ''
}

assemble.dependsOn shadowJar
