/*
 * 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 Core Java Benchmarks"""
version = versionMap['logstash-core']
String jrubyVersion = versionMap['jruby']['version']

repositories {
  mavenCentral()
}

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

test.enabled = false

jar {
  manifest {
    attributes "Main-Class": "org.openjdk.jmh.Main"
  }
}

ext {
  jmh = 1.37
}

dependencies {
  implementation project(':logstash-core')
  implementation "org.openjdk.jmh:jmh-core:$jmh"
  annotationProcessor "org.openjdk.jmh:jmh-generator-annprocess:$jmh"
  implementation 'com.google.guava:guava:33.1.0-jre'
  implementation 'commons-io:commons-io:2.16.1'
  runtimeOnly 'joda-time:joda-time:2.8.2'
  api "org.jruby:jruby-core:$jrubyVersion"
}

javadoc {
  enabled = false
}

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

shadowJar {
  archiveBaseName = 'logstash-core-benchmarks-all'
  archiveClassifier = null
  archiveVersion = ''
}

tasks.register("jmh", JavaExec) {

 dependsOn=[':logstash-core-benchmarks:clean', ':logstash-core-benchmarks:shadowJar']

  mainClass = "-jar"

  def include = project.properties.get('include', '')

  doFirst {
    args = [
            "-Djava.io.tmpdir=${buildDir.absolutePath}",
            "-XX:+HeapDumpOnOutOfMemoryError", "-Xms2g", "-Xmx2g",
            shadowJar.archiveFile.get().asFile,
            include
    ]
  }
}
