Esempio n. 1
0
    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
Esempio n. 2
0
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
Esempio n. 5
0
    def setUp(self):
        self.instance = AppLogValidator()

        pass
Esempio n. 6
0
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