Skip to content

Commit ed47a0f

Browse files
committed
[testing] adds callback testing
1 parent dd5d723 commit ed47a0f

2 files changed

Lines changed: 164 additions & 0 deletions

File tree

testing/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ endmacro()
99
add_moos_test(run_close)
1010
add_moos_test(register)
1111
add_moos_test(simple_comms)
12+
add_moos_test(callbacks)

testing/callbacks.py

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
#! /usr/bin/env python
2+
"""
3+
This script tests simple moos_comms.
4+
"""
5+
6+
import unittest
7+
import subprocess
8+
import time
9+
import logging
10+
logging.basicConfig(level=logging.DEBUG)
11+
logger = logging.getLogger('tests')
12+
logger.level = logging.DEBUG
13+
14+
15+
try:
16+
from pymoos import pymoos
17+
except ImportError as e:
18+
logger.error('Could not find pymoos package. Is it installed?')
19+
raise e
20+
21+
from abstractmoostest import pyMOOSTestCase
22+
23+
24+
class RunCloseTest(pyMOOSTestCase):
25+
def test_on_connect(self):
26+
c = pymoos.comms()
27+
c.set_on_connect_callback(
28+
lambda : self.assertTrue(c.register('SIMPLE_VAR', 0)))
29+
c.run('localhost', 9000, 'test_on_connect')
30+
c.wait_until_connected(2000)
31+
32+
self.assertTrue(c.is_registered_for('SIMPLE_VAR'))
33+
34+
c.close(True)
35+
36+
def test_on_connect_1(self):
37+
c = pymoos.comms()
38+
39+
def on_connect():
40+
self.assertTrue(c.register('SIMPLE_VAR', 0))
41+
return True
42+
43+
c.set_on_connect_callback(on_connect)
44+
c.run('localhost', 9000, 'test_on_connect_1')
45+
c.wait_until_connected(2000)
46+
47+
self.assertTrue(c.is_registered_for('SIMPLE_VAR'))
48+
49+
c.close(True)
50+
51+
def test_on_mail(self):
52+
c = pymoos.comms()
53+
received_mail = False
54+
55+
def on_connect():
56+
self.assertTrue(c.register('ONMAIL_VAR', 0))
57+
return True
58+
59+
def on_new_mail():
60+
nonlocal received_mail
61+
for msg in c.fetch():
62+
logger.debug('on_new_mail hit')
63+
self.assertTrue(msg.is_name('ONMAIL_VAR'))
64+
self.assertEqual(msg.double(), 1)
65+
received_mail = True
66+
logger.debug('received_mail')
67+
return True
68+
69+
c.set_on_connect_callback(on_connect)
70+
c.set_on_mail_callback(on_new_mail)
71+
c.run('localhost', 9000, 'test_on_mail')
72+
c.wait_until_connected(2000)
73+
74+
self.assertTrue(c.is_registered_for('ONMAIL_VAR'))
75+
self.assertFalse(received_mail)
76+
self.assertTrue(c.notify('ONMAIL_VAR', 1, -1))
77+
78+
time.sleep(1)
79+
80+
self.assertTrue(received_mail)
81+
82+
c.close(True)
83+
84+
def test_on_mail_queues(self):
85+
c = pymoos.comms()
86+
received_mail = False
87+
received_mail_q_v1 = False
88+
received_mail_q_v2 = False
89+
received_mail_q2_v = False
90+
91+
def on_connect():
92+
self.assertTrue(c.register('ONMAIL_VAR', 0))
93+
self.assertTrue(c.register('ONQUEUE_VAR1', 0))
94+
self.assertTrue(c.register('ONQUEUE_VAR2', 0))
95+
self.assertTrue(c.register('ONQUEUE2_VAR', 0))
96+
return True
97+
98+
def on_new_mail():
99+
nonlocal received_mail
100+
for msg in c.fetch():
101+
logger.debug('on_new_mail hit')
102+
self.assertTrue(msg.is_name('ONMAIL_VAR'))
103+
self.assertEqual(msg.double(), 1)
104+
received_mail = True
105+
logger.debug('received_mail')
106+
return True
107+
108+
def queue1(msg):
109+
nonlocal received_mail_q_v1, received_mail_q_v2
110+
if msg.is_name('ONQUEUE_VAR1'):
111+
self.assertEqual(msg.double(), 2)
112+
received_mail_q_v1 = True
113+
elif msg.is_name('ONQUEUE_VAR2'):
114+
self.assertEqual(msg.double(), 3)
115+
received_mail_q_v2 = True
116+
return True
117+
118+
def queue2(msg):
119+
nonlocal received_mail_q2_v
120+
if msg.is_name('ONQUEUE2_VAR'):
121+
self.assertEqual(msg.double(), 4)
122+
received_mail_q2_v = True
123+
return True
124+
125+
126+
127+
c.set_on_connect_callback(on_connect)
128+
c.set_on_mail_callback(on_new_mail)
129+
c.add_active_queue('queue1', queue1)
130+
c.add_message_route_to_active_queue('queue1', 'ONQUEUE_VAR1')
131+
c.add_message_route_to_active_queue('queue1', 'ONQUEUE_VAR2')
132+
c.add_active_queue('queue2', queue2)
133+
c.add_message_route_to_active_queue('queue2', 'ONQUEUE2_VAR')
134+
c.run('localhost', 9000, 'test_on_mail_queues')
135+
c.wait_until_connected(5000)
136+
137+
self.assertTrue(c.is_registered_for('ONMAIL_VAR'))
138+
self.assertTrue(c.is_registered_for('ONQUEUE_VAR1'))
139+
self.assertTrue(c.is_registered_for('ONQUEUE_VAR2'))
140+
self.assertTrue(c.is_registered_for('ONQUEUE2_VAR'))
141+
self.assertFalse(received_mail)
142+
self.assertFalse(received_mail_q_v1)
143+
self.assertFalse(received_mail_q_v2)
144+
self.assertFalse(received_mail_q2_v)
145+
self.assertTrue(c.notify('ONMAIL_VAR', 1, -1))
146+
self.assertTrue(c.notify('ONQUEUE_VAR1', 2, -1))
147+
self.assertTrue(c.notify('ONQUEUE_VAR2', 3, -1))
148+
self.assertTrue(c.notify('ONQUEUE2_VAR', 4, -1))
149+
150+
time.sleep(1)
151+
152+
self.assertTrue(received_mail)
153+
self.assertTrue(received_mail_q_v1)
154+
self.assertTrue(received_mail_q_v2)
155+
self.assertTrue(received_mail_q2_v)
156+
157+
c.close(True)
158+
159+
160+
161+
162+
if __name__ == '__main__':
163+
unittest.main()

0 commit comments

Comments
 (0)