Пример #1
0
def main():
    args = parse_arguments()

    if args.count not in range(1000000):
        print("Bad number of packets to transmit.", file=sys.stderr)
        return

    try:
        cli = Client(args.server, args.count, args.verbose, args.dest)
        if args.ping:
            cli.run_direct_ping()
        elif args.reverse:
            cli.run_reverse_ping()
        else:
            if not args.dest:
                print("Destination ip and port needed", file=sys.stderr)
                return
            elif args.dest and len(args.dest.split(':')) != 2:
                print("Destination ip must be likely <ip>:<port>",
                      file=sys.stderr)
                return
            cli.run_proxy_ping()
        cli.close()
    except (gaierror, ConnectionRefusedError) as e:
        print(f"Unable to connect to server: {str(e)}", file=sys.stderr)
    except ConnectionClosedException as e:
        print(f"Connection Closed: {str(e)}", file=sys.stderr)
Пример #2
0
class TestClient(unittest.TestCase):
    def setUp(self):
        args = parse_args()
        self.client = Client((args.addr, args.port), 'user')

    def test_username(self):
        result = self.client.validate_username('x' * 20)
        self.assertIs(type(result), str, 'Результат должен юыть строкой')

    def test_username_too_long(self):
        with self.assertRaises(SystemExit,
                               msg='Имя должно быть <= 25 символов'):
            self.client.validate_username('x' * 26)

    def test_create_presence(self):
        result = self.client.create_presence()
        self.assertIs(type(result), dict, 'результат должен быть словарём')

    def test_translate_response_type(self):
        with self.assertRaises(TypeError, msg='Ответ должен быть словарём'):
            self.client.translate_response(
                str({
                    'user': '******',
                    'response': 200
                }))

    def test_translate_response_code(self):
        with self.assertRaises(
                MandatoryKeyError,
                msg='Не хватает обязательного атрибута response'):
            self.client.translate_response({'user': '******'})

    def test_translate_response_code_len(self):
        with self.assertRaises(ResponseCodeLenError,
                               msg='Длина кода должна быть 3 символа'):
            self.client.translate_response({'user': '******', 'response': 2000})

    def test_translate_response_unknown(self):
        with self.assertRaises(ResponseCodeError, msg='Неверный код ответа'):
            self.client.translate_response({'user': '******', 'response': 199})

    def tearDown(self):
        self.client.close()
Пример #3
0
from client.client import Client
import time

if __name__ == "__main__":
    client = Client(('', 25566))

    client.connect(('localhost', 25565))

    client.close()