Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 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)
Пример #5
0
    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
Пример #6
0
 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)
Пример #7
0
 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)
Пример #8
0
 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)