modules/core/native-system/src/test/java/org/rhq/core/system/DeadProcessInfoRefreshTest.java
| 59 +++++-----
modules/core/native-system/src/test/resources/org/rhq/core/system/bash-watch-echo.sh
| 7 -
modules/core/native-system/src/test/resources/org/rhq/core/system/win-watch-echo.bat
| 5
3 files changed, 30 insertions(+), 41 deletions(-)
New commits:
commit b63460a52459b4bd6515bf7176621e8c8c9f4091
Author: Thomas Segismont <tsegismo(a)redhat.com>
Date: Thu Feb 28 21:24:26 2013 +0100
Fix DeadProcessInfoRefreshTest (will now work on all platforms)
diff --git
a/modules/core/native-system/src/test/java/org/rhq/core/system/DeadProcessInfoRefreshTest.java
b/modules/core/native-system/src/test/java/org/rhq/core/system/DeadProcessInfoRefreshTest.java
index b8d7d74..9ee811e 100644
---
a/modules/core/native-system/src/test/java/org/rhq/core/system/DeadProcessInfoRefreshTest.java
+++
b/modules/core/native-system/src/test/java/org/rhq/core/system/DeadProcessInfoRefreshTest.java
@@ -23,25 +23,33 @@ package org.rhq.core.system;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.util.ArrayList;
import java.util.List;
-import org.hyperic.sigar.OperatingSystem;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
-import org.rhq.core.util.stream.StreamUtil;
-
/**
* @author Thomas Segismont
*/
public class DeadProcessInfoRefreshTest {
- private static final String KNOWN_ARG = "hellosigar";
+ private static final class SampleProgram {
+
+ @SuppressWarnings("unused")
+ public static void main(String[] args) {
+ while (true) {
+ try {
+ Thread.sleep(5000);
+ } catch (Exception ignore) {
+ }
+ }
+ }
+
+ }
+
+ private static final String SAMPLE_PROGRAM_NAME = SampleProgram.class.getName();
private Process testProcess;
@@ -54,33 +62,26 @@ public class DeadProcessInfoRefreshTest {
throw new RuntimeException("Test process is not alive");
}
NativeSystemInfo systemInfo = new NativeSystemInfo();
- List<ProcessInfo> foundProcesses = systemInfo.getProcesses("arg|"
+ KNOWN_ARG + "|match=.*");
+ List<ProcessInfo> foundProcesses = systemInfo.getProcesses("arg|"
+ SAMPLE_PROGRAM_NAME + "|match=.*");
if (foundProcesses.size() != 1) {
- throw new RuntimeException("Found " + foundProcesses.size() +
" with arg [" + KNOWN_ARG + "]");
+ throw new RuntimeException("Found " + foundProcesses.size() +
" processes with arg ["
+ + SampleProgram.class.getName() + "]");
}
testProcessInfo = foundProcesses.iterator().next();
}
private Process createTestProcess() throws Exception {
- if (OperatingSystem.IS_WIN32) {
- // On Windows run a simple bat file which behaves like 'watch echo'
- File batFile = File.createTempFile("win-watch-echo",
".bat");
- batFile.deleteOnExit();
- InputStream is =
getClass().getClassLoader().getResourceAsStream("org/rhq/core/system/win-watch-echo.bat");
- OutputStream os = new FileOutputStream(batFile);
- StreamUtil.copy(is, os, true);
- ProcessBuilder processBuilder = new ProcessBuilder("cmd",
batFile.getAbsolutePath(), KNOWN_ARG);
- return processBuilder.start();
- } else {
- // On other systems run a simple bash file which behaves like 'watch
echo'
- File bashFile = File.createTempFile("bash-watch-echo",
".sh");
- bashFile.deleteOnExit();
- InputStream is =
getClass().getClassLoader().getResourceAsStream("org/rhq/core/system/bash-watch-echo.sh");
- OutputStream os = new FileOutputStream(bashFile);
- StreamUtil.copy(is, os, true);
- ProcessBuilder processBuilder = new ProcessBuilder("bash",
bashFile.getAbsolutePath(), KNOWN_ARG);
- return processBuilder.start();
- }
+ String javaHome = System.getProperty("java.home");
+ String javaCmd = javaHome + "/bin/java";
+ List<String> args = new ArrayList<String>();
+ args.add(javaCmd);
+ args.add("-cp");
+ args.add("target/test-classes");
+ args.add(SampleProgram.class.getName());
+ ProcessBuilder processBuilder = new ProcessBuilder(args);
+ processBuilder.inheritIO();
+ Process process = processBuilder.start();
+ return process;
}
@AfterTest(alwaysRun = true)
diff --git
a/modules/core/native-system/src/test/resources/org/rhq/core/system/bash-watch-echo.sh
b/modules/core/native-system/src/test/resources/org/rhq/core/system/bash-watch-echo.sh
deleted file mode 100644
index 7d0f4c0..0000000
---
a/modules/core/native-system/src/test/resources/org/rhq/core/system/bash-watch-echo.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-while :
-do
- echo $1
- sleep 1
-done
diff --git
a/modules/core/native-system/src/test/resources/org/rhq/core/system/win-watch-echo.bat
b/modules/core/native-system/src/test/resources/org/rhq/core/system/win-watch-echo.bat
deleted file mode 100644
index 4404159..0000000
---
a/modules/core/native-system/src/test/resources/org/rhq/core/system/win-watch-echo.bat
+++ /dev/null
@@ -1,5 +0,0 @@
-@ECHO OFF
-:loop
- echo %1
- timeout /t 2
-goto loop