示例#1
0
    def test_get_experiment_uses_by_id_notfound(self):
        reservations, usages = self._store_two_reservations()

        reservation1 = self._reserve_experiment()
        reservation2 = self._reserve_experiment()

        db_sess_id = ValidDatabaseSessionId('student1', "student")

        sess_id, _ = self.ups._reserve_session(db_sess_id)
        with wlcontext(self.ups, session_id=sess_id):
            experiment_results = core_api.get_experiment_uses_by_id(
                (reservations[0], reservation1, reservation2))

            self.assertEquals(3, len(experiment_results))

            # reservation_id1 is for student1, so it returns a real object (with a real experiment_use_id)
            self.assertTrue(experiment_results[0].is_finished())
            experiment_results[0].experiment_use.experiment_use_id = None
            self.assertEquals(
                FinishedReservationResult(usages[0].load_files('.')),
                experiment_results[0])

            # reservation_id2 is for student2, and the session is for student1, so it returns None
            self.assertTrue(experiment_results[1].is_alive())
            self.assertTrue(experiment_results[2].is_alive())
    def test_kickout_from_ups(self):
        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)

        methods.kickout_from_ups.call(sess_id.id)
        with wlcontext(self.ups, session_id = sess_id):
            self.assertRaises( core_exc.SessionNotFoundError, core_api.get_reservation_status)
示例#3
0
    def test_reserve_experiment(self):
        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)

        exp_id = ExperimentId('this does not experiment','this neither')
        
        with wlcontext(self.ups, session_id = sess_id):
            self.assertRaises(
                coreExc.UnknownExperimentIdError,
                core_api.reserve_experiment, exp_id, "{}", "{}" )

            exp_id = ExperimentId('ud-dummy','Dummy experiments')

            lab_sess_id = SessionId.SessionId("lab_session_id")

            self.lab_mock.reserve_experiment(exp_id, "{}")
            self.mocker.result(lab_sess_id)
            self.mocker.count(0, 1)
            self.lab_mock.resolve_experiment_address(lab_sess_id)
            self.mocker.result(CoordAddress.translate('foo:bar@machine'))
            self.mocker.count(0, 1)
            self.mocker.replay()


            reservation = core_api.reserve_experiment(exp_id, "{}", "{}")

            self.assertTrue( isinstance(reservation,Reservation.Reservation))

            core_api.logout()
示例#4
0
    def test_reserve_experiment(self):
        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)

        exp_id = ExperimentId('this does not experiment', 'this neither')

        with wlcontext(self.ups, session_id=sess_id):
            self.assertRaises(coreExc.UnknownExperimentIdError,
                              core_api.reserve_experiment, exp_id, "{}", "{}")

            exp_id = ExperimentId('ud-dummy', 'Dummy experiments')

            lab_sess_id = SessionId.SessionId("lab_session_id")

            self.lab_mock.reserve_experiment(exp_id, "{}")
            self.mocker.result(lab_sess_id)
            self.mocker.count(0, 1)
            self.lab_mock.resolve_experiment_address(lab_sess_id)
            self.mocker.result(CoordAddress.translate('foo:bar@machine'))
            self.mocker.count(0, 1)
            self.mocker.replay()

            reservation = core_api.reserve_experiment(exp_id, "{}", "{}")

            self.assertTrue(isinstance(reservation, Reservation.Reservation))

            core_api.logout()
    def test_kickout_from_ups(self):
        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)

        methods.kickout_from_ups.call(sess_id.id)
        with wlcontext(self.ups, session_id = sess_id):
            self.assertRaises( core_exc.SessionNotFoundError, core_api.get_reservation_status)
示例#6
0
    def test_ldap_user_right(self):
        mockr = mocker.Mocker()
        ldap_auth._ldap_provider.ldap_module = mockr.mock()
        with wlcontext(self.core_server):
            session_id = core_api.login(fake_ldap_user, fake_ldap_passwd)

        self.assertTrue( isinstance(session_id, SessionId) )
        self.assertTrue( len(session_id.id) > 5 )
