Better test framework and output :)
This commit is contained in:
parent
cc560c5458
commit
4ecee51f2b
4 changed files with 128 additions and 96 deletions
|
@ -13,6 +13,6 @@ before_script:
|
|||
- sudo apt-get install -y --force-yes ngircd python-sleekxmpp libswiften-dev libprotobuf-dev protobuf-compiler pidgin-dev liblog4cxx10-dev libpopt-dev libboost-dev libboost-signals-dev libboost-system-dev libboost-thread-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev libboost-date-time-dev libcppunit-dev libcommuni-dev
|
||||
install: "pip install --user sleekxmpp"
|
||||
script:
|
||||
- cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTS=ON . && make && ./src/libtransport_test && make spectrum2 && cd ./spectrum/src/tests && python -V && python irc_test.py
|
||||
- cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTS=ON . && make && ./src/libtransport_test && make spectrum2 && cd ./spectrum/src/tests && python -V && python start.py
|
||||
notifications:
|
||||
slack: spectrum2:CIlYHtxGMAaxs3qVHfwBzCuy
|
||||
|
|
|
@ -1,95 +0,0 @@
|
|||
import optparse
|
||||
import sys
|
||||
import time
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
import sleekxmpp
|
||||
|
||||
|
||||
class Responder(sleekxmpp.ClientXMPP):
|
||||
def __init__(self, jid, password, room, nick):
|
||||
sleekxmpp.ClientXMPP.__init__(self, jid, password)
|
||||
self.room = room
|
||||
self.nick = nick
|
||||
self.add_event_handler("session_start", self.start)
|
||||
self.add_event_handler("groupchat_message", self.muc_message)
|
||||
|
||||
def muc_message(self, msg):
|
||||
if msg['mucnick'] != self.nick:
|
||||
self.send_message(mto=msg['from'].bare,
|
||||
mbody="echo %s" % msg['body'],
|
||||
mtype='groupchat')
|
||||
|
||||
def start(self, event):
|
||||
self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True)
|
||||
#time.sleep(1)
|
||||
#self.send_message(mto=self.room, mbody=self.message, mtype='groupchat')
|
||||
#time.sleep(10)
|
||||
#self.disconnect()
|
||||
|
||||
class Client(sleekxmpp.ClientXMPP):
|
||||
def __init__(self, jid, password, room, nick):
|
||||
sleekxmpp.ClientXMPP.__init__(self, jid, password)
|
||||
self.room = room
|
||||
self.nick = nick
|
||||
self.echo_received = False
|
||||
self.add_event_handler("session_start", self.start)
|
||||
self.add_event_handler("groupchat_message", self.muc_message)
|
||||
|
||||
def muc_message(self, msg):
|
||||
if msg['mucnick'] != self.nick:
|
||||
if msg['body'] == "echo abc":
|
||||
self.echo_received = True
|
||||
|
||||
def start(self, event):
|
||||
self.getRoster()
|
||||
self.sendPresence()
|
||||
self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True)
|
||||
self.send_message(mto=self.room, mbody="abc", mtype='groupchat')
|
||||
#time.sleep(10)
|
||||
#self.disconnect()
|
||||
|
||||
if __name__ == '__main__':
|
||||
os.system("../spectrum2 -n ./irc_test.cfg &")
|
||||
os.system("ngircd -f ngircd.conf &")
|
||||
time.sleep(1)
|
||||
responder = Responder("responder@localhost", "password", "#channel@localhost", "responder")
|
||||
responder.register_plugin('xep_0030') # Service Discovery
|
||||
responder.register_plugin('xep_0045') # Multi-User Chat
|
||||
responder.register_plugin('xep_0199') # XMPP Ping
|
||||
responder['feature_mechanisms'].unencrypted_plain = True
|
||||
|
||||
if responder.connect():
|
||||
responder.process(block=False)
|
||||
else:
|
||||
print "connect() failed"
|
||||
sys.exit(1)
|
||||
|
||||
client = Client("client@localhost", "password", "#channel@localhost", "client")
|
||||
client.register_plugin('xep_0030') # Service Discovery
|
||||
client.register_plugin('xep_0045') # Multi-User Chat
|
||||
client.register_plugin('xep_0199') # XMPP Ping
|
||||
client['feature_mechanisms'].unencrypted_plain = True
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
if client.connect():
|
||||
client.process(block=False)
|
||||
else:
|
||||
print "connect() failed"
|
||||
sys.exit(1)
|
||||
|
||||
time.sleep(10)
|
||||
client.disconnect()
|
||||
responder.disconnect()
|
||||
|
||||
os.system("killall spectrum2")
|
||||
os.system("killall ngircd")
|
||||
os.system("killall spectrum2_libcommuni_backend")
|
||||
|
||||
if client.echo_received == False:
|
||||
print "ERROR: 'echo abc' not received."
|
||||
sys.exit(1)
|
||||
|
||||
print "ALL TESTS PASSED"
|
51
spectrum/src/tests/muc_echo.py
Normal file
51
spectrum/src/tests/muc_echo.py
Normal file
|
@ -0,0 +1,51 @@
|
|||
import optparse
|
||||
import sys
|
||||
import time
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
import sleekxmpp
|
||||
|
||||
|
||||
class Responder(sleekxmpp.ClientXMPP):
|
||||
def __init__(self, jid, password, room, nick):
|
||||
sleekxmpp.ClientXMPP.__init__(self, jid, password)
|
||||
self.room = room
|
||||
self.nick = nick
|
||||
self.add_event_handler("session_start", self.start)
|
||||
self.add_event_handler("groupchat_message", self.muc_message)
|
||||
|
||||
self.tests = {}
|
||||
|
||||
def muc_message(self, msg):
|
||||
if msg['mucnick'] != self.nick:
|
||||
self.send_message(mto=msg['from'].bare,
|
||||
mbody="echo %s" % msg['body'],
|
||||
mtype='groupchat')
|
||||
|
||||
def start(self, event):
|
||||
self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True)
|
||||
|
||||
class Client(sleekxmpp.ClientXMPP):
|
||||
def __init__(self, jid, password, room, nick):
|
||||
sleekxmpp.ClientXMPP.__init__(self, jid, password)
|
||||
self.room = room
|
||||
self.nick = nick
|
||||
self.add_event_handler("session_start", self.start)
|
||||
self.add_event_handler("groupchat_message", self.muc_message)
|
||||
self.finished = False
|
||||
|
||||
self.tests = {}
|
||||
self.tests["echo_received"] = ["libcommuni: Send and receive messages", False]
|
||||
|
||||
def muc_message(self, msg):
|
||||
if msg['mucnick'] != self.nick:
|
||||
if msg['body'] == "echo abc":
|
||||
self.tests["echo_received"][1] = True
|
||||
self.finished = True
|
||||
|
||||
def start(self, event):
|
||||
self.getRoster()
|
||||
self.sendPresence()
|
||||
self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True)
|
||||
self.send_message(mto=self.room, mbody="abc", mtype='groupchat')
|
76
spectrum/src/tests/start.py
Normal file
76
spectrum/src/tests/start.py
Normal file
|
@ -0,0 +1,76 @@
|
|||
import optparse
|
||||
import sys
|
||||
import time
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
import sleekxmpp
|
||||
import imp
|
||||
|
||||
def single_test(Client, Responder):
|
||||
os.system("../spectrum2 -n ./irc_test.cfg > spectrum2.log &")
|
||||
os.system("ngircd -f ngircd.conf &")
|
||||
time.sleep(1)
|
||||
responder = Responder("responder@localhost", "password", "#channel@localhost", "responder")
|
||||
responder.register_plugin('xep_0030') # Service Discovery
|
||||
responder.register_plugin('xep_0045') # Multi-User Chat
|
||||
responder.register_plugin('xep_0199') # XMPP Ping
|
||||
responder['feature_mechanisms'].unencrypted_plain = True
|
||||
|
||||
if responder.connect():
|
||||
responder.process(block=False)
|
||||
else:
|
||||
print "connect() failed"
|
||||
sys.exit(1)
|
||||
|
||||
client = Client("client@localhost", "password", "#channel@localhost", "client")
|
||||
client.register_plugin('xep_0030') # Service Discovery
|
||||
client.register_plugin('xep_0045') # Multi-User Chat
|
||||
client.register_plugin('xep_0199') # XMPP Ping
|
||||
client['feature_mechanisms'].unencrypted_plain = True
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
if client.connect():
|
||||
client.process(block=False)
|
||||
else:
|
||||
print "connect() failed"
|
||||
sys.exit(1)
|
||||
|
||||
max_time = 60
|
||||
while not client.finished and max_time > 0:
|
||||
time.sleep(1)
|
||||
max_time -= 1
|
||||
client.disconnect()
|
||||
responder.disconnect()
|
||||
|
||||
os.system("killall spectrum2")
|
||||
os.system("killall ngircd")
|
||||
os.system("killall spectrum2_libcommuni_backend 2>/dev/null")
|
||||
|
||||
ret = True
|
||||
for v in client.tests.values():
|
||||
if v[1]:
|
||||
print v[0] + ": PASSED"
|
||||
else:
|
||||
print v[0] + ": FAILED"
|
||||
ret = False
|
||||
|
||||
if not ret:
|
||||
os.system("cat spectrum2.log")
|
||||
|
||||
return ret
|
||||
|
||||
exitcode = 0
|
||||
for f in os.listdir("."):
|
||||
if not f.endswith(".py") or f == "start.py":
|
||||
continue
|
||||
|
||||
print "Starting " + f + " test ..."
|
||||
test = imp.load_source('test', './' + f)
|
||||
ret = single_test(test.Client, test.Responder)
|
||||
if not ret:
|
||||
exitcode = -1
|
||||
|
||||
sys.exit(exitcode)
|
||||
|
Loading…
Add table
Reference in a new issue