# Thierry Parmentelat <thierry.parmentelat@inria.fr>
# Copyright (C) 2010 INRIA
#
+
+# this is a small and simple standalone utility
+# designed to run in slice-space
+# we keep this in python2 for now until python3
+# can be taken for granted in sliceimage
+
+from __future__ import print_function
+
import sys
import time
import subprocess
from optparse import OptionParser
def myprint(message, id='client'):
- now=time.strftime("%H:%M:%S", time.localtime())
- print "*",now,'(%s)' % id, '--',message
+ now = time.strftime("%H:%M:%S", time.localtime())
+ print("* {now} ({id}) -- {message}".format(**locals()))
sys.stdout.flush()
def show_network_status(id):
parser.print_help()
sys.exit(1)
+ myprint("==================== tcptest.py server", id='server')
show_network_status(id='server')
server = SocketServer.TCPServer((options.address, options.port),
UppercaseRequestHandler)
else:
server.serve_forever()
except KeyboardInterrupt as e:
- print 'Bailing out on keyboard interrupt'
+ print('Bailing out on keyboard interrupt')
sys.exit(1)
class Ready:
default=socket.gethostname(), help="address")
(options, args) = parser.parse_args()
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- try:
- s.bind((options.address, options.port))
- sys.exit(0)
- except Exception as e:
- print e
- sys.exit(1)
+ myprint("==================== tcptest.py ready", id='ready')
+ def can_bind ():
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ try:
+ s.bind((options.address, options.port))
+ return True
+ except Exception as e:
+ print(e)
+ return False
+
+ def eth0_has_ipv4():
+ command = "ip address show eth0 | grep -q ' inet '"
+ return subprocess.check_call(command, shell=True) == 0
+
+ sys.exit(0 if can_bind() and eth0_has_ipv4() else 1)
class Client:
"""
parser.print_help()
sys.exit(1)
+ myprint("==================== tcptest.py client", id='client')
result=True
for i in range(1,options.loops+1):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mout=i*'ping ' + '\n'
min=mout.upper()
if s.send(mout) != len(mout):
- myprint("cannot send %s"%mout.strip())
+ myprint("cannot send {}".format(mout.strip()))
result=False
break
line=s.recv(len(min))
if line is not line:
- myprint("unexpected reception\ngot:%s\nexpected: %s",line,min)
- result=False
+ myprint("unexpected reception\ngot:{}\nexpected: {}".format(line, min))
+ result = False
else:
- myprint("OK:%s"%mout.strip())
+ myprint("OK:{}".format(mout.strip()))
# leave the connection open, but the last one (so 1 iter returns fast)
if i != options.loops:
time.sleep(options.sleep)
elif arg.find("ready") >= 0:
sys.argv.remove(arg)
Ready().main()
- print 'you must specify either --client or --server'
+ print('you must specify either --client or --server')
sys.exit(1)