示例#7
0
 def test_valid_user_and_invalid_password(self):
     login_manager.LOGIN_FAILED_DELAY = 0.2
     with wlcontext(self.core_server):
         self.assertRaises(
             LoginErrors.InvalidCredentialsError,
             core_api.login,
             fake_right_user,
             fake_wrong_passwd
         )
示例#8
0
    def test_reserve_session(self):
        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)

        session_manager = self.ups._session_manager

        sess = session_manager.get_session(sess_id)
        self.assertEquals(sess['db_session_id'].username, db_sess_id.username)
        with wlcontext(self.ups, session_id=sess_id):
            core_api.logout()
示例#9
0
    def test_reserve_session(self):
        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)

        session_manager = self.ups._session_manager

        sess = session_manager.get_session(sess_id)
        self.assertEquals(sess['db_session_id'].username, db_sess_id.username)
        with wlcontext(self.ups, session_id = sess_id):
            core_api.logout()
    def test_kickout_from_coordinator(self):
        category   = "Dummy experiments"
        experiment = "ud-dummy"

        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)
        with wlcontext(self.ups, session_id = sess_id):
            status = core_api.reserve_experiment(ExperimentId( experiment, category ), "{}", "{}")

            reservation_session_id = status.reservation_id
            
            with wlcontext(self.ups, reservation_id = reservation_session_id, session_id = sess_id):
                status = core_api.get_reservation_status()
                self.assertNotEquals( None, status )

                reservation_id = methods.get_reservation_id.call(sess_id.id)
                methods.kickout_from_coordinator.call(reservation_id)

                self.assertRaises( core_exc.NoCurrentReservationError, core_api.get_reservation_status)
示例#11
0
    def test_kickout_from_coordinator(self):
        category   = "Dummy experiments"
        experiment = "ud-dummy"

        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)
        with wlcontext(self.ups, session_id = sess_id):
            status = core_api.reserve_experiment(ExperimentId( experiment, category ), "{}", "{}")

            reservation_session_id = status.reservation_id
            
            with wlcontext(self.ups, reservation_id = reservation_session_id, session_id = sess_id):
                status = core_api.get_reservation_status()
                self.assertNotEquals( None, status )

                reservation_id = methods.get_reservation_id.call(sess_id.id)
                methods.kickout_from_coordinator.call(reservation_id)

                self.assertRaises( core_exc.NoCurrentReservationError, core_api.get_reservation_status)
    def test_get_reservation_id_one_user(self):
        category   = "Dummy experiments"
        experiment = "ud-dummy"

        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)
        with wlcontext(self.ups, session_id = sess_id):
            core_api.reserve_experiment(ExperimentId( experiment, category ), "{}", "{}")

        reservation_id = methods.get_reservation_id.call(sess_id.id)
        self.assertNotEquals(None, reservation_id)
示例#13
0
    def test_get_reservation_id_one_user(self):
        category   = "Dummy experiments"
        experiment = "ud-dummy"

        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)
        with wlcontext(self.ups, session_id = sess_id):
            core_api.reserve_experiment(ExperimentId( experiment, category ), "{}", "{}")

        reservation_id = methods.get_reservation_id.call(sess_id.id)
        self.assertNotEquals(None, reservation_id)
示例#14
0
    def test_get_user_information(self):
        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)

        with wlcontext(self.ups, session_id=sess_id):
            user = core_api.get_user_information()

            self.assertEquals("student2", user.login)
            self.assertEquals("Name of student 2", user.full_name)
            self.assertEquals("*****@*****.**", user.email)

            core_api.logout()
示例#15
0
    def test_get_user_information(self):
        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)

        with wlcontext(self.ups, session_id = sess_id):
            user = core_api.get_user_information()

            self.assertEquals("student2",user.login)
            self.assertEquals("Name of student 2",user.full_name)
            self.assertEquals("*****@*****.**",user.email)

            core_api.logout()
