From 7d8f8111c82b99a8dec2c7d7528853a082908daf Mon Sep 17 00:00:00 2001 From: Aidan Hahn Date: Thu, 23 May 2019 14:00:15 -0700 Subject: [PATCH] unit tests for ProcessManager --- src/main/java/JobServ/ProcessManager.java | 10 +- src/test/java/JobServ/ProcessManagerTest.java | 130 ++++++++++++++++-- 2 files changed, 126 insertions(+), 14 deletions(-) diff --git a/src/main/java/JobServ/ProcessManager.java b/src/main/java/JobServ/ProcessManager.java index 1679f51..7793486 100644 --- a/src/main/java/JobServ/ProcessManager.java +++ b/src/main/java/JobServ/ProcessManager.java @@ -189,16 +189,16 @@ class ProcessManager { /* * killProcess() - * returns false if couldnt grab lock - * ALSO RETURNS TRUE IF PROCESS DOESNT EXIST + * returns 1 if couldnt grab lock + * ALSO RETURNS 0 IF PROCESS DOESNT EXIST */ - public Boolean killProcess(int pid) { + public int killProcess(int pid) { try { this.getLock(); } catch (TimeoutException e) { System.err.println("Timeout killing process: " + e.getMessage()); - return false; + return 1; } ProcessController candidate = this.processMap.get(pid); @@ -207,7 +207,7 @@ class ProcessManager { } this.releaseLock(); - return true; + return 0; } /* diff --git a/src/test/java/JobServ/ProcessManagerTest.java b/src/test/java/JobServ/ProcessManagerTest.java index 505c03f..fac1e4c 100644 --- a/src/test/java/JobServ/ProcessManagerTest.java +++ b/src/test/java/JobServ/ProcessManagerTest.java @@ -11,7 +11,9 @@ package JobServ; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; /* @@ -38,27 +40,137 @@ public class ProcessManagerTest { */ @Test public void addProcessesTest() { - int pid1 = manager.newProcess("ping google.com"); - int pid2 = manager.newProcess("ping google.com"); - assertEquals(2, pid2); - assertEquals(1, pid1); + int pid = manager.newProcess("sleep 1"); + assertNotEquals(-2, pid); manager.shutdown(); } /* * getStatusTest - * positive unit test for getStatus + * unit test for getStatus */ @Test public void getStatusTest() { - int pid1 = manager.newProcess("ping google.com"); - assertEquals(0, pid1); - - int status = manager.getProcessStatus(pid1); + int pid = manager.newProcess("sleep 1"); + int status = manager.getProcessStatus(pid); assertEquals(0, status); manager.shutdown(); } + + /* + * getOldStatusTest + * do finished processes return 1 + */ + @Test + public void getOldStatusTest() { + int pid = manager.newProcess("echo 'test'"); + + try{ + Thread.sleep(200); + } catch (InterruptedException e) { + // + } + + int status = manager.getProcessStatus(pid); + assertEquals(1, status); + + manager.shutdown(); + } + + /* + * getUnknownStatusTest() + * ensures 2 is returned when a status is not known + */ + @Test + public void getUnknownStatusTest() { + int status = manager.getProcessStatus(400); + assertEquals(2, status); + } + + /* + * getReturnTest() + * test of process returns + */ + @Test + public void getReturnTest() { + int pid = manager.newProcess("sleep .5"); + int ret = manager.getProcessReturn(pid); + assertEquals(256, ret); + + try { + Thread.sleep(550); + } catch (InterruptedException e) { + // + } + + ret = manager.getProcessReturn(pid); + assertNotEquals(ret, 256); + assertNotEquals(ret, 257); + assertNotEquals(ret, 258); + + manager.shutdown(); + } + + /* + * getUNknownProcessReturn + * tests process return for unknown processes + */ + @Test + public void getUnknownProcessReturnTest() { + int ret = manager.getProcessReturn(502); + assertEquals(258, ret); + manager.shutdown(); + } + + /* + * getProcessOutputTest() + * verifies output is grabbed correctly from processes + */ + @Test + public void getProcessOutputTest() { + int pid = manager.newProcess("echo test"); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // + } + + String out = manager.getProcessOutput(pid); + assertEquals("test\n", out); // calls string.equals() + + manager.shutdown(); + } + + + /* + * getUnknownOutputTest() + * verifies correct information is returned when + * output is requested of an unknown process + */ + @Test + public void getUnknownOutputTest() { + String out = manager.getProcessOutput(532); + assertEquals("[-] ERROR: Process not found", out); + manager.shutdown(); + } + + /* + * killProcessTest() + * ensures killing a process works + */ + @Test + public void killProcessTest() { + int pid = manager.newProcess("sleep 10"); + int ret = manager.killProcess(pid); + + assertEquals(0, ret); + + int status = manager.getProcessStatus(pid); + + assertEquals(1, status); + } }