Test echo also for Slack

This commit is contained in:
Jan Kaluza 2015-12-22 18:05:48 +01:00
parent 4ce77ae70b
commit a025aa1085
10 changed files with 111 additions and 16 deletions

View file

@ -118,7 +118,7 @@ void SlackSession::sendMessage(boost::shared_ptr<Swift::Message> 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());

View file

@ -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

View file

@ -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):

View file

@ -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'] == "<owner> echo abc":
self.tests["echo_received"][1] = True
self.finished = True

View file

@ -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):

View file

@ -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):

View file

@ -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):

Binary file not shown.

View file

@ -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

View file

@ -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();
}