xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/bpf/tcp_client.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/usr/bin/env python3
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun
6*4882a593Smuzhiyunimport sys, os, os.path, getopt
7*4882a593Smuzhiyunimport socket, time
8*4882a593Smuzhiyunimport subprocess
9*4882a593Smuzhiyunimport select
10*4882a593Smuzhiyun
11*4882a593Smuzhiyundef read(sock, n):
12*4882a593Smuzhiyun    buf = b''
13*4882a593Smuzhiyun    while len(buf) < n:
14*4882a593Smuzhiyun        rem = n - len(buf)
15*4882a593Smuzhiyun        try: s = sock.recv(rem)
16*4882a593Smuzhiyun        except (socket.error) as e: return b''
17*4882a593Smuzhiyun        buf += s
18*4882a593Smuzhiyun    return buf
19*4882a593Smuzhiyun
20*4882a593Smuzhiyundef send(sock, s):
21*4882a593Smuzhiyun    total = len(s)
22*4882a593Smuzhiyun    count = 0
23*4882a593Smuzhiyun    while count < total:
24*4882a593Smuzhiyun        try: n = sock.send(s)
25*4882a593Smuzhiyun        except (socket.error) as e: n = 0
26*4882a593Smuzhiyun        if n == 0:
27*4882a593Smuzhiyun            return count;
28*4882a593Smuzhiyun        count += n
29*4882a593Smuzhiyun    return count
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun
32*4882a593SmuzhiyunserverPort = int(sys.argv[1])
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun# create active socket
35*4882a593Smuzhiyunsock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
36*4882a593Smuzhiyuntry:
37*4882a593Smuzhiyun    sock.connect(('::1', serverPort))
38*4882a593Smuzhiyunexcept socket.error as e:
39*4882a593Smuzhiyun    sys.exit(1)
40*4882a593Smuzhiyun
41*4882a593Smuzhiyunbuf = b''
42*4882a593Smuzhiyunn = 0
43*4882a593Smuzhiyunwhile n < 1000:
44*4882a593Smuzhiyun    buf += b'+'
45*4882a593Smuzhiyun    n += 1
46*4882a593Smuzhiyun
47*4882a593Smuzhiyunsock.settimeout(1);
48*4882a593Smuzhiyunn = send(sock, buf)
49*4882a593Smuzhiyunn = read(sock, 500)
50*4882a593Smuzhiyunsys.exit(0)
51