/**
 * 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
 * <p/>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p/>
 * 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.
 */
subprojects {
  /**
   *  Utility function for tests to use to confirm EVN Variables.
   */
  ext.checkEnv = { env_vars ->
    env_vars.each() {
      def value = System.getenv("${it}")
      if (value == null || value == "null")
        throw new GradleException("undeclared env variable: ${it}")
    }
  }

  ext.groovyVersion = '2.5.4'
  ext.hadoopVersion = '2.7.4'
  ext.hbaseVersion = '1.1.9'
  ext.solrVersion = '8.11.4'
  ext.slf4jVersion = '1.6.6'
  // itest needs be greater than or equal to = 1.0.0
  ext.itestVersion = '1.0.0' // Might need to be able to read an input for alternate version?
  ext.BIGTOP_HOME   = rootDir

  dependencies {
    compile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true'
    //needed to avoid groovy not on classpath error.
    testCompile group: 'org.codehaus.groovy', name: 'groovy', version: groovyVersion
    testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true'
    testCompile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true'
    testRuntime project(':bigtop-tests:smoke-tests:logger-test-config')
  }

  //Note you need a snapshot itest to run this.
  ext.doExclude = { String filename ->
    //print("Exclude? ${filename} ... ")
    def keep_this_test = true;
    if (filename.contains(".groovy") ||
        filename.contains(".java")) {
      keep_this_test =
          tests_to_include().find({
            filename ==~ it
          }) != null;
    }

    //println("Keep = ${keep_this_test} "+filename);
    return !keep_this_test;
  }

  test.doFirst {
    //  java_home should be declared in all cases.
    checkEnv(["JAVA_HOME"])
    // TestHadoopExamples and other tests rely on BIGTOP_HOME environment
    // variable to find some resources. Let's set it up, using ext.BIGTOP_HOME
    environment ("BIGTOP_HOME", BIGTOP_HOME)
  }

  test.doLast {
    println("Now testing...");
    //todo, add back in 'basic' after BIGTOP-1392 .
    testLogging {
      events "passed", "skipped", "failed"
    }
  }

  // Let's make sure all system Properties are passed into the forked test JVM
  tasks.withType(Test) {
    systemProperties = System.getProperties()
  }
  test.dependsOn compileGroovy
  compileGroovy.dependsOn clean
}
