From a025aa10855919e6cf50c068264f5d935493ac6a Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Tue, 22 Dec 2015 18:05:48 +0100 Subject: [PATCH] Test echo also for Slack --- spectrum/src/frontends/slack/SlackSession.cpp | 2 +- spectrum/src/tests/jabber_slack_test.cfg | 45 ++++++++++++++++ spectrum/src/tests/muc_change_topic.py | 5 +- spectrum/src/tests/muc_echo.py | 7 +-- spectrum/src/tests/muc_join_leave.py | 5 +- spectrum/src/tests/muc_pm.py | 5 +- spectrum/src/tests/muc_whois.py | 5 +- spectrum/src/tests/slack.sql | Bin 0 -> 14336 bytes spectrum/src/tests/start.py | 48 ++++++++++++++++-- src/HTTPRequestQueue.cpp | 5 ++ 10 files changed, 111 insertions(+), 16 deletions(-) create mode 100644 spectrum/src/tests/jabber_slack_test.cfg create mode 100644 spectrum/src/tests/slack.sql diff --git a/spectrum/src/frontends/slack/SlackSession.cpp b/spectrum/src/frontends/slack/SlackSession.cpp index bfcb4090..76066c5d 100644 --- a/spectrum/src/frontends/slack/SlackSession.cpp +++ b/spectrum/src/frontends/slack/SlackSession.cpp @@ -118,7 +118,7 @@ void SlackSession::sendMessage(boost::shared_ptr message) { std::string from = message->getFrom().getResource(); std::string channel = m_jid2channel[message->getFrom().toBare().toString()]; - LOG4CXX_INFO(logger, "JID is " << message->getFrom().toBare().toString()); + LOG4CXX_INFO(logger, "JID is " << message->getFrom().toBare().toString() << " channel is " << channel); if (channel.empty()) { if (m_slackChannel.empty()) { LOG4CXX_ERROR(logger, m_uinfo.jid << ": Received message for unknown channel from " << message->getFrom().toBare().toString()); diff --git a/spectrum/src/tests/jabber_slack_test.cfg b/spectrum/src/tests/jabber_slack_test.cfg new file mode 100644 index 00000000..0e61ee8a --- /dev/null +++ b/spectrum/src/tests/jabber_slack_test.cfg @@ -0,0 +1,45 @@ +[service] +frontend=slack +jid = localhostxmpp +password = secret +server = 0.0.0.0 +port = 5223 +server_mode = 0 +backend_host=127.0.0.1 +pidfile=./test.pid +# < this option doesn't work yet +#backend_port=10001 +admin_jid=admin +admin_password=test +#cert=server.pfx #patch to PKCS#12 certificate +#cert_password=test #password to that certificate if any +users_per_backend=10 +#backend=../..//backends/swiften/spectrum2_swiften_backend +#backend=../../../backends/twitter/spectrum2_twitter_backend +backend=../../../backends/libpurple/spectrum2_libpurple_backend +protocol=prpl-jabber +#protocol=prpl-msn +#protocol=any +#protocol=prpl-icq +working_dir=./ +portfile=./$jid.port +irc_server=localhost + +[backend] +#default_avatar=catmelonhead.jpg +#no_vcard_fetch=true + +[logging] +#config=logging.cfg # log4cxx/log4j logging configuration file +#backend_config=/home/hanzz/code/libtransport/spectrum/src/backend-logging.cfg # log4cxx/log4j logging configuration file for backends + +[database] +type=sqlite3 # or "none" without database backend +database=users.sqlite +#prefix=twitter +#type = mysql # or "none" without database backend....................................................................................................................... +#database = test +#prefix= +#user=root +#password=yourrootsqlpassword +#encryption_key=hanzzik diff --git a/spectrum/src/tests/muc_change_topic.py b/spectrum/src/tests/muc_change_topic.py index e10d803c..46b4d046 100644 --- a/spectrum/src/tests/muc_change_topic.py +++ b/spectrum/src/tests/muc_change_topic.py @@ -8,11 +8,12 @@ import sleekxmpp class Responder(sleekxmpp.ClientXMPP): - def __init__(self, jid, password, room, nick): + def __init__(self, jid, password, room, room_password, nick): sleekxmpp.ClientXMPP.__init__(self, jid, password) self.room = room self.nick = nick self.finished = False + self.room_password = room_password self.add_event_handler("session_start", self.start) self.add_event_handler("groupchat_message", self.muc_message) @@ -23,7 +24,7 @@ class Responder(sleekxmpp.ClientXMPP): self.send_message(mto=self.room, mbody=None, msubject='The new subject', mtype='groupchat') def start(self, event): - self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True) + self.plugin['xep_0045'].joinMUC(self.room, self.nick, password=self.room_password, wait=True) class Client(sleekxmpp.ClientXMPP): def __init__(self, jid, password, room, nick): diff --git a/spectrum/src/tests/muc_echo.py b/spectrum/src/tests/muc_echo.py index bc4e9736..80516d25 100644 --- a/spectrum/src/tests/muc_echo.py +++ b/spectrum/src/tests/muc_echo.py @@ -8,10 +8,11 @@ import sleekxmpp class Responder(sleekxmpp.ClientXMPP): - def __init__(self, jid, password, room, nick): + def __init__(self, jid, password, room, room_password, nick): sleekxmpp.ClientXMPP.__init__(self, jid, password) self.room = room self.nick = nick + self.room_password = room_password self.finished = False self.add_event_handler("session_start", self.start) self.add_event_handler("groupchat_message", self.muc_message) @@ -25,7 +26,7 @@ class Responder(sleekxmpp.ClientXMPP): mtype='groupchat') def start(self, event): - self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True) + self.plugin['xep_0045'].joinMUC(self.room, self.nick, password=self.room_password, wait=True) class Client(sleekxmpp.ClientXMPP): def __init__(self, jid, password, room, nick): @@ -41,7 +42,7 @@ class Client(sleekxmpp.ClientXMPP): def muc_message(self, msg): if msg['mucnick'] != self.nick: - if msg['body'] == "echo abc": + if msg['body'] == "echo abc" or msg['body'] == " echo abc": self.tests["echo_received"][1] = True self.finished = True diff --git a/spectrum/src/tests/muc_join_leave.py b/spectrum/src/tests/muc_join_leave.py index 5276d13d..1b7b0f71 100644 --- a/spectrum/src/tests/muc_join_leave.py +++ b/spectrum/src/tests/muc_join_leave.py @@ -8,9 +8,10 @@ import sleekxmpp class Responder(sleekxmpp.ClientXMPP): - def __init__(self, jid, password, room, nick): + def __init__(self, jid, password, room, room_password, nick): sleekxmpp.ClientXMPP.__init__(self, jid, password) self.room = room + self.room_password = room_password self.nick = nick self.finished = False self.add_event_handler("session_start", self.start) @@ -31,7 +32,7 @@ class Responder(sleekxmpp.ClientXMPP): self.finished = True def start(self, event): - self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True) + self.plugin['xep_0045'].joinMUC(self.room, self.nick, password=self.room_password, wait=True) class Client(sleekxmpp.ClientXMPP): def __init__(self, jid, password, room, nick): diff --git a/spectrum/src/tests/muc_pm.py b/spectrum/src/tests/muc_pm.py index bfe4b52a..8874e91a 100644 --- a/spectrum/src/tests/muc_pm.py +++ b/spectrum/src/tests/muc_pm.py @@ -8,9 +8,10 @@ import sleekxmpp class Responder(sleekxmpp.ClientXMPP): - def __init__(self, jid, password, room, nick): + def __init__(self, jid, password, room, room_password, nick): sleekxmpp.ClientXMPP.__init__(self, jid, password) self.room = room + self.room_password = room_password self.nick = nick self.finished = False self.add_event_handler("session_start", self.start) @@ -31,7 +32,7 @@ class Responder(sleekxmpp.ClientXMPP): self.finished = True def start(self, event): - self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True) + self.plugin['xep_0045'].joinMUC(self.room, self.nick, password=self.room_password, wait=True) class Client(sleekxmpp.ClientXMPP): def __init__(self, jid, password, room, nick): diff --git a/spectrum/src/tests/muc_whois.py b/spectrum/src/tests/muc_whois.py index bf91b281..39539ee1 100644 --- a/spectrum/src/tests/muc_whois.py +++ b/spectrum/src/tests/muc_whois.py @@ -8,16 +8,17 @@ import sleekxmpp class Responder(sleekxmpp.ClientXMPP): - def __init__(self, jid, password, room, nick): + def __init__(self, jid, password, room, room_password, nick): sleekxmpp.ClientXMPP.__init__(self, jid, password) self.room = room self.nick = nick self.finished = False + self.room_password = room_password self.add_event_handler("session_start", self.start) self.tests = {} def start(self, event): - self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True) + self.plugin['xep_0045'].joinMUC(self.room, self.nick, password=self.room_password, wait=True) class Client(sleekxmpp.ClientXMPP): def __init__(self, jid, password, room, nick): diff --git a/spectrum/src/tests/slack.sql b/spectrum/src/tests/slack.sql new file mode 100644 index 0000000000000000000000000000000000000000..7725f7d273586603dbc8f5033604ba1b8885af8f GIT binary patch literal 14336 zcmeI3O;g)O7=X22*+!;L+oXvOw8Jtz7|kGJ+4zfO(m-Nbz(DzMS|2hR*_LgAEE!1# z()I$G{(zi&>Y+2upU5%y&h$65hfXFlx%80Cv@2VdEQ8w&9Xdc(V@ulaeV={bcePr3 zbG@KgGOFoDQ?gK!qA38Vy9iMfHHN=e@V9p`_=fHU@D=pk54#KQf)mLIfy+%G z3qlMt4jw8MT@xFU*@$LxxtWcWL!?BYnfCoSItSuDvptp-TD6& z1z%lmLPR=3fDo_=L}_N6aUDh1{@+mW4WUB_5CZQK0SFnU`~3fef=}Kh$%(9lz&Rz* z1Q9C6fAXQ29AV6sT(OLHGhxZ5HMnwbNv6548&z35&=1PIkVy#1R3vlJC*nei7ZQ9zKtgslm6#Q>w*3cjlOPfp542zv{&Y^coO!p7 zu7WT-HU=JlYe{8QE_Yv$I+wt`jr`nJ9&OFd7xKu7M3V?9RkXOemH#}yfxg^WT$$S_ zq2+uDt*&jM)ncJAg;3j+4H0KkG;30bbG{@+Lwk}@X-LLoB9-!`neDP!F_f02=zW>| zWmovYG5FT2(%9BypsN z4wB;P;(9TUDcsM0?FzfL>OpdfO`*1;afiDw%Ve7&EtXv&tQXm!)6+YQqvad%Vg z0r&^Jc4d!-pvTxrqP{go4L$55G4bPP%{aCwmP~*-dcVXLN|&>s9`&5-I*;1Oa zt&d8p>r=d{y`piuoUW;g)>UQU3ZkVC^MG^&n_`PBT z8z~2NeMXw}XNsO^qDdEQ9~7r&+{4i@J23$cyJ}x8i+fn{@tok@UGc&7;%%@vvpYZa z<|I!`k}q|t`+x8T{23lyAX!LP34t>r zupJ07EI3>=biHXtr`>fp+Qtv<({?N>>lW(V+-_J_Yxd?%y!BR-4g6>)PrE<4`R=61 zJLvYO_u^lq7gma!#XAv}4l+D=U)JnZr)U|HX0~+0q6I9Q{dC?vK88Ui2F6WQs_ck( z!Ki7n8ntVgk8iH8WI+&b|B1LyqNVT1TJ)`73E1;L4WHrtKllv(4u9>nN3MhbA#mOa zT*p7@0mnSYRT{erpQnHk8vC=3Hw$$3|6EVewf`4*{}29&eZY(JE-~pJAwUS6k^l`E eK-(v1p90?g-)oBeFXxm@Nijm;ViJHL0N~#iQ_Cd) literal 0 HcmV?d00001 diff --git a/spectrum/src/tests/start.py b/spectrum/src/tests/start.py index 7265f6e0..e1130d24 100644 --- a/spectrum/src/tests/start.py +++ b/spectrum/src/tests/start.py @@ -26,6 +26,13 @@ class BaseTest: self.room = room self.responder_jid = "responder@localhost" self.client_jid = "client@localhost" + self.responder_password = "password" + self.client_password = "password" + self.client_room = room + self.responder_room = room + self.client_nick = "client" + self.responder_nick = "responder" + self.responder_roompassword = "" def skip_test(self, test): return False @@ -35,13 +42,16 @@ class BaseTest: self.pre_test() time.sleep(1) - responder = Responder(self.responder_jid, "password", self.room, "responder") + responder = Responder(self.responder_jid, self.responder_password, self.responder_room, self.responder_roompassword, self.responder_nick) 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(("127.0.0.1", 5223)): + to = ("127.0.0.1", 5223) + if self.responder_password != "password": + to = () + if responder.connect(to): responder.process(block=False) else: print "connect() failed" @@ -49,7 +59,7 @@ class BaseTest: self.post_test() sys.exit(1) - client = Client(self.client_jid, "password", self.room, "client") + client = Client(self.client_jid, self.client_password, self.client_room, self.client_nick) client.register_plugin('xep_0030') # Service Discovery client.register_plugin('xep_0045') # Multi-User Chat client.register_plugin('xep_0199') # XMPP Ping @@ -57,7 +67,10 @@ class BaseTest: time.sleep(2) - if client.connect(("127.0.0.1", 5223)): + to = ("127.0.0.1", 5223) + if self.responder_password != "password": + to = ("127.0.0.1", 5222) + if client.connect(to): client.process(block=False) else: print "connect() failed" @@ -134,10 +147,37 @@ class JabberServerModeConf(BaseTest): os.system("killall lua-5.1 2>/dev/null") os.system("killall spectrum2_libpurple_backend 2>/dev/null") +class JabberSlackServerModeConf(BaseTest): + def __init__(self): + BaseTest.__init__(self, "jabber_slack_test.cfg", True, "room%conference.localhost@localhostxmpp") + self.client_jid = "client@localhost" + self.client_room = "room@conference.localhost" + self.responder_jid = "owner@spectrum2tests.xmpp.slack.com" + self.responder_password = "spectrum2tests.rkWHkOrjYucxsmBVkA9K" + self.responder_room = "spectrum2_room@conference.spectrum2tests.xmpp.slack.com" + self.responder_nick = "owner" + self.responder_roompassword = "spectrum2tests.rkWHkOrjYucxsmBVkA9K" + + def skip_test(self, test): + os.system("cp slack.sql users.sqlite") + if test in ["muc_whois.py", "muc_change_topic.py", "muc_join_leave.py", "muc_pm.py"]: + return True + return False + + def pre_test(self): + os.system("prosody --config prosody.cfg.lua > prosody.log &") + #time.sleep(3) + #os.system("../../../spectrum_manager/src/spectrum2_manager -c manager.conf localhostxmpp set_oauth2_code xoxb-17213576196-VV2K8kEwwrJhJFfs5YWv6La6 use_bot_token 2>/dev/null >/dev/null") + + def post_test(self): + os.system("killall lua-5.1 2>/dev/null") + os.system("killall spectrum2_libpurple_backend 2>/dev/null") + configurations = [] configurations.append(LibcommuniServerModeSingleServerConf()) configurations.append(LibcommuniServerModeConf()) configurations.append(JabberServerModeConf()) +configurations.append(JabberSlackServerModeConf()) exitcode = 0 diff --git a/src/HTTPRequestQueue.cpp b/src/HTTPRequestQueue.cpp index dba9c13e..11f39b4a 100644 --- a/src/HTTPRequestQueue.cpp +++ b/src/HTTPRequestQueue.cpp @@ -23,20 +23,24 @@ HTTPRequestQueue::~HTTPRequestQueue() { } void HTTPRequestQueue::handleRequestFinished() { + m_req = NULL; m_queueTimer->start(); } void HTTPRequestQueue::sendNextRequest() { if (m_queue.empty()) { + LOG4CXX_INFO(logger, "queue is empty"); m_req = NULL; m_queueTimer->stop(); return; } if (m_req) { + LOG4CXX_INFO(logger, "we are handling the request"); return; } + LOG4CXX_INFO(logger, "Starting new request"); m_req = m_queue.front(); m_queue.pop(); m_req->onRequestFinished.connect(boost::bind(&HTTPRequestQueue::handleRequestFinished, this)); @@ -46,6 +50,7 @@ void HTTPRequestQueue::sendNextRequest() { void HTTPRequestQueue::queueRequest(HTTPRequest *req) { m_queue.push(req); + LOG4CXX_INFO(logger, "request queued"); if (!m_req) { sendNextRequest(); }