blob: 6f0c8478048a6034f78527619a93c6d186e2017b [file] [log] [blame]
/*
* 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.
*/
// Generated by http://patorjk.com/software/taag/#p=display&f=Bloody&t=Apache%20Bigtop
def final ASCII_bigtop = '''
:aass..
=XS22nai,>__. .
=n-- +!!!""^--
.vX> .
.)e<o;.
._v2`-{S> .
..<de~..;)Sa,
.._aoX}:===>=-?Xo>, . .
. .__aaoZe!`=><i=s+s;~*XXos,,_ . . .
...........______=iisaaoXXZY!"~._v(=d=:nc-1s,-~?SX#Xouass,,_____.:..........
=XXoXXXSXXXXXXXXZUZXX21?!"^-.._au*`=u2` ]X>.+*a>,.-"!Y1XSSX##ZZXXXXXXXXXXXoXXc
.{XXXXXX2*?!!"!"^~--- ...__aa2!^- =dX( .+XXc. ~!1nas,,.---~~^""!"!!!?YSXXXXX2+
-"YSXXXo=. ._=sssaaav1!!~- ._aXXe` )SXo>. -~"?Yoouass_s,, _vXXXX2}~
-{XXZoai%%*XXSSSX>.. .<uXXX2~ . {XXXXs,. . .=dXXXZX2lii%uXXXXe-
.<XXXXX%- -<XXXXX1|==%vdXXXXXo;:. ._vXXXXXXos_=i|*XXXXX> -<XXXXX`
=SXXXZc ..nXXX2> ---=2XXX2^-"|||}"--~{ZXXX1-- .:XXXXo; . )XXXX2`
. =XXXXZc nXXXX> =XXXXe..__s=>_...)XXXX1 . .:SXXXo; .)XXXX2..
<SXXXXc . .nXXXS> =XXXXosummmmBmma,)ZXXX1 :XXXX2; )XXXXX.
.<XXXXX( :nXXXS; <XXXXXm#mmmWmmmmmoZXXX1 ..3XXXo;. . )XXXXX;
. nXXXXX;. :XXXXX; .=XXXXXmmmBmmmWmB#XXXXX1 . .nXXXX> :XXXXXc .
. =oZXXXe; .<XXXX2` . )XXXXZmBmBmWmmmW#2XXXX1 . .vXXXXc vXXXXo;
+Y3S2Xz__...vXXXXe . .)ZXXXZmmWmBmmBBm#XXXXXo.. {XXXXz:.___vSS2Y1=
. ---+"""*!!*Y1s|=_==uXSSSXZUXUXUXUXUXS2XX2n|_=||%Y*??!"""^~---
.--- - ---------------- - - -.
.o. oooo oooooooooo. o8o .
.888. `888 `888' `Y8b `"' .o8
.8"888. oo.ooooo. .oooo. .ooooo. 888 .oo. .ooooo. 888 888oooo .oooooooo.o888oo .ooooo. oo.ooooo.
.8' `888. 888' `88b`P )88b d88' `"Y8 888P"Y88b d88' `88b 888oooo888'`888 888' `88b 888 d88' `88b 888' `88b
.88ooo8888. 888 888 .oP"888 888 888 888 888ooo888 888 `88b 888 888 888 888 888 888 888 888
.8' `888. 888 888d8( 888 888 .o8 888 888 888 .o 888 .88P 888 `88bod8P' 888 .888 888 888 888
o88o o8888o 888bod8P'`Y888""8o`Y8bod8P'o888o o888o`Y8bod8P' o888bood8P' o888o`8oooooo. "888"`Y8bod8P' 888bod8P'
888 d" YD 888
o888o "Y88888P' o888o
'''
def final langLevel = "1.7"
allprojects {
apply plugin: 'java'
apply plugin: 'maven'
group = 'org.apache.bigtop'
version = '0.9.0-SNAPSHOT'
description = """Bigtop"""
sourceCompatibility = langLevel
targetCompatibility = langLevel
repositories {
maven { url "http://repository.apache.org/snapshots" }
maven { url "http://repo.maven.apache.org/maven2" }
mavenCentral()
}
}
subprojects {
apply plugin: 'groovy'
}
project(':itest-common') {
description = """iTest: system and integration testing in the cloud"""
dependencies {
compile group: 'org.codehaus.groovy', name: 'groovy-all', version:'2.1.8'
compile group: 'junit', name: 'junit', version:'4.11'
compile group: 'commons-logging', name: 'commons-logging', version:'1.1'
compile group: 'org.apache.ant', name: 'ant', version:'1.8.2'
compile group: 'org.apache.ant', name: 'ant-junit', version:'1.8.2'
}
task packageITest(type: Jar) {
from sourceSets.main.output
//classifier = 'tests'
}
artifacts.archives packageITest
test {
exclude '**/Dummy*'
}
}
def TESTARTIFACTS_GROUP = 'test artifacts'
def DEVENV_GROUP = 'development tools'
def DEPLOY_GROUP = 'deployment'
// All packaging logic is separated into its own build module
apply from: 'packages.gradle'
task toolchain(type:Exec,
description: 'Setup dev. env via toolchain; Requires: Puppet, sudo',
group: DEVENV_GROUP) {
def command = [
'sudo', 'puppet', 'apply', '-d',
"--modulepath=${projectDir.absolutePath}", '-e',
'include bigtop_toolchain::installer'
]
workingDir '.'
commandLine command
}
task "toolchain-puppetmodules"(type:Exec,
description: 'Setup puppet modules via toolchain; Requires: Puppet, sudo',
group: DEVENV_GROUP) {
def command = [
'sudo', 'puppet', 'apply', '-d',
"--modulepath=${projectDir.absolutePath}", '-e',
'include bigtop_toolchain::puppet-modules'
]
workingDir '.'
commandLine command
}
task "toolchain-devtools"(type:Exec,
description: 'Setup additional dev. tools like Groovy SDK via toolchain; Requires: Puppet, sudo',
group: DEVENV_GROUP) {
def command = [
'sudo', 'puppet', 'apply', '-d',
"--modulepath=${projectDir.absolutePath}", '-e',
'include bigtop_toolchain::development-tools'
]
workingDir '.'
commandLine command
}
task "docker-provisioner"(type:Exec,
description: 'Provision a Bigtop cluster on Docker container(s). Default to CentOS and 1 node.\nCreate a 3 node cluster:\n $ ./gradlew -Pnum_instances=3 docker-provisioner\nRun smoke tests on 3 node cluster:\n $ ./gradlew -Pnum_instances=3 -Prun_smoke_tests=true docker-provisioner\nSpecify configuration file (located in bigtop-deploy/vm/vagrant-puppet-docker/):\n $ ./gradlew -Pconfig=vagrantconfig_debian.yaml docker-provisioner',
group: DEPLOY_GROUP) {
def _config = project.hasProperty("config") ? config : "vagrantconfig.yaml"
def _num_instances = project.hasProperty("num_instances") ? num_instances : 1
def command = [
'./docker-hadoop.sh',
'-C', _config,
'--create', _num_instances,
]
if ( project.hasProperty("run_smoke_tests") && run_smoke_tests ) {
command.add("--smoke-tests")
}
workingDir 'bigtop-deploy/vm/vagrant-puppet-docker'
commandLine command
}
task "docker-provisioner-ssh"(type:Exec,
description: 'Show ssh command to get in to the provisioned container',
group: DEPLOY_GROUP) {
workingDir 'bigtop-deploy/vm/vagrant-puppet-docker'
def message = "To ssh in to the container, do: \n(cd " + workingDir + " && vagrant ssh <CONTAIER_NAME>)"
def command = [
'/bin/echo',
message
]
commandLine command
}
task "docker-provisioner-status"(type:Exec,
description: 'Show status of Bigtop Docker cluster',
group: DEPLOY_GROUP) {
def command = [
'vagrant',
'status',
]
workingDir 'bigtop-deploy/vm/vagrant-puppet-docker'
commandLine command
}
task "docker-provisioner-destroy"(type:Exec,
description: 'Destroy provisioned Bigtop Docker cluster',
group: DEPLOY_GROUP) {
def command = [
'./docker-hadoop.sh',
'--destroy'
]
workingDir 'bigtop-deploy/vm/vagrant-puppet-docker'
commandLine command
}
task installTopLevel(type:Exec) {
workingDir "."
commandLine 'mvn clean install -f pom.xml'.split(" ")
}
task installiTest(dependsOn: installTopLevel, type:Exec) {
workingDir "."
commandLine 'mvn clean install -f bigtop-test-framework/pom.xml -DskipTests'.split(" ")
}
task installTestArtifacts(dependsOn: installiTest, type:Exec) {
workingDir "."
commandLine 'mvn clean install -f bigtop-tests/test-artifacts/pom.xml'.split(" ")
}
task installConf(type:Exec) {
workingDir "."
commandLine 'mvn clean install -f bigtop-tests/test-execution/conf/pom.xml'.split(" ")
}
task installCommon(type:Exec) {
workingDir "."
commandLine 'mvn clean install -f bigtop-tests/test-execution/common/pom.xml'.split(" ")
}
task installAllLocalArtifacts (
description: "Prepare and locally install all test artifacts",
group: TESTARTIFACTS_GROUP) {
}
/**
* Allows user to specify which artifacts to install by dynamically generating tasks.
*/
def artifactToInstall = {
def final BASE_DIR = projectDir.absolutePath
def final TEST_DIR = "$BASE_DIR/bigtop-tests/test-artifacts"
def project = new XmlSlurper().parse("$TEST_DIR/pom.xml")
project.modules.module.each { artifact ->
task "install-${artifact}" (description: "Installs ${artifact} artifact with Maven",
group: TESTARTIFACTS_GROUP,
dependsOn: installiTest
) << {
def final PATH = "${TEST_DIR}/$artifact/pom.xml"
def final WRAPPER = "mvn clean install -f " + PATH
exec {
workingDir '.'
commandLine WRAPPER.split(" ")
}
}
}
}
project.afterEvaluate{
artifactToInstall(dependsOn: [installTopLevel, installCommon, installConf, installiTest])
}
installAllLocalArtifacts.dependsOn installTopLevel, installCommon, installConf, installiTest, installTestArtifacts
help.doFirst {
println ASCII_bigtop
}
repositories {
maven { url "http://repository.apache.org/snapshots" }
maven { url "http://repo.maven.apache.org/maven2" }
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'de.undercouch:gradle-download-task:1.0'
}
}