Fix and improve test_queue:

- decrease timeout, remove unneeded sleep;
  - make and check objects from the data received in message queue;
  - add docstrings.
This commit is contained in:
Lee Miller 2023-08-09 03:37:47 +03:00
parent 4ea139c9f6
commit 504f12e5d0
Signed by: lee.miller
GPG Key ID: 4F97A5EA88F4AB63

View File

@ -1,11 +1,15 @@
"""Test interprocess queues"""
import time
import zmq
from minode import structure, message
from .test_process import TestProcessProto
class TestProcessQueue(TestProcessProto):
"""A test case starting the process with queues"""
_process_cmd = ['minode', '--msg-queue']
@classmethod
@ -14,7 +18,7 @@ class TestProcessQueue(TestProcessProto):
context = zmq.Context()
cls.socket = context.socket(zmq.SUB)
cls.socket.connect('tcp://localhost:5556')
cls.socket.setsockopt(zmq.RCVTIMEO, 120000)
cls.socket.setsockopt(zmq.RCVTIMEO, 5000)
cls.socket.setsockopt(zmq.SUBSCRIBE, b'obj')
def test_receive_msg(self):
@ -28,11 +32,15 @@ class TestProcessQueue(TestProcessProto):
try:
tag, data = self.socket.recv().split(b'\x00', 1)
except zmq.error.Again:
time.sleep(2)
continue
else:
c += 1
self.assertEqual(tag, b'obj')
c += 1
self.assertEqual(tag, b'obj')
obj_type, data = data.split(b'\x00', 1)
obj = structure.Object.from_message(
message.Message(b'object', data))
self.assertEqual(int(obj_type), obj.object_type)
self.assertTrue(obj.is_valid())
if c == 0:
self.fail('No messages received in %ss' % timeout)