[java-idp-integration-tests COMMIT] /trunk/src/test/java/net/shibboleth/idp/test/JettyServerProcess.java
noreply at shibboleth.net
noreply at shibboleth.net
Thu Dec 11 10:01:24 EST 2014
Author: rdw
Date: Thu Dec 11 10:01:24 2014
New Revision: 40
URL: http://svn.shibboleth.net/view/java-idp-integration-tests?rev=40&view=rev
Log:
Now that Jetty logs to a file we have to look read the file.
Modified:
trunk/src/test/java/net/shibboleth/idp/test/JettyServerProcess.java
Modified: trunk/src/test/java/net/shibboleth/idp/test/JettyServerProcess.java
URL: http://svn.shibboleth.net/view/java-idp-integration-tests/trunk/src/test/java/net/shibboleth/idp/test/JettyServerProcess.java?rev=40&r1=39&r2=40&view=diff
==============================================================================
--- trunk/src/test/java/net/shibboleth/idp/test/JettyServerProcess.java (original)
+++ trunk/src/test/java/net/shibboleth/idp/test/JettyServerProcess.java Thu Dec 11 10:01:24 2014
@@ -18,7 +18,11 @@
package net.shibboleth.idp.test;
import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FilenameFilter;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -62,6 +66,9 @@
/** Jetty server process. */
@Nullable private Process process;
+ /** Current jetty log */
+ @Nullable private File logFile;
+
/** Commands used to start the Jetty server process. */
@NonnullAfterInit private List<String> commands;
@@ -80,6 +87,7 @@
}
/** {@inheritDoc} */
+ @Override
protected void doInitialize() throws ComponentInitializationException {
// Throw exception if jetty.base does not exist.
@@ -121,6 +129,7 @@
}
/** {@inheritDoc} */
+ @Override
public void start() {
try {
log.debug("Starting the Jetty server process");
@@ -146,27 +155,104 @@
// TODO manually set log level to at least INFO ?
public void waitForJettyServerToStart() throws IOException {
log.debug("Waiting for Jetty server to start ...");
- try (final BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
+
+ final File logsDir = pathToJettyBase. resolve("logs").toFile();
+ File[] files = null;
+ int loopCount = 0;
+
+ while (true) {
+ files = logsDir.listFiles(new FilenameFilter() {
+
+ @Override
+ public boolean accept(File arg0, String arg1) {
+ return arg1.endsWith("stderrout.log");
+ }
+ });
+
+ if (null != files && files.length > 0 && readFile(files[0])) {
+ break;
+ }
+ if (loopCount++ > 120) {
+ throw new RuntimeException("No log after 2 minutes");
+ }
+ log.trace("Jetty Log not there yet... waiting 500ms");
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ logFile = files[0];
+ isRunning = true;
+
+ }
+
+ /** Does the file have data which matches the pattern?
+ * @param file The file to open
+ * @return whether the pattern has been matched
+ * @throws IOException when badness occurrs.
+ */
+ private boolean readFile(File file) throws IOException {
+ BufferedReader reader = null;
+ InputStreamReader inputReader = null;
+ InputStream inputStream = null;
+
+ try {
+ inputStream = new FileInputStream(file);
+ inputReader = new InputStreamReader(inputStream);
+ reader = new BufferedReader(inputReader);
+ log.trace("Opened Jetty log {}", file.getAbsolutePath());
+
final Pattern pattern = Pattern.compile(startedRegex);
String line = "";
while ((line = reader.readLine()) != null) {
log.trace("Jetty log matches '{}' line '{}", pattern.matcher(line).find(), line);
if (pattern.matcher(line).find()) {
- break;
+ return true;
}
}
- }
- isRunning = true;
- }
-
- /** {@inheritDoc} */
+ reader.close();
+ } catch (IOException ex) {
+ log.error("Could not open log", ex);
+ throw new RuntimeException("Could not open log", ex);
+ } finally {
+ if (null != reader) {
+ reader.close();
+ }
+ if (null != inputReader) {
+ inputReader.close();
+ }
+ if (null != inputStream) {
+ inputStream.close();
+ }
+ }
+ return false;
+ }
+
+ /** {@inheritDoc} */
+ @Override
public void stop() {
if (process != null) {
+ log.trace("Stopping process");
process.destroy();
- }
- }
-
- /** {@inheritDoc} */
+ try {
+ log.trace("Waiting for process to exit");
+ process.waitFor();
[... 19 lines stripped ...]
More information about the commits
mailing list