test(fba): verify signed delivery ACK loss and original event recovery
This commit is contained in:
@@ -32,11 +32,12 @@ def encoded(value):
|
||||
|
||||
|
||||
class State:
|
||||
def __init__(self, event_type, event_id, loading_plan_id, log_path=None, container_booking_id=None):
|
||||
def __init__(self, event_type, event_id, loading_plan_id, log_path=None, container_booking_id=None, delivery_id=None):
|
||||
self.event_type = event_type
|
||||
self.selector_id = event_id
|
||||
self.plan_id = loading_plan_id
|
||||
self.booking_id = container_booking_id
|
||||
self.delivery_id = delivery_id
|
||||
self.log_path = log_path
|
||||
self.lock = threading.Lock()
|
||||
self.mode = "PASS"
|
||||
@@ -70,6 +71,8 @@ class State:
|
||||
selected = event_id == self.selector_id
|
||||
elif self.booking_id:
|
||||
selected = isinstance(payload, dict) and str(payload.get("sourceContainerBookingId")) == self.booking_id
|
||||
elif self.delivery_id:
|
||||
selected = isinstance(payload, dict) and str(payload.get("deliveryOrderId")) == self.delivery_id
|
||||
else:
|
||||
selected = isinstance(payload, dict) and str(payload.get("loadingPlanId")) == self.plan_id
|
||||
qualifies = event.get("eventType") == self.event_type and selected
|
||||
@@ -260,6 +263,7 @@ def main():
|
||||
selector.add_argument("--event-id")
|
||||
selector.add_argument("--loading-plan-id")
|
||||
selector.add_argument("--container-booking-id")
|
||||
selector.add_argument("--delivery-id")
|
||||
parser.add_argument("--bind", default="127.0.0.1")
|
||||
parser.add_argument("--port", type=int, default=0)
|
||||
parser.add_argument("--control-port", type=int, default=0)
|
||||
@@ -278,9 +282,11 @@ def main():
|
||||
parser.error("loading-plan-id must be a positive decimal identifier")
|
||||
if args.container_booking_id and not re.fullmatch(r"[1-9][0-9]{0,19}", args.container_booking_id):
|
||||
parser.error("container-booking-id must be a positive decimal identifier")
|
||||
if args.delivery_id and not re.fullmatch(r"[1-9][0-9]{0,19}", args.delivery_id):
|
||||
parser.error("delivery-id must be a positive decimal identifier")
|
||||
if not re.fullmatch(r"[A-Za-z][A-Za-z0-9]{0,79}", args.event_type) or not 0 < args.timeout <= 120:
|
||||
parser.error("invalid event type or timeout")
|
||||
state = State(args.event_type, args.event_id, args.loading_plan_id, args.log, args.container_booking_id)
|
||||
state = State(args.event_type, args.event_id, args.loading_plan_id, args.log, args.container_booking_id, args.delivery_id)
|
||||
data = ThreadingHTTPServer((args.bind, args.port), data_handler(state, args.upstream, args.timeout))
|
||||
control = ThreadingHTTPServer(("127.0.0.1", args.control_port), control_handler(state, token))
|
||||
for server in (data, control):
|
||||
|
||||
Reference in New Issue
Block a user