Beispiel #1
0
 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), [])
Beispiel #2
0
 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)))
Beispiel #3
0
 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), [])
Beispiel #4
0
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)
Beispiel #5
0
    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)
Beispiel #6
0
    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"))