Add an -n argument to pathoc, to repeat the specified requests N times.

This commit is contained in:
Aldo Cortesi 2012-07-21 15:15:10 +12:00
parent 3e6f440b8d
commit 72e30d4712
2 changed files with 38 additions and 26 deletions

53
pathoc
View File

@ -5,12 +5,34 @@ from netlib import tcp
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='A perverse HTTP client.')
parser.add_argument('--port', "-p", type=int, default=None, help="Port. Defaults to 80, or 443 if SSL is active.")
parser.add_argument('--ssl', "-s", action="store_true", default=False, help="Connect with SSL.")
parser.add_argument('--sni', "-n", type=str, default=False, help="SSL Server Name Indication.")
parser.add_argument('--verbose', '-v', action='count')
parser.add_argument('host', type=str, help='Host to connect to')
parser.add_argument('request', type=str, nargs="+", help='Request specification')
parser.add_argument(
"-n", dest='repeat', default=1, type=int, metavar="N",
help='Repeat requests N times.'
)
parser.add_argument(
"-p", dest="port", type=int, default=None,
help="Port. Defaults to 80, or 443 if SSL is active."
)
parser.add_argument(
"-s", dest="ssl", action="store_true", default=False,
help="Connect with SSL."
)
parser.add_argument(
"-i", dest="sni", type=str, default=False,
help="SSL Server Name Indication."
)
parser.add_argument(
"-v", dest="verbose", action='count',
help="Increase verbosity."
)
parser.add_argument(
'host', type=str,
help='Host to connect to'
)
parser.add_argument(
'request', type=str, nargs="+",
help='Request specification'
)
args = parser.parse_args()
@ -19,12 +41,13 @@ if __name__ == "__main__":
else:
port = args.port
p = pathoc.Pathoc(args.host, port)
try:
p.connect()
except tcp.NetLibError, v:
print >> sys.stderr, str(v)
sys.exit(1)
if args.ssl:
p.convert_to_ssl(sni=args.sni)
p.print_requests(args.request, args.verbose)
for i in range(args.repeat):
p = pathoc.Pathoc(args.host, port)
try:
p.connect()
except tcp.NetLibError, v:
print >> sys.stderr, str(v)
sys.exit(1)
if args.ssl:
p.convert_to_ssl(sni=args.sni)
p.print_requests(args.request, args.verbose)

11
todo
View File

@ -1,11 +0,0 @@
0.2:
- API
- Anchor management
- Client library
- Unit testing examples
- Specify if server should add Server and Date headers
- Shortcuts for cookies, auth
- Various SSL errors (expired certs, etc.)
- Muck with caching