if line_in is None or len(line_in) == 0: break if line_in[0] == '{': # then assume like {"offset":1, "data":$GPGGA,094013.0 ... }, if line_in[-1] == ',': line_in = line_in[:-1] return eval(line_in) # else, get next line return None if __name__ == "__main__": import sys from cp_lib.load_settings_ini import copy_config_ini_to_json, \ load_sdk_ini_as_dict copy_config_ini_to_json() app_path = "demo/gps_replay" my_app = CradlepointAppBase(app_path, call_router=False) # force a heavy reload of INI (app base normally only finds JSON) my_app.settings = load_sdk_ini_as_dict(app_path) _result = run_router_app(my_app) my_app.logger.info("Exiting, status code is {}".format(_result)) sys.exit(_result)
# our fake data, time-fixed to me NOW request = fix_time_sentence("$GPGGA,094013.0,4334.784909,N,11612.7664" + "48,W,1,09,0.9,830.6,M,-11.0,M,,*60") request = request.encode() base_app.logger.debug("Req({})".format(request)) sock.send(request) # this message has NO response! time.sleep(2.0) sock.close() return 0 if __name__ == '__main__': from cp_lib.app_base import CradlepointAppBase import tools.make_load_settings app_name = 'demo.gps_gate' # we share the settings.ini in demo/gps_gate/settings.ini base_app = CradlepointAppBase(full_name=app_name, call_router=False) # force a full make/read of {app_path}/settings.ini base_app.settings = tools.make_load_settings.load_settings( base_app.app_path) run_client()
def test_get_settings(self): """ :return: """ from cp_lib.app_base import CradlepointAppBase print() # move past the '.' # we'll just use this as example, assuming .config/setting.ini # and name = "network.tcp_echo" obj = CradlepointAppBase(name, call_router=False) # just slam in a known 'data tree' obj.settings = { 'application': { 'firmware': '6.1', 'name': 'make', 'restart': 'true', 'reboot': True, 'sleeping': 'On', 'explosion': 'enabled', }, 'router_api': { 'user_name': 'admin', 'interface': 'ENet USB-1', 'password': '******', 'local_ip': '192.168.1.1' }, 'logging': { 'syslog_ip': '192.168.1.6', 'pc_syslog': 'false', 'level': 'debug' }, 'startup': { 'boot_delay_for_wan': 'True', 'exit_delay': '30 sec', 'boot_delay_max': '5 min', 'bomb_delay': 17, 'rain_delay': '19', 'boot_delay_for_time': 'True' }, 'glob_dir': 'config', 'base_name': 'settings', 'app_dir': 'network\\tcp_echo\\', } logging.info("TEST simple get_setting(), without force_type") self.assertEqual("make", obj.get_setting("application.name")) self.assertEqual("6.1", obj.get_setting("application.firmware")) self.assertEqual(True, obj.get_setting("application.reboot")) logging.info("TEST get_setting(), with force_type=bool") self.assertEqual("true", obj.get_setting("application.restart")) self.assertEqual( True, obj.get_setting("application.restart", force_type=bool)) self.assertEqual(True, obj.get_setting("application.reboot")) self.assertEqual( True, obj.get_setting("application.reboot", force_type=bool)) self.assertEqual(1, obj.get_setting("application.reboot", force_type=int)) self.assertEqual("On", obj.get_setting("application.sleeping")) self.assertEqual( True, obj.get_setting("application.sleeping", force_type=bool)) self.assertEqual("enabled", obj.get_setting("application.explosion")) self.assertEqual( True, obj.get_setting("application.explosion", force_type=bool)) # doesn't exist, but force to String means "None" self.assertEqual( None, obj.get_setting("application.not_exists", force_type=bool)) with self.assertRaises(ValueError): # string 'true' can't be forced to int, bool True can obj.get_setting("application.name", force_type=bool) logging.info("TEST get_setting(), with force_type=str") # [restart] is already string, but [reboot] is bool(True) self.assertEqual( "true", obj.get_setting("application.restart", force_type=str)) self.assertEqual("True", obj.get_setting("application.reboot", force_type=str)) # doesn't exist, & force to String does not means "None" self.assertEqual(None, obj.get_setting("application.not_exists")) self.assertEqual( None, obj.get_setting("application.not_exists", force_type=str)) logging.info("TEST get_setting_time_secs()") self.assertEqual("30 sec", obj.get_setting("startup.exit_delay")) self.assertEqual(30.0, obj.get_setting_time_secs("startup.exit_delay")) self.assertEqual("5 min", obj.get_setting("startup.boot_delay_max")) self.assertEqual(300.0, obj.get_setting_time_secs("startup.boot_delay_max")) self.assertEqual(17, obj.get_setting("startup.bomb_delay")) self.assertEqual(17.0, obj.get_setting_time_secs("startup.bomb_delay")) self.assertEqual("19", obj.get_setting("startup.rain_delay")) self.assertEqual(19.0, obj.get_setting_time_secs("startup.rain_delay")) with self.assertRaises(ValueError): # string 'true' can't be forced to int, bool True can obj.get_setting("application.restart", force_type=int) return