示例#16
0
    def test_list_experiments(self):
        # student1
        db_sess_id1 = ValidDatabaseSessionId('student1', "student")
        sess_id1, _ = self.ups._reserve_session(db_sess_id1)

        with wlcontext(self.ups, session_id=sess_id1):
            experiments = core_api.list_experiments()

            self.assertLessEqual(5, len(experiments))

            experiment_names = list(
                (experiment.experiment.name for experiment in experiments))
            self.assertTrue('ud-dummy' in experiment_names)
            self.assertTrue('ud-logic' in experiment_names)
            self.assertTrue('ud-fpga' in experiment_names)
            self.assertTrue('flashdummy' in experiment_names)
            self.assertTrue('javadummy' in experiment_names)

            core_api.logout()

        # student2
        db_sess_id2 = ValidDatabaseSessionId('student2', "student")
        sess_id2, _ = self.ups._reserve_session(db_sess_id2)

        with wlcontext(self.ups, session_id=sess_id2):
            experiments = core_api.list_experiments()
            self.assertEquals(7, len(experiments))

            experiment_names = list(
                (experiment.experiment.name for experiment in experiments))
            self.assertTrue('ud-dummy' in experiment_names)
            self.assertTrue('ud-fpga' in experiment_names)
            self.assertTrue('ud-pld' in experiment_names)
            self.assertTrue('ud-gpib' in experiment_names)
            self.assertTrue('ud-logic' in experiment_names)
            self.assertTrue('javadummy' in experiment_names)
            self.assertTrue('flashdummy' in experiment_names)

            core_api.logout()
示例#17
0
    def test_get_experiment_use_by_id_found(self):
        reservations, usages = self._store_two_reservations()

        db_sess_id = ValidDatabaseSessionId('student1', "student")

        sess_id, _ = self.ups._reserve_session(db_sess_id)
        with wlcontext(self.ups, session_id = sess_id):
            finished_result = core_api.get_experiment_use_by_id(reservations[0])

            self.assertTrue( finished_result.is_finished() )

            # reservation_id1 is for student1, so it returns a real object (with a real experiment_use_id)
            finished_result.experiment_use.experiment_use_id = None
            self.assertEquals(FinishedReservationResult(usages[0].load_files('.')), finished_result)
示例#18
0
    def test_list_experiments(self):
        # student1
        db_sess_id1 = ValidDatabaseSessionId('student1', "student")
        sess_id1, _ = self.ups._reserve_session(db_sess_id1)

        with wlcontext(self.ups, session_id = sess_id1):
            experiments = core_api.list_experiments()

            self.assertLessEqual(5, len(experiments) )

            experiment_names = list(( experiment.experiment.name for experiment in experiments ))
            self.assertTrue( 'ud-dummy' in experiment_names )
            self.assertTrue( 'ud-logic' in experiment_names )
            self.assertTrue( 'ud-fpga' in experiment_names )
            self.assertTrue( 'flashdummy' in experiment_names )
            self.assertTrue( 'javadummy' in experiment_names )

            core_api.logout()

        # student2
        db_sess_id2 = ValidDatabaseSessionId('student2', "student")
        sess_id2, _ = self.ups._reserve_session(db_sess_id2)

        with wlcontext(self.ups, session_id = sess_id2):
            experiments = core_api.list_experiments()
            self.assertEquals(7, len(experiments) )

            experiment_names = list(( experiment.experiment.name for experiment in experiments ))
            self.assertTrue( 'ud-dummy' in experiment_names )
            self.assertTrue( 'ud-fpga' in experiment_names )
            self.assertTrue( 'ud-pld' in experiment_names )
            self.assertTrue( 'ud-gpib' in experiment_names )
            self.assertTrue( 'ud-logic' in experiment_names )
            self.assertTrue( 'javadummy' in experiment_names )
            self.assertTrue( 'flashdummy' in experiment_names )

            core_api.logout()
