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 00000000..7725f7d2 Binary files /dev/null and b/spectrum/src/tests/slack.sql differ 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(); }