def test_tmgr_base_heartbeat():
    sid = 'test.0000'
    rmgr = BaseRmgr({}, sid, None, {})

    os.environ['ENTK_HB_INTERVAL'] = '30'

    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    tmgr._hb_terminate = threading.Event()
    tmgr._hb_thread = threading.Thread(target=tmgr._heartbeat, name='heartbeat')
    tmgr._hb_thread.start()

    proc = Process(target=func_for_heartbeat_test, args=(hostname,
                                                         port,
                                                         tmgr._hb_request_q,
                                                         tmgr._hb_response_q))
    proc.start()

    proc.join()
    tmgr._hb_thread.join()
Exemplo n.º 2
0
def func(obj, obj_type, new_state, queue1):

    hostname = os.environ.get('RMQ_HOSTNAME', 'localhost')
    port = int(os.environ.get('RMQ_PORT', 5672))
    username = os.environ.get('RMQ_USERNAME')
    password = os.environ.get('RMQ_PASSWORD')

    credentials = pika.PlainCredentials(username, password)
    rmq_conn_params = pika.ConnectionParameters(host=hostname,
                                                port=port,
                                                credentials=credentials)

    sid = 'test.0013'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    rmq_conn_params=rmq_conn_params,
                    rts=None)

    mq_connection = pika.BlockingConnection(rmq_conn_params)
    mq_channel = mq_connection.channel()

    tmgr._advance(obj, obj_type, new_state, mq_channel, queue1)

    mq_connection.close()
Exemplo n.º 3
0
def test_tmgr_base_terminate_heartbeat():

    credentials = pika.PlainCredentials(username, password)
    rmq_conn_params = pika.ConnectionParameters(host=hostname,
                                                port=port,
                                                credentials=credentials)

    sid = 'test.0005'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    rmq_conn_params=rmq_conn_params,
                    rts=None)

    tmgr._hb_terminate = mt.Event()

    assert tmgr.start_heartbeat()
    assert not tmgr._hb_terminate.is_set()
    assert tmgr._hb_thread.is_alive()

    tmgr.terminate_heartbeat()
    time.sleep(5)

    assert not tmgr._hb_thread
    assert tmgr._hb_terminate.is_set()
Exemplo n.º 4
0
def test_tmgr_base_methods():

    credentials = pika.PlainCredentials(username, password)
    rmq_conn_params = pika.ConnectionParameters(host=hostname,
                                                port=port,
                                                credentials=credentials)

    sid = 'test.0009'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    rmq_conn_params=rmq_conn_params,
                    rts=None)

    with pytest.raises(NotImplementedError):
        tmgr._tmgr(uid=None,
                   rmgr=None,
                   rmq_conn_params=None,
                   pending_queue=None,
                   completed_queue=None)

    with pytest.raises(NotImplementedError):
        tmgr.start_manager()
Exemplo n.º 5
0
def test_tmgr_base_heartbeat():

    credentials = pika.PlainCredentials(username, password)
    rmq_conn_params = pika.ConnectionParameters(host=hostname,
                                                port=port,
                                                credentials=credentials)
    sid = 'test.0003'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    rmq_conn_params=rmq_conn_params,
                    rts=None)

    tmgr._hb_terminate = mt.Event()
    tmgr._hb_thread = mt.Thread(target=tmgr._heartbeat, name='heartbeat')
    tmgr._hb_thread.start()

    proc = mp.Process(target=func_for_heartbeat_test,
                      args=(hostname, port, username, password,
                            tmgr._hb_request_q, tmgr._hb_response_q))
    proc.start()
    proc.join()
    tmgr._hb_thread.join()
Exemplo n.º 6
0
def test_tmgr_base_heartbeat():
    sid = 'test.0000'
    rmgr = BaseRmgr({}, sid, None, {})

    os.environ['ENTK_HB_INTERVAL'] = '30'

    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    tmgr._hb_terminate = threading.Event()
    tmgr._hb_thread = threading.Thread(target=tmgr._heartbeat,
                                       name='heartbeat')
    tmgr._hb_thread.start()

    proc = Process(target=func_for_heartbeat_test,
                   args=(hostname, port, tmgr._hb_request_q,
                         tmgr._hb_response_q))
    proc.start()

    proc.join()
    tmgr._hb_thread.join()
Exemplo n.º 7
0
    def test_terminate_manager(self, mocked_init, mocked_Logger,
                               mocked_Profiler):

        rmq_params = mock.MagicMock(spec=ConnectionParameters)
        rmgr = mock.MagicMock(spec=Base_ResourceManager)
        tmgr = Tmgr('test_tmgr', ['pending_queues'], ['completed_queues'],
                    rmgr, rmq_params, 'test_rts')

        tmgr._log = mocked_Logger
        tmgr._prof = mocked_Profiler
        tmgr._uid = 'tmgr.0000'

        tmgr._tmgr_terminate = mp.Event()

        tmgr._tmgr_process = mp.Process(target=_tmgr_side_effect,
                                        name='test_tmgr',
                                        args=(tmgr._tmgr_terminate, ))
        tmgr._tmgr_process.start()

        pid = tmgr._tmgr_process.pid
        tmgr.check_manager = mock.MagicMock(return_value=True)
        tmgr.terminate_manager()

        self.assertIsNone(tmgr._tmgr_process)

        self.assertFalse(psutil.pid_exists(pid))
Exemplo n.º 8
0
    def test_start_heartbeat(self, mocked_init, mocked_Logger,
                             mocked_Profiler):

        rmq_params = mock.MagicMock(spec=ConnectionParameters)
        rmgr = mock.MagicMock(spec=Base_ResourceManager)
        tmgr = Tmgr('test_tmgr', ['pending_queues'], ['completed_queues'],
                    rmgr, rmq_params, 'test_rts')

        global_boolean = False

        def _heartbeat_side_effect():
            nonlocal global_boolean
            global_boolean = True

        tmgr._log = mocked_Logger
        tmgr._prof = mocked_Profiler
        tmgr._heartbeat = mock.MagicMock(side_effect=_heartbeat_side_effect)
        tmgr._uid = 'tmgr.0000'
        tmgr._hb_terminate = None
        tmgr._hb_thread = None

        tmgr.start_heartbeat()

        try:
            self.assertTrue(global_boolean)
            self.assertIsInstance(tmgr._hb_terminate, mt.Event)
            self.assertIsInstance(tmgr._hb_thread, mt.Thread)
        finally:
            if tmgr._hb_thread.is_alive():
                tmgr._hb_thread.join()
Exemplo n.º 9
0
        def component_execution(packets, conn_params, queue):

            tmgr = BaseTmgr(None, None, None, None, None, None)
            tmgr._log = mocked_Logger
            tmgr._prof = mocked_Profiler
            mq_connection2 = pika.BlockingConnection(rmq_conn_params)
            mq_channel2 = mq_connection2.channel()
            for obj_type, obj, in packets:
                tmgr._sync_with_master(obj, obj_type, mq_channel2, conn_params,
                                       queue)
                if mq_channel2.is_open:
                    mq_channel2.close()
def test_tmgr_base_terminate_manager():

    sid = 'test.0000'
    rmgr = BaseRmgr({}, sid, None, {})

    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    tmgr._tmgr_process = Process(target=tmgr._tmgr, name='heartbeat')
    tmgr._tmgr_terminate = Event()
    tmgr.terminate_manager()

    assert not tmgr._tmgr_process
    assert tmgr._tmgr_terminate.is_set()
Exemplo n.º 11
0
def test_tmgr_base_terminate_manager():

    sid  = 'test.0006'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    tmgr._tmgr_process   = mp.Process(target=tmgr._tmgr, name='heartbeat')
    tmgr._tmgr_terminate = mp.Event()

    tmgr.terminate_manager()

    assert not tmgr._tmgr_process
    assert     tmgr._tmgr_terminate.is_set()
Exemplo n.º 12
0
def syncer(obj, obj_type, queue1):

    hostname = os.environ.get('RMQ_HOSTNAME', 'localhost')
    port = int(os.environ.get('RMQ_PORT', 5672))

    rmq_conn_params = pika.ConnectionParameters(host=hostname, port=port)
    mq_connection = pika.BlockingConnection(rmq_conn_params)
    mq_channel = mq_connection.channel()

    sid = 'test.0015'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    rmq_conn_params=rmq_conn_params,
                    rts=None)

    tmgr._sync_with_master(obj, obj_type, mq_channel, queue1)

    mq_connection.close()
Exemplo n.º 13
0
def test_tmgr_base_start_heartbeat():

    sid  = 'test.0004'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    assert     tmgr.start_heartbeat()
    assert not tmgr._hb_terminate.is_set()
    assert     tmgr._hb_thread.is_alive()

    tmgr._hb_terminate.set()
    time.sleep(15)
    tmgr._hb_thread.join()

    assert not tmgr._hb_thread.is_alive()
Exemplo n.º 14
0
def test_tmgr_base_start_heartbeat():

    rmq_conn_params = pika.ConnectionParameters(host=hostname, port=port)
    sid  = 'test.0004'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    rmq_conn_params=rmq_conn_params,
                    rts=None)

    assert     tmgr.start_heartbeat()
    assert not tmgr._hb_terminate.is_set()
    assert     tmgr._hb_thread.is_alive()

    tmgr._hb_terminate.set()
    time.sleep(15)
    tmgr._hb_thread.join()

    assert not tmgr._hb_thread.is_alive()
Exemplo n.º 15
0
def func(obj, obj_type, new_state, queue1):

    hostname = os.environ.get('RMQ_HOSTNAME', 'localhost')
    port = int(os.environ.get('RMQ_PORT', 5672))

    sid  = 'test.0013'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    mq_connection = pika.BlockingConnection(pika.ConnectionParameters(
                                                      host=hostname, port=port))
    mq_channel = mq_connection.channel()

    tmgr._advance(obj, obj_type, new_state, mq_channel, queue1)

    mq_connection.close()
Exemplo n.º 16
0
def test_tmgr_base_methods():

    sid  = 'test.0009'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    with pytest.raises(NotImplementedError):
        tmgr._tmgr(uid=None,
                   rmgr=None,
                   mq_hostname=None,
                   port=None,
                   pending_queue=None,
                   completed_queue=None)

    with pytest.raises(NotImplementedError):
        tmgr.start_manager()
def test_tmgr_base_start_heartbeat():

    sid = 'test.0000'
    rmgr = BaseRmgr({}, sid, None, {})

    os.environ['ENTK_HB_INTERVAL'] = '30'

    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    assert tmgr.start_heartbeat()
    assert not tmgr._hb_terminate.is_set()
    assert tmgr._hb_thread.is_alive()
    tmgr._hb_terminate.set()
    sleep(15)
    tmgr._hb_thread.join()
    assert not tmgr._hb_thread.is_alive()
Exemplo n.º 18
0
def test_tmgr_base_terminate_manager():

    credentials = pika.PlainCredentials(username, password)
    rmq_conn_params = pika.ConnectionParameters(host=hostname,
                                                port=port,
                                                credentials=credentials)

    sid = 'test.0006'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    rmq_conn_params=rmq_conn_params,
                    rts=None)

    tmgr._tmgr_process = mp.Process(target=tmgr._tmgr, name='heartbeat')
    tmgr._tmgr_terminate = mp.Event()

    tmgr.terminate_manager()

    assert not tmgr._tmgr_process
    assert tmgr._tmgr_terminate.is_set()
Exemplo n.º 19
0
def test_tmgr_base_terminate_heartbeat():

    sid = 'test.0000'
    rmgr = BaseRmgr({}, sid, None, {})
    os.environ['ENTK_HB_INTERVAL'] = '30'

    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    tmgr._hb_terminate = threading.Event()

    assert tmgr.start_heartbeat()
    assert not tmgr._hb_terminate.is_set()
    assert tmgr._hb_thread.is_alive()
    tmgr.terminate_heartbeat()
    sleep(30)
    assert not tmgr._hb_thread
    assert tmgr._hb_terminate.is_set()
def test_tmgr_base_methods():

    sid = 'test.0000'
    rmgr = BaseRmgr({}, sid, None, {})

    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    with pytest.raises(NotImplementedError):
        tmgr._tmgr(uid=None,
                   rmgr=None,
                   logger=None,
                   mq_hostname=None,
                   port=None,
                   pending_queue=None,
                   completed_queue=None)

    with pytest.raises(NotImplementedError):
        tmgr.start_manager()
Exemplo n.º 21
0
    def test_advance(self, mocked_init, mocked_Logger, mocked_Profiler,
                     mocked_BlockingConnection):

        mocked_BlockingConnection.channel = mock.MagicMock(
            spec=pika.BlockingConnection.channel)
        mocked_BlockingConnection.close = mock.MagicMock(return_value=None)
        mocked_BlockingConnection.channel.queue_delete = mock.MagicMock(
            return_value=None)
        mocked_BlockingConnection.channel.queue_declare = mock.MagicMock(
            return_value=None)
        rmq_params = mock.MagicMock(spec=ConnectionParameters)
        rmgr = mock.MagicMock(spec=Base_ResourceManager)
        tmgr = Tmgr('test_tmgr', ['pending_queues'], ['completed_queues'],
                    rmgr, rmq_params, 'test_rts')

        global_syncs = []

        def _sync_side_effect(obj, obj_type, channel, conn_params, queue):
            nonlocal global_syncs
            global_syncs.append([obj, obj_type, channel, conn_params, queue])

        tmgr._log = mocked_Logger
        tmgr._prof = mocked_Profiler
        tmgr._sync_with_master = mock.MagicMock(side_effect=_sync_side_effect)
        tmgr._uid = 'tmgr.0000'
        obj = mock.Mock()
        obj.parent_stage = {'uid': 'test_stage'}
        obj.parent_pipeline = {'uid': 'test_pipe'}
        obj.uid = 'test_object'
        obj.state = 'test_state'
        tmgr._advance(obj, 'Task', None, 'channel', 'params', 'queue')
        self.assertEqual(global_syncs[0],
                         [obj, 'Task', 'channel', 'params', 'queue'])
        self.assertIsNone(obj.state)
        global_syncs = []
        tmgr._advance(obj, 'Stage', 'new_state', 'channel', 'params', 'queue')
        self.assertEqual(global_syncs[0],
                         [obj, 'Stage', 'channel', 'params', 'queue'])
        self.assertEqual(obj.state, 'new_state')
Exemplo n.º 22
0
def test_tmgr_base_check_heartbeat():

    sid  = 'test.0007'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    tmgr._hb_thread    = mt.Thread(target=tmgr._heartbeat, name='heartbeat')
    tmgr._hb_terminate = mt.Event()
    tmgr._hb_thread.start()

    assert tmgr.check_heartbeat()

    tmgr.terminate_heartbeat()
Exemplo n.º 23
0
def test_tmgr_base_check_manager():

    rmq_conn_params = pika.ConnectionParameters(host=hostname, port=port)
    sid  = 'test.0008'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    rmq_conn_params=rmq_conn_params,
                    rts=None)

    tmgr._tmgr_process = mp.Process(target=tmgr._tmgr, name='heartbeat')
    tmgr._tmgr_terminate = mp.Event()
    tmgr._tmgr_process.start()

    assert tmgr.check_manager()

    tmgr.terminate_manager()
Exemplo n.º 24
0
def test_tmgr_base_check_heartbeat():

    rmq_conn_params = pika.ConnectionParameters(host=hostname, port=port)
    sid  = 'test.0007'
    rmgr = BaseRmgr({}, sid, None, {})
    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    rmq_conn_params=rmq_conn_params,
                    rts=None)

    tmgr._hb_thread    = mt.Thread(target=tmgr._heartbeat, name='heartbeat')
    tmgr._hb_terminate = mt.Event()
    tmgr._hb_thread.start()

    assert tmgr.check_heartbeat()

    tmgr.terminate_heartbeat()
def test_tmgr_base_check_heartbeat():

    sid = 'test.0000'
    rmgr = BaseRmgr({}, sid, None, {})

    os.environ['ENTK_HB_INTERVAL'] = '30'

    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    tmgr._hb_thread = threading.Thread(target=tmgr._heartbeat, name='heartbeat')
    tmgr._hb_terminate = threading.Event()
    tmgr._hb_thread.start()
    assert tmgr.check_heartbeat()
    tmgr.terminate_heartbeat()
Exemplo n.º 26
0
def test_tmgr_base_check_heartbeat():

    sid = 'test.0000'
    rmgr = BaseRmgr({}, sid, None, {})

    os.environ['ENTK_HB_INTERVAL'] = '30'

    tmgr = BaseTmgr(sid=sid,
                    pending_queue=['pending-1'],
                    completed_queue=['completed-1'],
                    rmgr=rmgr,
                    mq_hostname=hostname,
                    port=port,
                    rts=None)

    tmgr._hb_thread = threading.Thread(target=tmgr._heartbeat, name='heartbeat')
    tmgr._hb_terminate = threading.Event()
    tmgr._hb_thread.start()
    assert tmgr.check_heartbeat()
    tmgr.terminate_heartbeat()
Exemplo n.º 27
0
    def test_check_manager(self, mocked_init, mocked_Logger, mocked_Profiler):

        rmq_params = mock.MagicMock(spec=ConnectionParameters)
        rmgr = mock.MagicMock(spec=Base_ResourceManager)
        tmgr = Tmgr('test_tmgr', ['pending_queues'], ['completed_queues'],
                    rmgr, rmq_params, 'test_rts')

        def _tmgr_side_effect(amount):
            time.sleep(amount)

        tmgr._tmgr_process = mt.Thread(target=_tmgr_side_effect,
                                       name='test_tmgr',
                                       args=(1, ))
        tmgr._tmgr_process.start()

        self.assertTrue(tmgr.check_manager())
        tmgr._tmgr_process.join()
        self.assertFalse(tmgr.check_manager())

        tmgr._tmgr_process = None
        self.assertFalse(tmgr.check_manager())
