// | |
// ======================================================================== | |
// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. | |
// ------------------------------------------------------------------------ | |
// All rights reserved. This program and the accompanying materials | |
// are made available under the terms of the Eclipse Public License v1.0 | |
// and Apache License v2.0 which accompanies this distribution. | |
// | |
// The Eclipse Public License is available at | |
// http://www.eclipse.org/legal/epl-v10.html | |
// | |
// The Apache License v2.0 is available at | |
// http://www.opensource.org/licenses/apache2.0.php | |
// | |
// You may elect to redistribute this code under either of these licenses. | |
// ======================================================================== | |
// | |
package org.eclipse.jetty.start; | |
import static org.hamcrest.Matchers.containsInAnyOrder; | |
import static org.hamcrest.Matchers.containsString; | |
import static org.hamcrest.Matchers.notNullValue; | |
import static org.hamcrest.Matchers.startsWith; | |
import java.io.File; | |
import java.io.IOException; | |
import java.nio.file.Path; | |
import java.util.ArrayList; | |
import java.util.List; | |
import org.eclipse.jetty.start.config.ConfigSources; | |
import org.eclipse.jetty.start.config.JettyBaseConfigSource; | |
import org.eclipse.jetty.start.config.JettyHomeConfigSource; | |
import org.eclipse.jetty.toolchain.test.IO; | |
import org.eclipse.jetty.toolchain.test.MavenTestingUtils; | |
import org.junit.Assert; | |
import org.junit.Test; | |
public class BaseHomeTest | |
{ | |
public static void assertPathList(BaseHome hb, String message, List<String> expected, PathFinder finder) | |
{ | |
List<String> actual = new ArrayList<>(); | |
for (Path path : finder.getHits()) | |
{ | |
actual.add(hb.toShortForm(path.toFile())); | |
} | |
if (actual.size() != expected.size()) | |
{ | |
System.out.printf("Actual Path(s): %,d hits%n",actual.size()); | |
for (String path : actual) | |
{ | |
System.out.printf(" %s%n",path); | |
} | |
System.out.printf("Expected Path(s): %,d entries%n",expected.size()); | |
for (String path : expected) | |
{ | |
System.out.printf(" %s%n",path); | |
} | |
} | |
Assert.assertThat(message + ": " + Utils.join(actual,", "),actual,containsInAnyOrder(expected.toArray())); | |
} | |
public static void assertPathList(BaseHome hb, String message, List<String> expected, List<Path> paths) | |
{ | |
List<String> actual = new ArrayList<>(); | |
for (Path path : paths) | |
{ | |
actual.add(hb.toShortForm(path.toFile())); | |
} | |
if (actual.size() != expected.size()) | |
{ | |
System.out.printf("Actual Path(s): %,d hits%n",actual.size()); | |
for (String path : actual) | |
{ | |
System.out.printf(" %s%n",path); | |
} | |
System.out.printf("Expected Path(s): %,d entries%n",expected.size()); | |
for (String path : expected) | |
{ | |
System.out.printf(" %s%n",path); | |
} | |
} | |
Assert.assertThat(message + ": " + Utils.join(actual,", "),actual,containsInAnyOrder(expected.toArray())); | |
} | |
public static void assertFileList(BaseHome hb, String message, List<String> expected, List<File> files) | |
{ | |
List<String> actual = new ArrayList<>(); | |
for (File file : files) | |
{ | |
actual.add(hb.toShortForm(file)); | |
} | |
Assert.assertThat(message + ": " + Utils.join(actual,", "),actual,containsInAnyOrder(expected.toArray())); | |
} | |
@Test | |
public void testGetPath_OnlyHome() throws IOException | |
{ | |
File homeDir = MavenTestingUtils.getTestResourceDir("hb.1/home"); | |
ConfigSources config = new ConfigSources(); | |
config.add(new JettyHomeConfigSource(homeDir.toPath())); | |
BaseHome hb = new BaseHome(config); | |
Path startIni = hb.getPath("start.ini"); | |
String ref = hb.toShortForm(startIni); | |
Assert.assertThat("Reference",ref,startsWith("${jetty.home}")); | |
String contents = IO.readToString(startIni.toFile()); | |
Assert.assertThat("Contents",contents,containsString("Home Ini")); | |
} | |
@Test | |
public void testGetPaths_OnlyHome() throws IOException | |
{ | |
File homeDir = MavenTestingUtils.getTestResourceDir("hb.1/home"); | |
ConfigSources config = new ConfigSources(); | |
config.add(new JettyHomeConfigSource(homeDir.toPath())); | |
BaseHome hb = new BaseHome(config); | |
List<Path> paths = hb.getPaths("start.d/*"); | |
List<String> expected = new ArrayList<>(); | |
expected.add("${jetty.home}/start.d/jmx.ini"); | |
expected.add("${jetty.home}/start.d/jndi.ini"); | |
expected.add("${jetty.home}/start.d/jsp.ini"); | |
expected.add("${jetty.home}/start.d/logging.ini"); | |
expected.add("${jetty.home}/start.d/ssl.ini"); | |
FSTest.toOsSeparators(expected); | |
assertPathList(hb,"Paths found",expected,paths); | |
} | |
@Test | |
public void testGetPaths_OnlyHome_InisOnly() throws IOException | |
{ | |
File homeDir = MavenTestingUtils.getTestResourceDir("hb.1/home"); | |
ConfigSources config = new ConfigSources(); | |
config.add(new JettyHomeConfigSource(homeDir.toPath())); | |
BaseHome hb = new BaseHome(config); | |
List<Path> paths = hb.getPaths("start.d/*.ini"); | |
List<String> expected = new ArrayList<>(); | |
expected.add("${jetty.home}/start.d/jmx.ini"); | |
expected.add("${jetty.home}/start.d/jndi.ini"); | |
expected.add("${jetty.home}/start.d/jsp.ini"); | |
expected.add("${jetty.home}/start.d/logging.ini"); | |
expected.add("${jetty.home}/start.d/ssl.ini"); | |
FSTest.toOsSeparators(expected); | |
assertPathList(hb,"Paths found",expected,paths); | |
} | |
@Test | |
public void testGetPaths_Both() throws IOException | |
{ | |
File homeDir = MavenTestingUtils.getTestResourceDir("hb.1/home"); | |
File baseDir = MavenTestingUtils.getTestResourceDir("hb.1/base"); | |
ConfigSources config = new ConfigSources(); | |
config.add(new JettyBaseConfigSource(baseDir.toPath())); | |
config.add(new JettyHomeConfigSource(homeDir.toPath())); | |
BaseHome hb = new BaseHome(config); | |
List<Path> paths = hb.getPaths("start.d/*.ini"); | |
List<String> expected = new ArrayList<>(); | |
expected.add("${jetty.base}/start.d/jmx.ini"); | |
expected.add("${jetty.home}/start.d/jndi.ini"); | |
expected.add("${jetty.home}/start.d/jsp.ini"); | |
expected.add("${jetty.base}/start.d/logging.ini"); | |
expected.add("${jetty.home}/start.d/ssl.ini"); | |
expected.add("${jetty.base}/start.d/myapp.ini"); | |
FSTest.toOsSeparators(expected); | |
assertPathList(hb,"Paths found",expected,paths); | |
} | |
@Test | |
public void testDefault() throws IOException | |
{ | |
BaseHome bh = new BaseHome(); | |
Assert.assertThat("Home",bh.getHome(),notNullValue()); | |
Assert.assertThat("Base",bh.getBase(),notNullValue()); | |
} | |
@Test | |
public void testGetPath_Both() throws IOException | |
{ | |
File homeDir = MavenTestingUtils.getTestResourceDir("hb.1/home"); | |
File baseDir = MavenTestingUtils.getTestResourceDir("hb.1/base"); | |
ConfigSources config = new ConfigSources(); | |
config.add(new JettyBaseConfigSource(baseDir.toPath())); | |
config.add(new JettyHomeConfigSource(homeDir.toPath())); | |
BaseHome hb = new BaseHome(config); | |
Path startIni = hb.getPath("start.ini"); | |
String ref = hb.toShortForm(startIni); | |
Assert.assertThat("Reference",ref,startsWith("${jetty.base}")); | |
String contents = IO.readToString(startIni.toFile()); | |
Assert.assertThat("Contents",contents,containsString("Base Ini")); | |
} | |
} |