/* * Copyright 2010 Outerthought bvba * * Licensed 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.lilyproject.lilyservertestfw; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import org.lilyproject.runtime.LilyRuntime; import org.lilyproject.runtime.LilyRuntimeSettings; import org.lilyproject.runtime.configuration.ConfManager; import org.lilyproject.runtime.configuration.ConfManagerImpl; import org.lilyproject.runtime.rapi.Mode; import org.lilyproject.runtime.repository.ArtifactRepository; import org.lilyproject.runtime.repository.Maven2StyleArtifactRepository; import org.lilyproject.util.MavenUtil; import org.lilyproject.util.io.Closer; public class LilyServerTestUtility { private LilyRuntime runtime; private final String defaultConfDir; private final String customConfDir; private final File testSpecificConfDir; private ArtifactRepository artifactRepository; /** * LilyServerTestUtility is used to start Lily using the LilyRuntime. * * @param defaultConfDir path to the directory containing the default configuration files to startup lily * @param customConfDir path to a directory containing custom configuration files which should be used on top * of the default configuration files */ public LilyServerTestUtility(String defaultConfDir, String customConfDir, File testHome) throws IOException, URISyntaxException { this.defaultConfDir = defaultConfDir; this.customConfDir = customConfDir; // test-specific-conf are changes to the default configuration to optimize for test cases testSpecificConfDir = new File(testHome, "test-specific-conf"); } public void start() throws Exception { // This disable the HBaseConnectionDisposer in Lily which deletes HBase connections on shutdown System.setProperty("lily.hbase.deleteConnections", "false"); LilyRuntimeSettings settings = new LilyRuntimeSettings(); settings.setRepository(resolveRepository()); settings.setConfManager(getConfManager()); runtime = new LilyRuntime(settings); runtime.setMode(Mode.getDefault()); runtime.start(); } public void stop() { Closer.close(runtime); } private ConfManager getConfManager() { List<File> confDirs = new ArrayList<File>(); confDirs.add(testSpecificConfDir); if (customConfDir != null) { confDirs.add(new File(customConfDir)); } if (defaultConfDir != null) { confDirs.add(new File(defaultConfDir)); } return new ConfManagerImpl(confDirs); } private ArtifactRepository resolveRepository() throws IOException { if (this.artifactRepository != null) { return artifactRepository; } else { return new Maven2StyleArtifactRepository(MavenUtil.findLocalMavenRepository()); } } public ArtifactRepository getArtifactRepository() { return artifactRepository; } public void setArtifactRepository(ArtifactRepository artifactRepository) { this.artifactRepository = artifactRepository; } public LilyRuntime getRuntime() { return runtime; } }