/*
* 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.
*/
package org.apache.usergrid.chop.webapp.elasticsearch;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.apache.commons.lang.time.DateUtils;
import org.apache.usergrid.chop.api.Commit;
import org.apache.usergrid.chop.api.Module;
import org.apache.usergrid.chop.api.ProviderParams;
import org.apache.usergrid.chop.stack.User;
import org.apache.usergrid.chop.webapp.ChopUiModule;
import org.apache.usergrid.chop.webapp.dao.*;
import org.apache.usergrid.chop.webapp.dao.model.*;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
@RunWith(Suite.class)
@Suite.SuiteClasses(
{
ModuleDaoTest.class, CommitDaoTest.class, NoteDaoTest.class, RunDaoTest.class,
RunnerDaoTest.class, RunnerGroupTest.class, GroupedRunnersTest.class,
RunResultDaoTest.class, UserDaoTest.class, ProviderParamsDaoTest.class
})
public class ESSuiteTest {
private static Logger LOG = LoggerFactory.getLogger(ESSuiteTest.class);
public static final String MODULE_GROUPID = "org.apache.usergrid.chop";
public static final String MODULE_ARTIFACT_1 = "chop-runner";
public static final String MODULE_ARTIFACT_2 = "chop-client";
public static final String MODULE_VERSION = "1.0-SNAPSHOT";
public static final String COMMIT_ID_1 = "cc471b502aca2791c3a068f93d15b79ff6b7b827";
public static final String COMMIT_ID_2 = "7072b85746a980bc5dd9923ccdc9e0ed8e4eb19e";
public static final String COMMIT_ID_3 = "e29074efad5e0e1c7c2b63128ff9284f9b47ceb3";
public static final String NOTE = "This is a note!";
public static final String IMAGE_ID = "ami-213213214";
public static final String RUNNER_ID_1 = "35231";
public static final String RUNNER_ID_2 = "23412";
public static final String TEST_NAME = "org.apache.usergrid.chop.example.DigitalWatchTest";
public static final String USER_1 = "testuser";
public static final String USER_2 = "user-2";
public static final String RUNNER_IPV4_1 = "54.227.39.111";
public static final String RUNNER_IPV4_2 = "23.20.162.112";
public static final String RUNNER_HOSTNAME_3 = "ec2-84-197-213-113.compute-1.amazonaws.com";
public static final String MODULE_ID_1 = BasicModule.createId( MODULE_GROUPID, MODULE_ARTIFACT_1, MODULE_VERSION );
public static final String MODULE_ID_2 = BasicModule.createId( MODULE_GROUPID, MODULE_ARTIFACT_2, MODULE_VERSION );
@ClassRule
public static ElasticSearchResource esClient = new ElasticSearchResource();
public static ModuleDao moduleDao;
public static CommitDao commitDao;
public static NoteDao noteDao;
public static ProviderParamsDao ppDao;
public static RunDao runDao;
public static RunResultDao runResultDao;
public static UserDao userDao;
public static RunnerDao runnerDao;
// Populate elastic search for all tests
@BeforeClass
public static void setUpData() throws Exception {
LOG.info("Setting up sample data for elasticsearch Dao tests...");
Injector injector = Guice.createInjector(new ChopUiModule());
setupModules(injector);
setupCommits(injector);
setupNotes(injector);
setupProviderParams(injector);
String[] runIds = setupRuns(injector);
setupRunResults(injector, runIds);
setupUsers(injector);
setupRunners(injector);
LOG.info("Sample data for dao tests are saved into elasticsearch");
}
private static String[] setupRuns(Injector injector) throws Exception {
String[] runIds = new String[3];
runDao = injector.getInstance(RunDao.class);
BasicRun run = new BasicRun(
COMMIT_ID_2, // commitId
RUNNER_ID_2, // runner
1, // runNumber
TEST_NAME // testName
);
runDao.save(run);
runIds[0] = run.getId();
run = new BasicRun(
COMMIT_ID_2, // commitId
RUNNER_ID_2, // runner
2, // runNumber
TEST_NAME // testName
);
runDao.save(run);
runIds[1] = run.getId();
run = new BasicRun(
COMMIT_ID_3, // commitId
RUNNER_ID_1, // runner
1, // runNumber
TEST_NAME // testName
);
runDao.save(run);
runIds[2] = run.getId();
return runIds;
}
private static void setupProviderParams(Injector injector) throws Exception {
ppDao = injector.getInstance(ProviderParamsDao.class);
ProviderParams pp = new BasicProviderParams(
USER_1,
"m1.large",
"1230d4353459da23ec21a259a",
"ad911213ab21ef23ab4e0e",
IMAGE_ID,
"testKey1"
);
ppDao.save(pp);
pp = new BasicProviderParams(
"testuser2",
"t1.micro",
"1230d4353459da23ec21a259a",
"ad911213ab21ef23ab4e0e",
"ami-2143224",
"testKey2"
);
ppDao.save(pp);
}
private static void setupNotes(Injector injector) throws Exception {
noteDao = injector.getInstance(NoteDao.class);
Note note = new Note(COMMIT_ID_1, 1, NOTE);
noteDao.save(note);
}
private static void setupModules(Injector injector) throws Exception {
moduleDao = injector.getInstance(ModuleDao.class);
Module module = new BasicModule(
MODULE_GROUPID, // groupId
MODULE_ARTIFACT_1, // artifactId
MODULE_VERSION, // version
"https://stash.safehaus.org/scm/chop/main.git", // vcsRepoUrl
MODULE_GROUPID // testPackageBase
);
moduleDao.save( module );
module = new BasicModule(
MODULE_GROUPID, // groupId
MODULE_ARTIFACT_2, // artifactId
MODULE_VERSION, // version
"https://stash.safehaus.org/scm/chop/main.git", // vcsRepoUrl
MODULE_GROUPID // testPackageBase
);
moduleDao.save( module );
}
private static void setupCommits(Injector injector) throws Exception {
// Commits shouldn't have the same createDate b/c of issues with sorting them
Date now = new Date();
commitDao = injector.getInstance(CommitDao.class);
Commit commit = new BasicCommit(
COMMIT_ID_1, // commitId
MODULE_ID_1, // moduleId
"742e2a76a6ba161f9efb87ce58a9187e", // warMD5
now, // createDate
"/some/dummy/path"
);
commitDao.save(commit);
commit = new BasicCommit(
COMMIT_ID_2, // commitId
MODULE_ID_2, // moduleId
"395cfdfc3b77242a6f957d6d92da8958", // warMD5
DateUtils.addMinutes(now, 1), // createDate
"/some/dummy/path"
);
commitDao.save(commit);
commit = new BasicCommit(
COMMIT_ID_3, // commitId
MODULE_ID_2, // moduleId
"b9860ffa5e39b6f7123ed8c72c4b7046", // warMD5
DateUtils.addMinutes(now, 2), // createDate
"/some/dummy/path"
);
commitDao.save(commit);
}
private static void setupRunResults(Injector injector, String[] runIds) throws Exception {
runResultDao = injector.getInstance(RunResultDao.class);
BasicRunResult runResult = new BasicRunResult(runIds[0], 5, 1000, 0, 1);
runResultDao.save(runResult);
runResult = new BasicRunResult(runIds[1], 5, 1200, 1, 0);
runResultDao.save(runResult);
runResult = new BasicRunResult(runIds[2], 17, 15789, 2, 2);
runResultDao.save(runResult);
}
private static void setupUsers(Injector injector) throws Exception {
userDao = injector.getInstance(UserDao.class);
User user = new User(USER_1, "password");
userDao.save(user);
user = new User(USER_2, "sosecretsuchcryptowow");
userDao.save(user);
}
private static void setupRunners(Injector injector) throws Exception {
runnerDao = injector.getInstance(RunnerDao.class);
BasicRunner runner = new BasicRunner(
RUNNER_IPV4_1, // ipv4Address
"ec2-54-227-39-111.compute-1.amazonaws.com", // hostname
24981,// serverPort
"https://ec2-54-227-39-111.compute-1.amazonaws.com:24981", // url
"/tmp" // tempDir
);
runnerDao.save(runner, USER_1, COMMIT_ID_1, MODULE_ID_1);
runner = new BasicRunner(
RUNNER_IPV4_2, // ipv4Address
"ec2-23-20-162-112.compute-1.amazonaws.com", // hostname
8443, // serverPort
"https://ec2-23-20-162-112.compute-1.amazonaws.com:8443", // url
"/tmp" // tempDir
);
runnerDao.save(runner, USER_1, COMMIT_ID_1, MODULE_ID_1);
runner = new BasicRunner(
"84.197.213.113", // ipv4Address
RUNNER_HOSTNAME_3, // hostname
24981,// serverPort
"https://ec2-84-197-213-113.compute-1.amazonaws.com:24981", // url
"/tmp" // tempDir
);
runnerDao.save(runner, USER_2, COMMIT_ID_1, MODULE_ID_1);
}
@AfterClass
public static void tearDownData() {
LOG.info("ESSuiteTest teardown called");
}
}