def test_parse_join_contest_without_default_judge(self): parser = InitParser(connection=self.client_thread, match_manager=self.match_manager) reply, parser = parser.parse('LOGIN {} PASSWORD {}'.format(quote('user1'), quote('passwd1'))) self.assertRegexpMatches(reply, "OK\n") reply, new_parser = parser.parse('JOIN {}'.format(self.contest2.id)) self.assertRegexpMatches(reply, "FAIL INVALID_CONTEST\n") self.assertEqual(parser, new_parser)
def __init__(self, conn, addr, server): super(ClientThread, self).__init__() self.server = server self.conn = conn self.addr = addr self.parser = InitParser(connection=self, match_manager=self.server.match_manager) self.send_lock = threading.RLock()
class ClientThread(threading.Thread): def __init__(self, conn, addr, server): super(ClientThread, self).__init__() self.server = server self.conn = conn self.addr = addr self.parser = InitParser(connection=self, match_manager=self.server.match_manager) self.send_lock = threading.RLock() def send(self, what): """ thread safe send message """ with self.send_lock: self.conn.send(what) def run(self): print "{} [{}] connected".format(*self.addr) for line in split_socket(self.conn): reply, parser = self.parser.parse(line) self.send(reply) self.parser = parser or self.parser self.conn.close() print "{} [{}] disconnected".format(*self.addr)
def test_parse_join_ugly_password(self): parser = InitParser(connection=self.client_thread, match_manager=self.match_manager) reply, parser = parser.parse('LOGIN {} PASSWORD {}'.format(quote('user1'), quote('passwd1'))) self.assertRegexpMatches(reply, "OK\n") reply, parser = parser.parse('JOIN {}'.format(self.contest1.id)) self.assertRegexpMatches(reply, "OK\n")
def test_parse_join_invalid_passwd(self): parser = InitParser(connection=self.client_thread, match_manager=self.match_manager) reply, new_parser = parser.parse('LOGIN {} PASSWORD {}'.format(quote('user1'), quote('random_password'))) self.assertRegexpMatches(reply, "FAIL INVALID_PASSWORD\n") self.assertEqual(parser, new_parser)