/*
 * SPDX-License-Identifier: Apache-2.0
 *
 * The OpenSearch Contributors require contributions made to
 * this file be licensed under the Apache-2.0 license or a
 * compatible open source license.
 *
 * Modifications Copyright OpenSearch Contributors. See
 * GitHub history for details.
 */

/*
 * Licensed to Elasticsearch under one or more contributor
 * license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright
 * ownership. Elasticsearch 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 org.opensearch.gradle.Version
import org.opensearch.gradle.VersionProperties
import org.opensearch.gradle.info.BuildParams
import org.opensearch.gradle.testclusters.StandaloneRestIntegTestTask

apply plugin: 'opensearch.testclusters'
apply plugin: 'opensearch.standalone-test'
apply from : "$rootDir/gradle/bwc-test.gradle"

for (Version bwcVersion : BuildParams.bwcVersions.indexCompatible) {
  String baseName = "v${bwcVersion}"

  testClusters {
    "${baseName}" {
      version = bwcVersion.toString()
      setting 'http.content_type.required', 'true'
    }
  }

  tasks.register("${baseName}#integTest", StandaloneRestIntegTestTask) {
    useCluster testClusters."${baseName}"
    nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}".allHttpSocketURI.join(",")}")
    nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}".getName()}")
  }

  tasks.register(bwcTaskName(bwcVersion)) {
    dependsOn "${baseName}#integTest"
  }
}

//tasks.register("verifyDocsLuceneVersion") {
//  doFirst {
//    File docsVersionsFile = rootProject.file('docs/Versions.asciidoc')
//    List<String> versionLines = docsVersionsFile.readLines('UTF-8')
//    String docsLuceneVersion = null
//    for (String line : versionLines) {
//      if (line.startsWith(':lucene_version:')) {
//        docsLuceneVersion = line.split()[1]
//      }
//    }
//    if (docsLuceneVersion == null) {
//      throw new GradleException('Could not find lucene version in docs version file')
//    }
//    String expectedLuceneVersion = VersionProperties.lucene
//    // remove potential -snapshot-{gitrev} suffix
//    expectedLuceneVersion -= ~/-snapshot-[0-9a-f]+$/
//    if (docsLuceneVersion != expectedLuceneVersion) {
//      throw new GradleException("Lucene version in docs [${docsLuceneVersion}] does not match version.properties [${expectedLuceneVersion}]")
//    }
//  }
//}

//tasks.named("check").configure {
//  dependsOn verifyDocsLuceneVersion
//}