示例#19
0
    def test_get_reservation_info(self):
        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)
        exp_id = ExperimentId('ud-dummy','Dummy experiments')
        lab_sess_id = SessionId.SessionId("lab_session_id")

        self.lab_mock.reserve_experiment(exp_id, "{}")
        self.mocker.result(lab_sess_id)
        self.mocker.count(0, 1)
        self.lab_mock.resolve_experiment_address(lab_sess_id)
        self.mocker.result(CoordAddress.translate('foo:bar@machine'))
        self.mocker.count(0, 1)
        self.mocker.replay()

        with wlcontext(self.ups, session_id = sess_id):
            reservation = core_api.reserve_experiment( exp_id, "{}", "{}")

        with wlcontext(self.ups, reservation_id = reservation.reservation_id):
            reservation_info = core_api.get_reservation_info()
            self.assertEquals('ud-dummy', reservation_info.exp_name)
            self.assertEquals('Dummy experiments', reservation_info.cat_name)

        with wlcontext(self.ups, session_id = sess_id):
            core_api.logout()
示例#20
0
    def test_get_reservation_info(self):
        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)
        exp_id = ExperimentId('ud-dummy', 'Dummy experiments')
        lab_sess_id = SessionId.SessionId("lab_session_id")

        self.lab_mock.reserve_experiment(exp_id, "{}")
        self.mocker.result(lab_sess_id)
        self.mocker.count(0, 1)
        self.lab_mock.resolve_experiment_address(lab_sess_id)
        self.mocker.result(CoordAddress.translate('foo:bar@machine'))
        self.mocker.count(0, 1)
        self.mocker.replay()

        with wlcontext(self.ups, session_id=sess_id):
            reservation = core_api.reserve_experiment(exp_id, "{}", "{}")

        with wlcontext(self.ups, reservation_id=reservation.reservation_id):
            reservation_info = core_api.get_reservation_info()
            self.assertEquals('ud-dummy', reservation_info.exp_name)
            self.assertEquals('Dummy experiments', reservation_info.cat_name)

        with wlcontext(self.ups, session_id=sess_id):
            core_api.logout()
示例#21
0
 def test_login_delay(self):
     login_manager.LOGIN_FAILED_DELAY = 0.2
     #Sometimes it's 0.999323129654
     #0.001 should be ok, but just in case
     ERROR_MARGIN = 0.01
     start_time = time.time()
     with wlcontext(self.core_server):
         self.assertRaises(
                 LoginErrors.InvalidCredentialsError,
                 core_api.login,
                 fake_wrong_user,
                 fake_wrong_passwd
             )
     finish_time = time.time()
     self.assertTrue((finish_time + ERROR_MARGIN - start_time) >= login_manager.LOGIN_FAILED_DELAY)
示例#22
0
    def _reserve_experiment(self):
        db_sess_id = ValidDatabaseSessionId('student1', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)
        with wlcontext(self.ups, session_id=sess_id):
            exp_id = ExperimentId('ud-dummy', 'Dummy experiments')

            lab_sess_id = SessionId.SessionId("lab_session_id")
            self.lab_mock.reserve_experiment(exp_id, "{}")
            self.mocker.result(lab_sess_id)
            self.mocker.count(0, 1)
            self.lab_mock.resolve_experiment_address(lab_sess_id)
            self.mocker.result(CoordAddress.translate('foo:bar@machine'))
            self.mocker.count(0, 1)
            self.mocker.replay()

            reservation = core_api.reserve_experiment(exp_id, "{}", "{}")
            return reservation.reservation_id
示例#23
0
    def test_get_experiment_use_by_id_found(self):
        reservations, usages = self._store_two_reservations()

        db_sess_id = ValidDatabaseSessionId('student1', "student")

        sess_id, _ = self.ups._reserve_session(db_sess_id)
        with wlcontext(self.ups, session_id=sess_id):
            finished_result = core_api.get_experiment_use_by_id(
                reservations[0])

            self.assertTrue(finished_result.is_finished())

            # reservation_id1 is for student1, so it returns a real object (with a real experiment_use_id)
            finished_result.experiment_use.experiment_use_id = None
            self.assertEquals(
                FinishedReservationResult(usages[0].load_files('.')),
                finished_result)
