Skip to content

Instantly share code, notes, and snippets.

@nikhilv
Created January 16, 2015 21:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nikhilv/0fc31dcad1aa6e55f2f0 to your computer and use it in GitHub Desktop.
Save nikhilv/0fc31dcad1aa6e55f2f0 to your computer and use it in GitHub Desktop.
really rough junit system test
// build.gradle -*- Groovy -*-
//
// Gradle build script for EC-OpenStack plugin.
//
// Copyright (c) 2014 Electric Cloud, Inc.
// All rights reserved
group = "com.electriccloud"
description = "Plugins : EC-OpenStack"
// Set the build number if it exists
def buildNumber = System.env.BUILD_NUMBER ? System.env.BUILD_NUMBER : "0"
version = "1.1.2"
//version = "1.2.0." + buildNumber
//project.version = "1.2.0." + buildNumber
project.ext {
pluginName = "$name-$version".toString()
commanderHome = System.env.COMMANDER_HOME
commanderServer = System.env.COMMANDER_SERVER ? System.env.COMMANDER_SERVER : "localhost"
}
apply plugin: "java"
apply plugin: "eclipse"
apply plugin: 'gwt-compiler'
sourceCompatibility = 1.5
defaultTasks "assemblePluginJar"
if(commanderHome) {
println "Using commander home: $commanderHome"
}
println "Using commander server: $commanderServer"
buildscript {
repositories {
maven { url "https://github.com/steffenschaefer/gwt-gradle-plugin/raw/maven-repo/" }
mavenCentral()
}
dependencies { classpath "de.richsource.gradle.plugins:gwt-gradle-plugin:0.4" }
}
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
compile group: group, name: "commander-sdk", version: "5.0.0-SNAPSHOT"
compile group: group, name: "commander-client", version: "5.0.0-SNAPSHOT"
compile group: group, name: "ec_internal", version: "5.0.0-SNAPSHOT"
compile group: group, name: "ec-test", version: "5.0.0-SNAPSHOT"
compile group: "com.google.gwt", name: "gwt-dev", version: "2.5.0"
compile group: "com.google.gwt", name: "gwt-servlet", version: "2.5.0"
compile group: "com.google.gwt", name: "gwt-user", version: "2.5.0"
compile "com.intellij:annotations:132.839-PATCH1"
compile "com.google.guava:guava-gwt:16.+"
compile "com.google.gwt.inject:gin:1.5.0"
compile "com.gwtplatform:gwtp-all:0.8-PATCH5"
testCompile 'junit:junit:[4,)'
testCompile 'org.pacesys:openstack4j:2.0.0'
}
processResources {
// Clear readonly flag, set by perforce
setFileMode(0644)
filter(org.apache.tools.ant.filters.ReplaceTokens,
tokens: [PLUGIN_NAME: project.pluginName, PLUGIN_KEY: project.name, PLUGIN_VERSION: project.version])
}
task wrapper(type: Wrapper) {
gradleVersion = '2.2'
}
task processProjectXml(type:Exec, dependsOn: processResources) {
def resourcesPath = "$buildDir/resources/main"
def ecperl = project.commanderHome ? "$commanderHome/bin/ec-perl" : "ec-perl"
commandLine ecperl, "../build/buildProject-mvn.pl", "$resourcesPath/project", "$resourcesPath/META-INF"
}
task copy_pages(type: Copy) {
// disable caching
outputs.upToDateWhen { false }
from "pages"
into "${buildDir}/resources/main/pages"
filter(org.apache.tools.ant.filters.ReplaceTokens,
tokens: [PLUGIN_NAME: project.pluginName, PLUGIN_KEY: project.name, PLUGIN_VERSION: project.version])
}
task copy_cgi_bin(type: Copy) {
// disable caching
outputs.upToDateWhen { false }
from "cgi-bin"
into "${buildDir}/resources/main/cgi-bin"
filter(org.apache.tools.ant.filters.ReplaceTokens,
tokens: [PLUGIN_NAME: project.pluginName, PLUGIN_KEY: project.name, PLUGIN_VERSION: project.version])
}
task copy_htdocs(type: Copy) {
// disable caching
outputs.upToDateWhen { false }
from "htdocs"
into "${buildDir}/resources/main/htdocs"
}
task copy_gwt_out(type: Copy) {
// disable caching
outputs.upToDateWhen { false }
from "${buildDir}/gwt/out"
into "${buildDir}/resources/main/htdocs/war"
}
task delete_ecplugin_dir (type: Delete) {
outputs.upToDateWhen { false }
delete '${buildDir}/ecplugins'
}
task delete_project_dir (type: Delete) {
outputs.upToDateWhen { false }
delete '${buildDir}/project'
}
task delete_webinf_dir (type: Delete) {
outputs.upToDateWhen { false }
delete '${buildDir}/gwt/out/WEB-INF'
}
task rearrange (dependsOn: [copy_pages,copy_cgi_bin,copy_htdocs,copy_gwt_out, delete_webinf_dir, delete_project_dir, delete_ecplugin_dir]) {
// disable caching
outputs.upToDateWhen { false }
}
task assemblePluginJar(type: Jar, dependsOn: [processProjectXml,compileGwt,rearrange]) {
outputs.upToDateWhen { false }
appendix = "plugin"
destinationDir = buildDir
includeEmptyDirs = false
excludes = [
"project/project.xml",
"**/*.pl",
"**/*.pm",
"project/forms"
]
from sourceSets.main.output
}
task deployPluginJar(dependsOn: assemblePluginJar) << {
def ectool = project.commanderHome ? "$commanderHome/ectool" : "ectool"
def serverOpt = "--server $commanderServer"
exec {
commandLine ectool, serverOpt, "login", "admin", "changeme"
}
exec {
commandLine ectool, serverOpt, "installPlugin", assemblePluginJar.archivePath
}
exec {
commandLine ectool, serverOpt, "promotePlugin", project.name
}
}
gwt {
gwtVersion '2.5.0'
modules 'ecplugins.openstack.ConfigurationManagement'
}
test {
testLogging {
// Show that tests are run in the command-line output
events 'started', 'passed'
exceptionFormat = 'full'
}
}
package ecplugins.openstack;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openstack4j.api.OSClient;
import org.openstack4j.model.compute.Keypair;
import org.openstack4j.model.compute.Server;
import org.openstack4j.openstack.OSFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
public class OpenStackProvisionTest {
private static OSClient m_osClient;
private final String COMMANDER_HOME = "C:\\Program Files\\Electric Cloud\\ElectricCommander\\bin";//System.getenv("COMMANDER_HOME");
@BeforeClass
public static void setup(){
// TODO: Switch these over
String endpoint = "https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0"; //System.getProperty("OPENSTACK_IDENTITY_URL");
String user = "yyy";//System.getProperty("OPENSTACK_IDENTITY_URL");
String password = "xxx";//System.getProperty("OPENSTACK_IDENTITY_URL");
String tenantId = "aaa";//System.getProperty("OPENSTACK_IDENTITY_URL");
m_osClient = OSFactory.builder()
.endpoint(endpoint)
.credentials(user,password)
.tenantId(tenantId)
.authenticate();
}
@Test public void testProvision() {
// Assumption #1 - Plugin under test is already installed
try {
//Process p = Runtime.getRuntime().exec(COMMANDER_HOME + "/ectool --server 192.168.158.20 login admin changeme");
// Function under test
Process p = Runtime.getRuntime().exec(COMMANDER_HOME + "/ectool --server 192.168.158.20 runProcedure EC-OpenStack-1.1.2 --procedureName CreateKeyPair --actualParameter connection_config=hp tenant_id=10200973354647 keyname=automatedTest-commandLine3 tag=1");
String line;
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()) );
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
Thread.sleep(8000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Get the keypair from OpenStack
Keypair keypair = m_osClient.compute().keypairs().get("automatedTest-commandLine3");
// Assert keypair is not null
assertNotNull(keypair);
// Grab the keypair name and check its name
assertEquals("Keypair name is","automatedTest-commandLine3",keypair.getName() );
//List<? extends Server> servers = m_osClient.compute().servers().list();
//assertEquals("Expected 5 but got " + servers.size(), 5,servers.size());
//assertEquals("Gradle is gr8", "Gradle is gr8");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment