def test_worker_processes_only_increases_processed_counter_if_a_message_was_processed(): """ Test worker process only increases processed counter if a message was processed """ # Setup SQS Queue conn = boto.connect_sqs() queue = conn.create_queue("tester") # Build the SQS Message message_body = {"task": "tests.tasks.index_incrementer", "args": [], "kwargs": {"message": 23}} message = Message() body = json.dumps(message_body) message.set_body(body) # Add message to internal queue internal_queue = Queue(3) internal_queue.put({"queue": queue.id, "message": message, "start_time": time.time(), "timeout": 30}) # And we add a message to the queue later def sleep_and_queue(internal_queue): time.sleep(1) internal_queue.put({"queue": queue.id, "message": message, "start_time": time.time(), "timeout": 30}) thread = threading.Thread(target=sleep_and_queue, args=(internal_queue,)) thread.daemon = True thread.start() # When I Process messages worker = ProcessWorker(internal_queue) worker._messages_to_process_before_shutdown = 2 # Then I return from run() after processing 2 messages worker.run().should.be.none
def test_worker_processes_shuts_down_after_processing_its_maximum_number_of_messages(): """ Test worker processes shutdown after processing maximum number of messages """ # Setup SQS Queue conn = boto.connect_sqs() queue = conn.create_queue("tester") # Build the SQS Message message_body = {"task": "tests.tasks.index_incrementer", "args": [], "kwargs": {"message": 23}} message = Message() body = json.dumps(message_body) message.set_body(body) # Add message to internal queue internal_queue = Queue(3) internal_queue.put({"queue": queue.id, "message": message, "start_time": time.time(), "timeout": 30}) internal_queue.put({"queue": queue.id, "message": message, "start_time": time.time(), "timeout": 30}) internal_queue.put({"queue": queue.id, "message": message, "start_time": time.time(), "timeout": 30}) # When I Process messages worker = ProcessWorker(internal_queue) worker._messages_to_process_before_shutdown = 2 # Then I return from run() worker.run().should.be.none # With messages still on the queue internal_queue.empty().should.be.false internal_queue.full().should.be.false
def test_worker_processes_shuts_down_after_processing_its_max_number_of_msgs( os): """ Test worker processes shutdown after processing maximum number of messages """ os.getppid.return_value = 1 # Setup SQS Queue conn = boto3.client('sqs', region_name='us-east-1') queue_url = conn.create_queue(QueueName="tester")['QueueUrl'] # Build the SQS Message message = { 'Body': json.dumps({ 'task': 'tests.tasks.index_incrementer', 'args': [], 'kwargs': { 'message': 23, }, }), "ReceiptHandle": "receipt-1234", "MessageId": "message-id-1", } # Add message to internal queue internal_queue = Queue(3) internal_queue.put({ "queue": queue_url, "message": message, "start_time": time.time(), "timeout": 30, }) internal_queue.put({ "queue": queue_url, "message": message, "start_time": time.time(), "timeout": 30, }) internal_queue.put({ "queue": queue_url, "message": message, "start_time": time.time(), "timeout": 30, }) # When I Process messages worker = ProcessWorker(internal_queue, INTERVAL, parent_id=1) worker._messages_to_process_before_shutdown = 2 # Then I return from run() worker.run().should.be.none # With messages still on the queue internal_queue.empty().should.be.false internal_queue.full().should.be.false
def test_worker_processes_shuts_down_after_processing_its_max_number_of_msgs(): """ Test worker processes shutdown after processing maximum number of messages """ # Setup SQS Queue conn = boto3.client('sqs', region_name='us-east-1') queue_url = conn.create_queue(QueueName="tester")['QueueUrl'] # Build the SQS Message message = { 'Body': json.dumps({ 'task': 'tests.tasks.index_incrementer', 'args': [], 'kwargs': { 'message': 23, }, }), "ReceiptHandle": "receipt-1234", } # Add message to internal queue internal_queue = Queue(3) internal_queue.put( { "queue": queue_url, "message": message, "start_time": time.time(), "timeout": 30, } ) internal_queue.put( { "queue": queue_url, "message": message, "start_time": time.time(), "timeout": 30, } ) internal_queue.put( { "queue": queue_url, "message": message, "start_time": time.time(), "timeout": 30, } ) # When I Process messages worker = ProcessWorker(internal_queue, INTERVAL) worker._messages_to_process_before_shutdown = 2 # Then I return from run() worker.run().should.be.none # With messages still on the queue internal_queue.empty().should.be.false internal_queue.full().should.be.false
def test_worker_processes_only_incr_processed_counter_if_a_msg_was_processed(): """ Test worker process only increases processed counter if a message was processed """ # Setup SQS Queue conn = boto3.client('sqs', region_name='us-east-1') queue_url = conn.create_queue(QueueName="tester")['QueueUrl'] # Build the SQS Message message = { 'Body': json.dumps({ 'task': 'tests.tasks.index_incrementer', 'args': [], 'kwargs': { 'message': 23, }, }), "ReceiptHandle": "receipt-1234", "MessageId": "message-id-1", } # Add message to internal queue internal_queue = Queue(3) internal_queue.put({ "queue": queue_url, "message": message, "start_time": time.time(), "timeout": 30, }) # And we add a message to the queue later def sleep_and_queue(internal_queue): time.sleep(1) internal_queue.put({ "queue": queue_url, "message": message, "start_time": time.time(), "timeout": 30, }) thread = threading.Thread(target=sleep_and_queue, args=(internal_queue, )) thread.daemon = True thread.start() # When I Process messages worker = ProcessWorker(internal_queue, INTERVAL, parent_id=1) worker._messages_to_process_before_shutdown = 2 # Then I return from run() after processing 2 messages worker.run().should.be.none
def test_worker_processes_only_incr_processed_counter_if_a_msg_was_processed(): """ Test worker process only increases processed counter if a message was processed """ # Setup SQS Queue conn = boto3.client('sqs', region_name='us-east-1') queue_url = conn.create_queue(QueueName="tester")['QueueUrl'] # Build the SQS Message message = { 'Body': json.dumps({ 'task': 'tests.tasks.index_incrementer', 'args': [], 'kwargs': { 'message': 23, }, }), "ReceiptHandle": "receipt-1234", } # Add message to internal queue internal_queue = Queue(3) internal_queue.put( { "queue": queue_url, "message": message, "start_time": time.time(), "timeout": 30, } ) # And we add a message to the queue later def sleep_and_queue(internal_queue): time.sleep(1) internal_queue.put( { "queue": queue_url, "message": message, "start_time": time.time(), "timeout": 30, } ) thread = threading.Thread(target=sleep_and_queue, args=(internal_queue,)) thread.daemon = True thread.start() # When I Process messages worker = ProcessWorker(internal_queue, INTERVAL) worker._messages_to_process_before_shutdown = 2 # Then I return from run() after processing 2 messages worker.run().should.be.none
def test_worker_processes_shuts_down_after_processing_its_maximum_number_of_messages( ): """ Test worker processes shutdown after processing maximum number of messages """ # Setup SQS Queue conn = boto.connect_sqs() queue = conn.create_queue("tester") # Build the SQS Message message_body = { 'task': 'tests.tasks.index_incrementer', 'args': [], 'kwargs': { 'message': 23, }, } message = Message() body = json.dumps(message_body) message.set_body(body) # Add message to internal queue internal_queue = Queue(3) internal_queue.put({ "queue": queue.id, "message": message, "start_time": time.time(), "timeout": 30 }) internal_queue.put({ "queue": queue.id, "message": message, "start_time": time.time(), "timeout": 30 }) internal_queue.put({ "queue": queue.id, "message": message, "start_time": time.time(), "timeout": 30 }) # When I Process messages worker = ProcessWorker(internal_queue, INTERVAL) worker._messages_to_process_before_shutdown = 2 # Then I return from run() worker.run().should.be.none # With messages still on the queue internal_queue.empty().should.be.false internal_queue.full().should.be.false
def test_worker_processes_only_increases_processed_counter_if_a_message_was_processed( ): """ Test worker process only increases processed counter if a message was processed """ # Setup SQS Queue conn = boto.connect_sqs() queue = conn.create_queue("tester") # Build the SQS Message message_body = { 'task': 'tests.tasks.index_incrementer', 'args': [], 'kwargs': { 'message': 23, }, } message = Message() body = json.dumps(message_body) message.set_body(body) # Add message to internal queue internal_queue = Queue(3) internal_queue.put({ "queue": queue.id, "message": message, "start_time": time.time(), "timeout": 30 }) # And we add a message to the queue later def sleep_and_queue(internal_queue): time.sleep(1) internal_queue.put({ "queue": queue.id, "message": message, "start_time": time.time(), "timeout": 30 }) thread = threading.Thread(target=sleep_and_queue, args=(internal_queue, )) thread.daemon = True thread.start() # When I Process messages worker = ProcessWorker(internal_queue, INTERVAL) worker._messages_to_process_before_shutdown = 2 # Then I return from run() after processing 2 messages worker.run().should.be.none