Example #1
0
 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)
Example #2
0
 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()
Example #3
0
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)
Example #4
0
 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")
Example #5
0
 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)