unit tests for ProcessManager

This commit is contained in:
Aidan Hahn 2019-05-23 14:00:15 -07:00
parent d9beaff898
commit 7d8f8111c8
No known key found for this signature in database
GPG key ID: 327711E983899316
2 changed files with 126 additions and 14 deletions

View file

@ -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;
}
/*

View file

@ -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);
}
}