Exemplo n.º 28
0
    def test_heartbeat(self, mocked_init, mocked_Profiler):

        hostname = os.environ.get('RMQ_HOSTNAME', 'localhost')
        port = int(os.environ.get('RMQ_PORT', '5672'))
        username = os.environ.get('RMQ_USERNAME', 'guest')
        password = os.environ.get('RMQ_PASSWORD', 'guest')
        credentials = pika.PlainCredentials(username, password)
        rmq_conn_params = pika.ConnectionParameters(host=hostname,
                                                    port=port,
                                                    credentials=credentials)
        tmgr = BaseTmgr(None, None, None, None, None, None)
        tmgr._uid = 'tmgr.0000'
        tmgr._log = ru.Logger('radical.entk.manager.base', level='DEBUG')
        tmgr._prof = mocked_Profiler
        tmgr._hb_interval = 0.1
        tmgr._hb_terminate = mt.Event()
        tmgr._hb_request_q = 'tmgr-hb-request'
        tmgr._hb_response_q = 'tmgr-hb-response'
        tmgr._rmq_conn_params = rmq_conn_params
        mq_connection = pika.BlockingConnection(rmq_conn_params)
        mq_channel = mq_connection.channel()
        mq_channel.queue_declare(queue='tmgr-hb-request')
        mq_channel.queue_declare(queue='tmgr-hb-response')
        tmgr._log.info('Starting test')
        master_thread = mt.Thread(target=tmgr._heartbeat,
                                  name='tmgr_heartbeat')

        master_thread.start()
        time.sleep(0.1)
        body = None
        try:
            for _ in range(5):
                while body is None:
                    _, props, body = mq_channel.basic_get(
                        queue='tmgr-hb-request')
                self.assertEqual(body, b'request')
                nprops = pika.BasicProperties(
                    correlation_id=props.correlation_id)
                mq_channel.basic_publish(exchange='',
                                         routing_key='tmgr-hb-response',
                                         properties=nprops,
                                         body='response')
                self.assertTrue(master_thread.is_alive())
                body = None

            time.sleep(0.5)
            self.assertFalse(master_thread.is_alive())
            master_thread.join()
            mq_channel.queue_delete(queue='tmgr-hb-request')
            mq_channel.queue_delete(queue='tmgr-hb-response')
            mq_channel.queue_declare(queue='tmgr-hb-request')
            mq_channel.queue_declare(queue='tmgr-hb-response')

            master_thread = mt.Thread(target=tmgr._heartbeat,
                                      name='tmgr_heartbeat')
            master_thread.start()
            body = None
            while body is None:
                _, props, body = mq_channel.basic_get(queue='tmgr-hb-request')
            mq_channel.basic_publish(exchange='',
                                     routing_key='tmgr-hb-response',
                                     body='response')
            time.sleep(0.2)
            self.assertFalse(master_thread.is_alive())

        except Exception as ex:
            tmgr._hb_terminate.set()
            master_thread.join()
            mq_channel.queue_delete(queue='tmgr-hb-request')
            mq_channel.queue_delete(queue='tmgr-hb-response')
            mq_channel.close()
            mq_connection.close()
            raise ex
        else:
            tmgr._hb_terminate.set()
            master_thread.join()
            mq_channel.queue_delete(queue='tmgr-hb-request')
            mq_channel.queue_delete(queue='tmgr-hb-response')
            mq_channel.close()
            mq_connection.close()
Exemplo n.º 29
0
    def test_terminate_heartbeat(self, mocked_init, mocked_Logger,
                                 mocked_Profiler, mocked_BlockingConnection):

        mocked_BlockingConnection.channel = mock.MagicMock(
            spec=pika.BlockingConnection.channel)
        mocked_BlockingConnection.close = mock.MagicMock(return_value=None)
        mocked_BlockingConnection.channel.queue_delete = mock.MagicMock(
            return_value=None)
        mocked_BlockingConnection.channel.queue_declare = mock.MagicMock(
            return_value=None)
        mocked_BlockingConnection.close = mock.MagicMock(return_value=None)
        rmq_params = mock.MagicMock(spec=ConnectionParameters)
        rmgr = mock.MagicMock(spec=Base_ResourceManager)
        tmgr = Tmgr('test_tmgr', ['pending_queues'], ['completed_queues'],
                    rmgr, rmq_params, 'test_rts')

        tmgr._rmq_conn_params = rmq_params
        tmgr._hb_request_q = 'test_tmgr-hb-request'
        tmgr._hb_response_q = 'test_tmgr-hb-response'

        tmgr._log = mocked_Logger
        tmgr._prof = mocked_Profiler
        tmgr._uid = 'tmgr.0000'
        tmgr.check_heartbeat = mock.MagicMock(return_value=True)
        tmgr.check_manager = mock.MagicMock(return_value=True)

        tmgr._hb_terminate = mt.Event()

        tmgr._hb_thread = mt.Thread(target=_tmgr_side_effect,
                                    name='test_tmgr',
                                    args=(tmgr._hb_terminate, ))
        tmgr._hb_thread.start()

        tmgr.terminate_heartbeat()

        self.assertIsNone(tmgr._hb_thread)