def test_session_coverage_8_play_pause_jump_both_alive_speed(self): test_utils.session_coverage_extraction_test(logs_collection, 'test8', self._sessionInfo) expected_output = [[0.0, 60.0], [70.0, 100.0], [130.0, 150.0]] data_extraction.session_coverage_extraction(self._sessionInfo) self.assertEqual(self._sessionInfo['session_coverage'], expected_output)
def test_session_coverage_5_play_pause_jump_backwards_alive(self): test_utils.session_coverage_extraction_test(logs_collection, 'test5', self._sessionInfo) expected_output = [[10.0, 60.0], [80.0, 90.0], [100.0, 120.0]] data_extraction.session_coverage_extraction(self._sessionInfo) self.assertEqual(self._sessionInfo['session_coverage'], expected_output)
def test_session_coverage_3_play_pause_jump_forwards(self): test_utils.session_coverage_extraction_test(logs_collection, 'test3', self._sessionInfo) expected_output = [[0.0, 30.0], [50.0, 70.0], [90.0, 120.0]] data_extraction.session_coverage_extraction(self._sessionInfo) self.assertEqual(self._sessionInfo['session_coverage'], expected_output)
def test_session_coverage_2_play_pause_alive(self): test_utils.session_coverage_extraction_test(logs_collection, 'test2', self._sessionInfo) expected_output = [[0.0, 180.0]] data_extraction.session_coverage_extraction(self._sessionInfo) self.assertEqual(self._sessionInfo['session_coverage'], expected_output)
def printSessionCoverage(self, course: str, user: str, session: str): """Returns an image of the session coverage as html string Note: This method requires the user (_systemInfo['users'][user]['sessions']) to be already initialized. Args: course (str): The id of the course whose user session coverage we are asking for. user (str): The id of the user whose session coverage we are asking for. session (str): The demanded session. Returns: str: the image representation of the session coverage """ if (course not in self._systemInfo['courses'].keys()): self._systemInfo['courses'][course] = { 'users': {user: {'sessions': {}}}} else: if (user not in self._systemInfo['courses'] [course]['users'].keys()): self._systemInfo['courses'][course][ 'users'][user] = {'sessions': {}} # Check if it is the first time we encounter this session try: sessionInfo = self._systemInfo['courses'][ course]['users'][user]['sessions'][session] except KeyError: # We have never computed the sessionInfo for this user -> execute a # complete extraction for this session sessionInfo = {} data_extraction.execute_sessionInfo_extraction( sessionInfo, logs_collection=self._logs, session=session, keep_session_data=self._config['keep_session_data']) self._systemInfo['courses'][course]['users'][ user]['sessions'][session] = sessionInfo # Get the lesson duration for this session try: lesson_duration = self._systemInfo['courses'][course][ 'lessons_durations'][sessionInfo['lesson_id']] except KeyError: # THIS MUST NOT HAPPEN -> it implies that the lesson has not been # registered when uploaded lesson_duration = 7200.0 # Check if the session_coverage has already been calculated try: image = self._plot.printSessionCoverage( sessionInfo, lesson_duration) except KeyError: # We don't have this information in the system -> extract it data_extraction.session_coverage_extraction( sessionInfo, lesson_duration) image = self._plot.printSessionCoverage(sessionInfo) return image
def test_session_coverage_mute_7_play_pause_jump_both_alive(self): test_utils.session_coverage_extraction_test(logs_collection, 'test7', self._sessionInfo) expected_output = [] data_extraction.session_coverage_extraction(self._sessionInfo) self.assertEqual(self._sessionInfo['muted_intervals'], expected_output)
def test_session_coverage_mute_4_play_pause_jump_backwards(self): test_utils.session_coverage_extraction_test(logs_collection, 'test4', self._sessionInfo) expected_output = [[40.0, 50.0], [80.0, 90.0], [110.0, 120.0]] data_extraction.session_coverage_extraction(self._sessionInfo) self.assertEqual(self._sessionInfo['muted_intervals'], expected_output)
def test_session_coverage_mute_1_play_pause(self): test_utils.session_coverage_extraction_test(logs_collection, 'test1', self._sessionInfo) expected_output = [[35.0, 50.0]] data_extraction.session_coverage_extraction(self._sessionInfo) self.assertEqual(self._sessionInfo['muted_intervals'], expected_output)