/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.component.execution.api; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.io.InputStream; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.easymock.Capture; import org.easymock.EasyMock; import org.junit.Before; import org.junit.Test; import de.rcenvironment.core.utils.common.TempFileService; import de.rcenvironment.core.utils.common.TempFileServiceAccess; import de.rcenvironment.core.utils.common.textstream.TextStreamWatcher; /** * Test cases for {@link ConsoleRowUtils}. * * @author Doreen Seider */ public class ConsoleRowUtilsTest { private final String firstConsoleLine = "first line"; private final String secondConsoleLine = "second line"; private final String consoleLines = firstConsoleLine + "\n" + secondConsoleLine; private ComponentLog componentLog; private Capture<String> firstConsoleLineCapture; private Capture<String> secondConsoleLineCapture; /** * Set up test objects. */ @Before public void setUp() { firstConsoleLineCapture = new Capture<String>(); secondConsoleLineCapture = new Capture<String>(); componentLog = EasyMock.createStrictMock(ComponentLog.class); componentLog.toolStdout(EasyMock.capture(firstConsoleLineCapture)); componentLog.toolStdout(EasyMock.capture(secondConsoleLineCapture)); EasyMock.replay(componentLog); } /** Test. */ @Test public void testLogToWorkflowConsole() { InputStream inputStream = IOUtils.toInputStream(consoleLines); TextStreamWatcher logToWorkflowConsole = ConsoleRowUtils.logToWorkflowConsole(componentLog, inputStream, ConsoleRow.Type.TOOL_OUT, null, false); logToWorkflowConsole.waitForTermination(); IOUtils.closeQuietly(inputStream); assertEquals(firstConsoleLine, firstConsoleLineCapture.getValue()); assertEquals(secondConsoleLine, secondConsoleLineCapture.getValue()); } /** * Test. * * @throws IOException on error */ @Test public void testLogToWorkflowConsoleWithFile() throws IOException { TempFileServiceAccess.setupUnitTestEnvironment(); TempFileService tempFileUtils = TempFileServiceAccess.getInstance(); File tempFile = null; try { tempFile = tempFileUtils.createTempFileWithFixedFilename("log.txt"); } catch (IOException e) { fail("Cannot create temp file for log file testing."); } InputStream inputStream = IOUtils.toInputStream(consoleLines); TextStreamWatcher logToWorkflowConsole = ConsoleRowUtils.logToWorkflowConsole(componentLog, inputStream, ConsoleRow.Type.TOOL_OUT, tempFile, false); logToWorkflowConsole.waitForTermination(); IOUtils.closeQuietly(inputStream); assertEquals(firstConsoleLine, firstConsoleLineCapture.getValue()); assertEquals(secondConsoleLine, secondConsoleLineCapture.getValue()); String content = null; try { content = FileUtils.readFileToString(tempFile); assertEquals(consoleLines, content); } catch (IOException e1) { fail("Reading log file's content failed"); } finally { if (tempFile != null) { try { tempFileUtils.disposeManagedTempDirOrFile(tempFile); } catch (IOException e) { fail("Cannot delete temp file for log file testing."); } } } } }