示例#24
0
    def _reserve_experiment(self):
        db_sess_id = ValidDatabaseSessionId('student1', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)
        with wlcontext(self.ups, session_id = sess_id):
            exp_id = ExperimentId('ud-dummy','Dummy experiments')

            lab_sess_id = SessionId.SessionId("lab_session_id")
            self.lab_mock.reserve_experiment(exp_id, "{}")
            self.mocker.result(lab_sess_id)
            self.mocker.count(0, 1)
            self.lab_mock.resolve_experiment_address(lab_sess_id)
            self.mocker.result(CoordAddress.translate('foo:bar@machine'))
            self.mocker.count(0, 1)
            self.mocker.replay()

            reservation = core_api.reserve_experiment(exp_id, "{}", "{}")
            return reservation.reservation_id
示例#25
0
    def test_ldap_user_invalid(self):
        mockr = mocker.Mocker()
        ldap_object = mockr.mock()
        ldap_object.simple_bind_s(fake_ldap_user + '@cdk.deusto.es', fake_ldap_invalid_passwd)
        mockr.throw(ldap.INVALID_CREDENTIALS)
        ldap_module = mockr.mock()
        ldap_module.initialize('ldaps://castor.cdk.deusto.es')
        mockr.result(ldap_object)
        ldap_auth._ldap_provider.ldap_module = ldap_module

        with wlcontext(self.core_server):
            with mockr:
                self.assertRaises(
                    LoginErrors.InvalidCredentialsError,
                    core_api.login,
                    fake_ldap_user,
                    fake_ldap_invalid_passwd
                )
示例#26
0
    def test_get_experiment_uses_by_id_found(self):
        reservations, usages = self._store_two_reservations()

        db_sess_id = ValidDatabaseSessionId('student1', "student")

        sess_id, _ = self.ups._reserve_session(db_sess_id)
        with wlcontext(self.ups, session_id = sess_id):
            experiment_results = core_api.get_experiment_uses_by_id(reservations)
            
            self.assertEquals(2, len(experiment_results))

            self.assertTrue( experiment_results[0].is_finished() )
            # reservation_id1 is for student1, so it returns a real object (with a real experiment_use_id)
            experiment_results[0].experiment_use.experiment_use_id = None
            self.assertEquals(FinishedReservationResult(usages[0].load_files('.')), experiment_results[0])

            # reservation_id2 is for student2, and the session is for student1, so it is forbidden
            self.assertTrue(experiment_results[1].is_forbidden())
    def test_get_experiment_ups_session_ids(self):
        category   = "Dummy experiments"
        experiment = "ud-dummy"

        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)

        #
        # It returns only the sessions_ids of the experiments
        #
        result = methods.get_experiment_ups_session_ids.call(category, experiment)
        self.assertEquals( [], result )
        
        with wlcontext(self.ups, session_id = sess_id):
            status = core_api.reserve_experiment(ExperimentId( experiment, category ), "{}", "{}")

        result = methods.get_experiment_ups_session_ids.call(category, experiment)
        self.assertEquals( 1, len(result) )
        session_id, login, reservation_id = result[0]
        self.assertEquals( status.reservation_id.id.split(';')[0], session_id )
        self.assertEquals( "student2", login )
示例#28
0
    def test_get_experiment_ups_session_ids(self):
        category   = "Dummy experiments"
        experiment = "ud-dummy"

        db_sess_id = ValidDatabaseSessionId('student2', "student")
        sess_id, _ = self.ups._reserve_session(db_sess_id)

        #
        # It returns only the sessions_ids of the experiments
        #
        result = methods.get_experiment_ups_session_ids.call(category, experiment)
        self.assertEquals( [], result )
        
        with wlcontext(self.ups, session_id = sess_id):
            status = core_api.reserve_experiment(ExperimentId( experiment, category ), "{}", "{}")

        result = methods.get_experiment_ups_session_ids.call(category, experiment)
        self.assertEquals( 1, len(result) )
        session_id, login, reservation_id = result[0]
        self.assertEquals( status.reservation_id.id.split(';')[0], session_id )
        self.assertEquals( "student2", login )
示例#29
0
 def test_right_session(self):
     with wlcontext(self.core_server):
         session_id = core_api.login(fake_right_user, fake_right_passwd)
         self.assertTrue( isinstance(session_id, SessionId) )
         self.assertTrue( len(session_id.id) > 5 )