/* * ProcessManagerTest * * v1.0 * * May 22, 2019 */ 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; /* * ProcessManagerTest * Class that performs positive and negative unit tests * of every public method in ProcessManager. This not * only unit tests ProcessManager but also integration * tests it with ProcessController. */ public class ProcessManagerTest { ProcessManager manager; /* * ProcessManagerTest constructor * initializes the process manager */ public ProcessManagerTest() { manager = new ProcessManager(); } /* * addProcessTest() * positive unit test for newProcess */ @Test public void addProcessesTest() { int pid = manager.newProcess("sleep 1"); assertNotEquals(-2, pid); manager.shutdown(); } /* * getStatusTest * unit test for getStatus */ @Test public void getStatusTest() { 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(3, 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 * also tests if getProcessStatus returns 2 */ @Test public void killProcessTest() { int pid = manager.newProcess("sleep 10"); int ret = manager.killProcess(pid); assertEquals(1, ret); int status = manager.getProcessStatus(pid); assertEquals(2, status); manager.shutdown(); } }