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)