def test_empty_config(self): print("Testing empty config...") self.patchConfigFile("") cfg.load(self.CFG1) self.assertEqual(rp.VERBOSITY, 1.) self.assertEqual(cfg.CONTROL_RATE, 1.) self.assertEqual(cfg.VEH_SELECTORS, ['']) self.assertEqual(cfg.MAX_PLATOON_GAP, 15.) self.assertEqual(cfg.CATCHUP_DIST, 50.) self.assertEqual(cfg.PLATOON_SPLIT_TIME, 3.) self.assertEqual(cfg.SWITCH_IMPATIENCE_FACTOR, 0.1) self.assertEqual(cfg.VTYPE_FILE, '') for mode in PlatoonMode: self.assertTrue(mode in cfg.LC_MODE) self.assertTrue(mode in cfg.SPEEDFACTOR) self.assertEqual(cfg.LC_MODE[PlatoonMode.NONE], 0b1001010101) self.assertEqual(cfg.LC_MODE[PlatoonMode.LEADER], 0b1001010101) self.assertEqual(cfg.LC_MODE[PlatoonMode.FOLLOWER], 0b1000000010) self.assertEqual(cfg.LC_MODE[PlatoonMode.CATCHUP], 0b1000000010) self.assertEqual(cfg.LC_MODE[PlatoonMode.CATCHUP_FOLLOWER], 0b1000000010) for tp in cfg.PLATOON_VTYPES: for mode in PlatoonMode: self.assertTrue(mode in cfg.PLATOON_VTYPES[tp]) self.assertListEqual(list(rp.WARNING_LOG), [])
def test_config_warnings(self): print("Testing config warnings...") self.patchConfigFile(self.cfg_body1) cfg.load(self.CFG1) #cfg.load(TestConfig.CFG2) expected_warnings = [ "WARNING: No attributes found for tag 'vehicleSelectors'. (Config)", "WARNING: Encountered unknown configuration parameter 'UnknownConfigParam'! (Config)", "WARNING: Verbosity must be one of [0, 1, 2, 3, 4]! Ignoring given value: 200 (Config)", "WARNING: Parameter controlRate must be positive. Ignoring given value: 0.0 (Config)", "WARNING: Parameter maxPlatoonGap must be positive. Ignoring given value: -1.0 (Config)", "WARNING: Parameter catchupDist must be positive. Ignoring given value: -1.0 (Config)", "WARNING: Parameter switchImpatienceFactor must be non-negative. Ignoring given value: -1.0 (Config)", "WARNING: Parameter platoonSplitTime must be non-negative. Ignoring given value: -1.0 (Config)", "WARNING: Given lane change mode '100000' lies out of admissible range [0,255]. Using default mode instead. (Config)", "WARNING: Given lane change mode '-1' lies out of admissible range [0,255]. Using default mode instead. (Config)", "WARNING: vTypeMap must specify original type. Ignoring malformed vTypeMap element. (Config)", "WARNING: Given speedFactor 0.0 is invalid. Using default value. (Config)", "WARNING: Given speedFactor -4.0 is invalid. Using default value. (Config)", "WARNING: Given speedFactor -1.0 is invalid. Using default value. (Config)" ] warning_list = [w[1] for w in rp.WARNING_LOG] for w in expected_warnings: self.assertIn(w, warning_list) self.assertListEqual( [], list(set(warning_list).difference(expected_warnings)))
def test_example_config(self): print("Testing standard config...") self.patchConfigFile(self.cfg_body0) cfg.load(self.CFG1) self.assertEqual(rp.VERBOSITY, 2.) self.assertEqual(cfg.CONTROL_RATE, 10.) self.assertEqual(cfg.VEH_SELECTORS, ['pkwFern1', 'pkwFern2']) self.assertEqual(cfg.MAX_PLATOON_GAP, 15.) self.assertEqual(cfg.CATCHUP_DIST, 50.) self.assertEqual(cfg.PLATOON_SPLIT_TIME, 3.) self.assertEqual(cfg.SWITCH_IMPATIENCE_FACTOR, 0.1) self.assertTrue(cfg.VTYPE_FILE.endswith('vtype.map')) for mode in PlatoonMode: self.assertTrue(mode in cfg.LC_MODE) self.assertTrue(mode in cfg.SPEEDFACTOR) self.assertEqual(cfg.LC_MODE[PlatoonMode.NONE], 0b1001010101) self.assertEqual(cfg.LC_MODE[PlatoonMode.LEADER], 0b1001010101) self.assertEqual(cfg.LC_MODE[PlatoonMode.FOLLOWER], 0b1000000010) self.assertEqual(cfg.LC_MODE[PlatoonMode.CATCHUP], 0b1000000010) self.assertEqual(cfg.LC_MODE[PlatoonMode.CATCHUP_FOLLOWER], 0b1000000010) for tp in cfg.PLATOON_VTYPES: for mode in PlatoonMode: self.assertTrue(mode in cfg.PLATOON_VTYPES[tp]) self.assertListEqual(list(rp.WARNING_LOG), [])
def load(config_filename): ''' Load the config from file and create a Platoon Manager ''' global _mgr _config.load(config_filename) _mgr = _platoonmanager.PlatoonManager() if _useStepListener: # For SUMO version >= 0.30 traci.addStepListener(_mgr)
def test_corrupted_vTypeMapFile_raises_exception(self): print("Testing malformed vtype map file causing exception...") self.patchConfigFile(self.cfg_body2) with self.assertRaises(SimplaException): cfg.load(self.CFG1) self.patchConfigFile(self.cfg_body3) with self.assertRaises(SimplaException): cfg.load(self.CFG1) self.patchConfigFile(self.cfg_body4) with self.assertRaises(SimplaException): cfg.load(self.CFG1)
def test_corrupted_vTypeMapFile_exception_text(self): print("Testing exception messages...") self.patchConfigFile(self.cfg_body4) try: cfg.load(self.CFG1) except SimplaException as e: #print (str(e)) self.assertTrue(str(e).startswith("Given vTypeMapFile")) self.patchConfigFile(self.cfg_body3) try: cfg.load(self.CFG1) except SimplaException as e: self.assertTrue( str(e).startswith("Platoon leader vType must be specified")) self.patchConfigFile(self.cfg_body2) try: cfg.load(self.CFG1) except SimplaException as e: self.assertTrue( str(e).startswith("Original vType must be specified"))