Add pathoc -o, oneshot mode, exits after the first non-ignored response.

This commit is contained in:
Aldo Cortesi 2012-09-27 10:56:06 +12:00
parent 7209a75201
commit 65108ed429
2 changed files with 11 additions and 2 deletions

View File

@ -49,6 +49,8 @@ class Pathoc(tcp.TCPClient):
explain: Print request explanation explain: Print request explanation
hexdump: When printing requests or responses, use hex dump output hexdump: When printing requests or responses, use hex dump output
ignorecodes: Sequence of return codes to ignore ignorecodes: Sequence of return codes to ignore
Returns True if we have a non-ignored response.
""" """
try: try:
r = rparse.parse_request(self.settings, spec) r = rparse.parse_request(self.settings, spec)
@ -94,3 +96,4 @@ class Pathoc(tcp.TCPClient):
else: else:
if resp: if resp:
self._show_summary(fp, *resp) self._show_summary(fp, *resp)
return True

10
pathoc
View File

@ -36,12 +36,16 @@ if __name__ == "__main__":
group = parser.add_argument_group('Controlling Output') group = parser.add_argument_group('Controlling Output')
group.add_argument( group.add_argument(
"-c", dest="ignorecodes", type=str, default="", "-c", dest="ignorecodes", type=str, default="",
help="Comma-separated list of response codes filter" help="Comma-separated list of response codes to ignore"
) )
group.add_argument( group.add_argument(
"-e", dest="explain", action="store_true", default=False, "-e", dest="explain", action="store_true", default=False,
help="Explain requests" help="Explain requests"
) )
group.add_argument(
"-o", dest="oneshot", action="store_true", default=False,
help="Oneshot - exit after first non-ignored response"
)
group.add_argument( group.add_argument(
"-q", dest="showreq", action="store_true", default=False, "-q", dest="showreq", action="store_true", default=False,
help="Print full request" help="Print full request"
@ -84,7 +88,7 @@ if __name__ == "__main__":
if args.timeout: if args.timeout:
p.settimeout(args.timeout) p.settimeout(args.timeout)
for spec in args.request: for spec in args.request:
p.print_request( ret = p.print_request(
spec, spec,
showreq=args.showreq, showreq=args.showreq,
showresp=args.showresp, showresp=args.showresp,
@ -93,6 +97,8 @@ if __name__ == "__main__":
ignorecodes=codes ignorecodes=codes
) )
sys.stdout.flush() sys.stdout.flush()
if ret and args.oneshot:
sys.exit(0)
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass