source: geniuswebcore/test/geniusweb/simplerunner/SessionRunnerE2ETest.py@ 93

Last change on this file since 93 was 90, checked in by Bart Vastenhouw, 3 years ago

Refactor to help reusing partiesserver.

File size: 2.1 KB
Line 
1from fileinput import filename
2import json
3from pathlib import Path
4import unittest
5from unittest.mock import Mock
6
7from pyson.ObjectMapper import ObjectMapper
8from tudelft_utilities_logging.ReportToLogger import ReportToLogger
9
10from geniusweb.protocol.NegoSettings import NegoSettings
11from geniusweb.simplerunner.ClassPathConnectionFactory import ClassPathConnectionFactory
12from geniusweb.simplerunner.NegoRunner import NegoRunner
13from geniusweb.simplerunner.Runner import Runner
14
15
16class SessionRunnerE2ETest(unittest.TestCase):
17 '''
18 E2E test doing a full real run of a session with real agents and protocol.
19 NOTICE This will exercise a full system to errors here may point far outside
20 this module.
21 '''
22 TEST_RUNTIME = 5000
23 jackson = ObjectMapper()
24 logger = Mock(ReportToLogger("test"))
25 filename:str
26 runner:Runner
27
28 params = ["test/resources/settings.json",
29# "test/resources/settings2.json" , PARTIALORDERING NOT YET
30 "test/resources/settingsbadprofile.json",
31# "test/resources/shaoptoursettings.json", ALLPERMUTATIONSETTINGS NOT YET
32 "test/resources/mopac.json"
33# "test/resources/tournament.json" ALLPERMUTATIONSETTINGS NOT YET
34 ]
35
36 def testAll(self):
37 '''
38 runs all the tests. Python has no standard 'parameterized' mechanism
39 so we have to do it ourselves.
40 '''
41 for filename in self.params:
42 self.filename = filename
43 with self.subTest("before " + self.filename):
44 self.before()
45 with self.subTest("runMain" + self.filename):
46 self.runTestMainFunction()
47
48 def before(self):
49 print("Running from file " + self.filename)
50 serialized = Path(self.filename).read_text("utf-8")
51 settings = self.jackson.parse(json.loads(serialized), NegoSettings)
52 self.runner = Runner(settings, ClassPathConnectionFactory(),
53 self.logger, self.TEST_RUNTIME)
54
55 def runTestMainFunction(self):
56 NegoRunner.main([self.filename])
57
58 def runTest(self):
59 self.runner.run()
60 print("Final state:\n" + str(self.runner.getProtocol().getState()))
61 self.assertTrue(self.runner.isProperlyStopped())
62 # check no warnings and more severe
63 self.asssertEqual([], self.logger.log.call_args_list)
Note: See TracBrowser for help on using the repository browser.