123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- # Copyright 2014 Modelling, Simulation and Design Lab (MSDL) at
- # McGill University and the University of Antwerp (http://msdl.cs.mcgill.ca/)
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- from testutils import *
- import subprocess
- import filecmp
- import datetime
- class TestLocal(unittest.TestCase):
- def setUp(self):
- setLogger('None', ('localhost', 514), logging.WARN)
- def tearDown(self):
- pass
- def test_local_normal(self):
- self.assertTrue(runLocal("normal"))
- def test_local_Z(self):
- self.assertTrue(runLocal("z"))
- def test_local_dual(self):
- self.assertTrue(runLocal("dual"))
- def test_local_dualdepth(self):
- self.assertTrue(runLocal("dualdepth"))
- def test_local_dual_mp(self):
- self.assertTrue(runLocal("dual_mp"))
- def test_local_longtime(self):
- self.assertTrue(runLocal("longtime"))
- def test_local_confluent(self):
- self.assertTrue(runLocal("confluent"))
- def test_local_classic(self):
- self.assertTrue(runLocal("classicDEVS"))
- def test_local_classicConnect(self):
- self.assertTrue(runLocal("classicDEVSconnect"))
- def test_local_zeroLookahead(self):
- self.assertTrue(runLocal("zeroLookahead"))
- def test_local_multi(self):
- self.assertTrue(runLocal("multi"))
- def test_local_trace(self):
- removeFile("devstrace.vcd")
- removeFile("devstrace.xml")
- self.assertTrue(runLocal("trace"))
- # Compare XML and VCD trace files too
- if not vcdEqual("devstrace.vcd", "expected/trace.vcd"):
- print("VCD trace comparison did not match")
- self.fail()
- if not filecmp.cmp("devstrace.xml", "expected/trace.xml"):
- print("XML trace comparison did not match")
- self.fail()
- def test_local_stateStop(self):
- self.assertTrue(runLocal("stateStop"))
- def test_local_atomic(self):
- self.assertTrue(runLocal("atomic"))
- def test_local_local(self):
- self.assertTrue(runLocal("local"))
- def test_local_nested(self):
- self.assertTrue(runLocal("nested"))
- def test_local_multiinputs(self):
- self.assertTrue(runLocal("multiinputs"))
- def test_local_doublelayer(self):
- self.assertTrue(runLocal("doublelayer"))
- def test_local_dynamicstructure(self):
- self.assertTrue(runLocal("dynamicstructure"))
- def test_local_random(self):
- self.assertTrue(runLocal("random"))
- def test_local_draw(self):
- removeFile("model.dot")
- self.assertTrue(runLocal("draw"))
- if not filecmp.cmp("model.dot", "expected/local_model.dot"):
- print("Graphviz file did not match")
- self.fail()
- removeFile("model.dot")
- def test_local_reinit(self):
- removeFile("output/reinit1")
- removeFile("output/reinit2")
- removeFile("output/reinit3")
- try:
- runLocal("reinit")
- except OSError:
- # Problem with the comparison of the file that doesn't exist...
- pass
- # Compare the files
- if not filecmp.cmp("output/reinit1", "expected/reinit1") or \
- not filecmp.cmp("output/reinit2", "expected/reinit2") or \
- not filecmp.cmp("output/reinit3", "expected/reinit3"):
- return False
- else:
- return True
-
- def test_local_multisim(self):
- removeFile("output/normal")
- removeFile("output/dualdepth")
- try:
- runLocal("multisim")
- except OSError:
- pass
- if not filecmp.cmp("output/normal", "expected/normal") or \
- not filecmp.cmp("output/dualdepth", "expected/dualdepth"):
- self.fail()
- def test_local_continue(self):
- removeFile("output/run1")
- removeFile("output/run2")
- try:
- runLocal("continue")
- except OSError:
- pass
- if not filecmp.cmp("output/run1", "expected/run1") or \
- not filecmp.cmp("output/run2", "expected/run2"):
- self.fail()
- 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
|