Initial commit
This commit is contained in:
commit
66a6860316
407 changed files with 1254365 additions and 0 deletions
100
test/testRealtime.py
Normal file
100
test/testRealtime.py
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
from testutils import *
|
||||
import subprocess
|
||||
import filecmp
|
||||
import datetime
|
||||
|
||||
class TestRealtime(unittest.TestCase):
|
||||
def setUp(self):
|
||||
setLogger('None', ('localhost', 514), logging.WARN)
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
def test_local_realtime_thread(self):
|
||||
self.assertTrue(runRealtime("realtime_thread", 35))
|
||||
|
||||
def test_local_realtime_tk(self):
|
||||
self.assertTrue(runRealtime("realtime_tk", 35))
|
||||
|
||||
def test_local_realtime_loop(self):
|
||||
self.assertTrue(runRealtime("realtime_loop", 35))
|
||||
|
||||
def test_local_realtime_thread_upscale(self):
|
||||
self.assertTrue(runRealtime("realtime_thread_2.0", 70))
|
||||
|
||||
def test_local_realtime_tk_upscale(self):
|
||||
self.assertTrue(runRealtime("realtime_tk_2.0", 70))
|
||||
|
||||
def test_local_realtime_loop_upscale(self):
|
||||
self.assertTrue(runRealtime("realtime_loop_2.0", 70))
|
||||
|
||||
def test_local_realtime_thread_downscale(self):
|
||||
self.assertTrue(runRealtime("realtime_thread_0.5", 17))
|
||||
|
||||
def test_local_realtime_tk_downscale(self):
|
||||
self.assertTrue(runRealtime("realtime_tk_0.5", 17))
|
||||
|
||||
def test_local_realtime_loop_downscale(self):
|
||||
self.assertTrue(runRealtime("realtime_loop_0.5", 17))
|
||||
|
||||
def test_local_realtime_nested(self):
|
||||
self.assertTrue(runRealtime("nested_realtime", 20))
|
||||
|
||||
def test_local_realtime_dynamicstructure(self):
|
||||
self.assertTrue(runRealtime("dynamicstructure_realtime", 40))
|
||||
|
||||
def test_local_realtime_injection(self):
|
||||
proc = subprocess.Popen("python testmodels/injecting.py", shell=True)
|
||||
proc.wait()
|
||||
self.assertEquals(proc.returncode, 0)
|
||||
|
||||
def runRealtime(name, reqtime):
|
||||
before = datetime.datetime.now()
|
||||
try:
|
||||
if runLocal(name):
|
||||
# Some tests have their own test instead of the normal 'realtime' test
|
||||
return True
|
||||
except OSError:
|
||||
pass
|
||||
after = datetime.datetime.now()
|
||||
# Possibly only a slight timing difference, which is allowable
|
||||
f1 = open("output/realtime", 'r')
|
||||
f2 = open("expected/realtime", 'r')
|
||||
for l1, l2 in zip(f1, f2):
|
||||
if l1 != l2:
|
||||
# Check that at most 1 character is different
|
||||
diffs = 0
|
||||
for c1, c2 in zip(l1, l2):
|
||||
if c1 != c2:
|
||||
diffs += 1
|
||||
if diffs > 1:
|
||||
raise Exception("Multiple characters were different in the logs")
|
||||
# It seems that the difference wasn't that big after all, just continue
|
||||
# Seems to be done, check for time passed
|
||||
diff = after - before
|
||||
if not (reqtime - 1 <= diff.seconds <= reqtime + 3):
|
||||
raise Exception("Total runtime was not as expected. Expected: " + str(reqtime) + "s, but got: " + str(diff.seconds) + "s")
|
||||
else:
|
||||
return True
|
||||
|
||||
def runLocal(name):
|
||||
outfile = "output/" + str(name)
|
||||
removeFile(outfile)
|
||||
import subprocess
|
||||
try:
|
||||
proc = subprocess.Popen("python testmodels/experiment.py " + str(name) + "_local >> /dev/null", shell=True)
|
||||
proc.wait()
|
||||
except:
|
||||
import sys
|
||||
print(sys.exc_info()[0])
|
||||
import traceback
|
||||
traceback.print_tb(sys.exc_info()[2])
|
||||
proc.terminate()
|
||||
# Prevent zombie
|
||||
del proc
|
||||
print("Exception received :(")
|
||||
return False
|
||||
|
||||
if not filecmp.cmp(outfile, "expected/" + str(name)):
|
||||
return False
|
||||
return True
|
||||
Loading…
Add table
Add a link
Reference in a new issue