def __init__(self, src_paths = src_paths): """ - `src_path`: src path in which all_in_one json log for a user is coordinated with validator. """ # logger logger = logging.getLogger("AllInOneJsonLogCoordinator") logger.setLevel(logging.INFO) logging.basicConfig() self.logger = logger self.logger.info("init starts") self.src_paths = src_paths self.user_log_validator = UserLogValidator() self.app_log_validator = AppLogValidator() self.logger.info("init finished") pass
class AllInOneJsonLogCoordinator(Coordinator): """ Coordinator coordinates all_in_one json log to all_in_one_validated json log from two aspects, validating user and validating application. see Validator Class in more detail for validation process. """ #src_paths = "./data/mixs_logs/json/usrs/*/all/all_in_one_log.json" src_paths = "/speech/dbwork/mul/reco1/AppPrediction/SonyLogging/Logs/from_TKY/pulled_from_TKY/mixs_logs/json/usrs/*/all/all_in_one_log.json" dst_filename = "all_in_one_validated_log.json" def __init__(self, src_paths = src_paths): """ - `src_path`: src path in which all_in_one json log for a user is coordinated with validator. """ # logger logger = logging.getLogger("AllInOneJsonLogCoordinator") logger.setLevel(logging.INFO) logging.basicConfig() self.logger = logger self.logger.info("init starts") self.src_paths = src_paths self.user_log_validator = UserLogValidator() self.app_log_validator = AppLogValidator() self.logger.info("init finished") pass def coordinate(self, ): """ coordinate all_in_one json file with (app, user)-validator """ st = time.time() self.logger.info("coordinate starts") paths = glob.glob(self.src_paths) for path in paths: # input data fpin = open(path, "r") self.logger.info("processing %s" % path) user_log = json.load(fpin) # validate user if not self.user_log_validator.validate_user(user_log): continue # validate app out_data = self.app_log_validator.validate_app(user_log) parent_dir = "/".join(path.split("/")[0:-1]) fpout = open("%s/%s" % (parent_dir, self.dst_filename), "w") json.dump(out_data, fpout) fpout.close() fpin.close() pass et = time.time() self.logger.info("%f [s]" % (et - st)) self.logger.info("coordinate finished") pass pass
def setUp(self): self.instance = AppLogValidator() pass
class TestAppLogValidator(unittest.TestCase): def setUp(self): self.instance = AppLogValidator() pass def tearDown(self): pass def _add_dummy_log(self, loginfo, t, appname): """ Arguments: - `t`: - `appname`: """ loginfo[t] = {} loginfo[t]["appLaunch"] = {} loginfo[t]["appLaunch"]["appName"] = appname pass def test_correct_seq_1(self, ): # com.coverscreen.cover # dummy data loginfo = {} self._add_dummy_log(loginfo, 0, "a") self._add_dummy_log(loginfo, 1, "com.coverscreen.cover") self._add_dummy_log(loginfo, 2, "b") self._add_dummy_log(loginfo, 3, "com.coverscreen.cover") self._add_dummy_log(loginfo, 4, "b") self._add_dummy_log(loginfo, 5, "com.coverscreen.cover") self._add_dummy_log(loginfo, 6, "b") self._add_dummy_log(loginfo, 7, "com.coverscreen.cover") self._add_dummy_log(loginfo, 8, "b") self._add_dummy_log(loginfo, 9, "c") self._add_dummy_log(loginfo, 10, "com.coverscreen.cover") self._add_dummy_log(loginfo, 11, "a") loginfo = self.instance._correct_seq(loginfo) # extected loginfo_extected = {} self._add_dummy_log(loginfo_extected, 0, "a") self._add_dummy_log(loginfo_extected, 2, "b") self._add_dummy_log(loginfo_extected, 9, "c") self._add_dummy_log(loginfo_extected, 11, "a") print "expected:", loginfo_extected print "actual:", loginfo self.assertEqual(loginfo_extected, loginfo) pass def test_correct_seq_2(self, ): # com.coverscreen.cover # dummy data loginfo = {} self._add_dummy_log(loginfo, 0, "a") self._add_dummy_log(loginfo, 1, "com.coverscreen.cover") self._add_dummy_log(loginfo, 2, "a") self._add_dummy_log(loginfo, 3, "com.coverscreen.cover") self._add_dummy_log(loginfo, 4, "a") self._add_dummy_log(loginfo, 5, "c") self._add_dummy_log(loginfo, 6, "d") self._add_dummy_log(loginfo, 7, "com.coverscreen.cover") self._add_dummy_log(loginfo, 8, "d") self._add_dummy_log(loginfo, 9, "e") self._add_dummy_log(loginfo, 10, "com.coverscreen.cover") self._add_dummy_log(loginfo, 11, "b") loginfo = self.instance._correct_seq(loginfo) # extected loginfo_extected = {} self._add_dummy_log(loginfo_extected, 0, "a") self._add_dummy_log(loginfo_extected, 5, "c") self._add_dummy_log(loginfo_extected, 6, "d") self._add_dummy_log(loginfo_extected, 9, "e") self._add_dummy_log(loginfo_extected, 11, "b") print "expected:", loginfo_extected print "actual:", loginfo self.assertEqual(loginfo_extected, loginfo) pass