Beispiel #1
0
    def test_lookup_job(self):
        client = molequeue.Client()
        client.connect_to_server('MoleQueue')

        expected_job_request = molequeue.JobRequest()
        expected_job_request.queue = 'salix'
        expected_job_request.program = 'sleep (testing)'
        expected_job_request.description = 'This is a test job'
        expected_job_request.hide_from_gui = True
        expected_job_request.popup_on_state_change = False

        molequeue_id = client.submit_job_request(expected_job_request)

        jobrequest = client.lookup_job(molequeue_id)

        self.assertEqual(molequeue_id, jobrequest.molequeue_id())
        self.assertEqual(jobrequest.job_state(), molequeue.JobState.ACCEPTED)
        self.assertTrue(isinstance(jobrequest.queue_id(), int))
        self.assertEqual(jobrequest.queue, expected_job_request.queue)
        self.assertEqual(jobrequest.program, expected_job_request.program)
        self.assertEqual(jobrequest.description,
                         expected_job_request.description)
        self.assertEqual(jobrequest.hide_from_gui,
                         expected_job_request.hide_from_gui)
        self.assertEqual(jobrequest.popup_on_state_change,
                         expected_job_request.popup_on_state_change)

        client.disconnect()
Beispiel #2
0
    def test_notification_callback(self):
        client = molequeue.Client()
        client.connect_to_server('MoleQueue')

        self.callback_count = 0

        def callback_counter(testcase, msg):
            testcase.callback_count += 1

        callback = partial(callback_counter, self)

        client.register_notification_callback(callback)
        client.register_notification_callback(callback)

        job_request = molequeue.JobRequest()
        job_request.queue = 'salix'
        job_request.program = 'sleep (testing)'

        molequeue_id = client.submit_job_request(job_request)

        # wait for notification
        time.sleep(1)

        self.assertIs(self.callback_count, 2)

        client.disconnect()
Beispiel #3
0
    def test_lookup_job(self):
        client = molequeue.Client()
        client.connect_to_server('MoleQueue')

        expected_job = molequeue.Job()
        expected_job.queue = 'salix'
        expected_job.program = 'sleep (testing)'
        expected_job.description = 'This is a test job'
        expected_job.hide_from_gui = True
        expected_job.popup_on_state_change = False

        file_contents = molequeue.FileContents()
        file_contents.filename = 'test.in'
        file_contents.contents = 'Hello'
        expected_job.input_file = file_contents

        molequeue_id = client.submit_job(expected_job)

        job = client.lookup_job(molequeue_id)

        self.assertEqual(molequeue_id, job.molequeue_id())
        self.assertEqual(job.job_state(), molequeue.JobState.ACCEPTED)
        self.assertEqual(job.queue_id(), None)
        self.assertEqual(job.queue, expected_job.queue)
        self.assertEqual(job.program, expected_job.program)
        self.assertEqual(job.description, expected_job.description)
        self.assertEqual(job.hide_from_gui, expected_job.hide_from_gui)
        self.assertEqual(job.popup_on_state_change,
                         expected_job.popup_on_state_change)

        client.disconnect()
Beispiel #4
0
def run_test():
    global socketname, molequeue_ids_done, clientId, mq_id_lock, num_jobs
    if debug:
        print "Client %s connecting to socket: %s" % (clientId, socketname)
    client = mq.Client()
    client.connect_to_server(socketname)

    def notification_callback(msg):
        global molequeue_ids_done, mq_id_lock
        try:
            if msg['method'] == 'jobStateChanged':
                if msg['params']['newState'] == 'Finished':
                    moleQueueId = msg['params']['moleQueueId']
                    with mq_id_lock:
                        molequeue_ids_done.append(moleQueueId)
                    if debug:
                        print "Job %d finished! (Client %s)" % (moleQueueId,
                                                                clientId)
        except Exception as ex:
            print "Unexpected notification:", msg, ex
        sys.stdout.flush()

    client.register_notification_callback(notification_callback)

    molequeue_ids = []
    for i in range(num_jobs):
        job = mq.Job()
        job.queue = "TestQueue"
        job.program = "TestProgram"
        job.description = "Test job %d from python client %s" % (i + 1,
                                                                 clientId)
        job.popup_on_state_change = False
        molequeue_id = client.submit_job(job, 30)
        molequeue_ids.append(molequeue_id)
        if molequeue_id == None:
            # Timeout
            client.disconnect()
            raise Exception("Connection timed out!")
        if debug:
            print "Submitted job %d (Client %s)" % (molequeue_id, clientId)
        sys.stdout.flush()

    timeout = 30
    mq_id_lock.acquire()
    while len(molequeue_ids) != len(molequeue_ids_done) and timeout > 0:
        if debug:
            print "Client %s waiting to finish (timeout=%d unmatchedIDs=%d)"%\
              (clientId, timeout, len(molequeue_ids) - len(molequeue_ids_done))
        sys.stdout.flush()
        timeout -= 1
        mq_id_lock.release()
        time.sleep(1)
        mq_id_lock.acquire()
    mq_id_lock.release()

    client.disconnect()
    if timeout > 0:
        return 0
    return 1
Beispiel #5
0
    def test_wait_for_response_timeout(self):
        client = molequeue.Client()
        # Fake up the request
        client._request_response_map[1] = None
        start = time.time()
        response = client._wait_for_response(1, 3)
        end = time.time()

        self.assertEqual(response, None)
        self.assertEqual(int(end - start), 3)
Beispiel #6
0
    def test_request_queue_list_update(self):
        client = molequeue.Client()
        client.connect_to_server('MoleQueue')

        queues = client.request_queue_list_update()

        for q in queues:
            print q.name, ", ", q.programs

        client.disconnect()
Beispiel #7
0
def run_test():
    global socketname
    if debug:
        print "Connecting to socket: %s" % socketname
    client = mq.Client()
    client.connect_to_server(socketname)
    res = client._send_rpc_kill_request(5)
    client.disconnect()
    if res == None:
        raise Exception("Connection timed out!")
    if res != True:
        return 1
    return 0
Beispiel #8
0
    def test_submit_job_request(self):
        client = molequeue.Client()
        client.connect_to_server('MoleQueue')

        job_request = molequeue.JobRequest()
        job_request.queue = 'salix'
        job_request.program = 'sleep (testing)'

        molequeue_id = client.submit_job_request(job_request)

        print "MoleQueue ID: ", molequeue_id

        self.assertTrue(isinstance(molequeue_id, int))

        client.disconnect()
Beispiel #9
0
    def test_submit_job(self):
        client = molequeue.Client()
        client.connect_to_server('MoleQueue')

        job = molequeue.Job()
        job.queue = 'salix'
        job.program = 'sleep (testing)'

        file_path = molequeue.FilePath()
        file_path.path = "/tmp/test"

        job.input_file = file_path

        molequeue_id = client.submit_job(job)

        print "MoleQueue ID: ", molequeue_id

        self.assertTrue(isinstance(molequeue_id, int))

        client.disconnect()