x-log-limits: &log-limits logging: driver: json-file options: max-file: "3" max-size: 20m x-dumbclient-healthcheck: &dumbclient-healthcheck test: ["CMD-SHELL", "test -f /tmp/healthy"] interval: 1s retries: 30 timeout: 2s services: # Network owner for every dumbclient-* service and the capture sidecar below (see the comment on # `capture`): all four are pure outbound TCP clients with nothing of their own listening, so # sharing one netns is only ever a source-IP detail, never a port collision. dumbclient-w2000: build: ./interop-tests/peers/dumbclient image: interop-dumbclient:de0334b <<: *log-limits command: ["conf/window2000.yml"] healthcheck: *dumbclient-healthcheck # S9's comparison run: window below maxHeldMessages (1000, session-options.ts), where nothing # should ever be evicted - see findings/07-load.md. dumbclient-w500: build: ./interop-tests/peers/dumbclient image: interop-dumbclient:de0334b <<: *log-limits network_mode: "service:dumbclient-w2000" command: ["conf/window500.yml"] healthcheck: *dumbclient-healthcheck depends_on: dumbclient-w2000: condition: service_started # S6: sends one message, then never speaks again - the no-ping binary (see the Dockerfile) sends # no enquire_link either, which nothing else built for this phase can say (smppload is blocked). dumbclient-idle: build: ./interop-tests/peers/dumbclient image: interop-dumbclient:de0334b <<: *log-limits network_mode: "service:dumbclient-w2000" environment: DUMBCLIENT_BIN: /app/smpp-dumb-client-noping command: ["conf/idle.yml"] healthcheck: *dumbclient-healthcheck depends_on: dumbclient-w2000: condition: service_started # The long soak: the longest run the time-box allows, fast handler, watched for anything that # grows without bound. dumbclient-soak: build: ./interop-tests/peers/dumbclient image: interop-dumbclient:de0334b <<: *log-limits network_mode: "service:dumbclient-w2000" command: ["conf/soak.yml"] healthcheck: *dumbclient-healthcheck depends_on: dumbclient-w2000: condition: service_started # Every dumbclient-* service shares dumbclient-w2000's netns (see above), so this one sidecar # sees all four conversations with node:2775 - the same pattern compose.kannel.yaml uses for its # four bearerbox variants, one namespace deeper. capture: image: nicolaka/netshoot:v0.16 network_mode: "service:dumbclient-w2000" cap_add: - NET_ADMIN - NET_RAW depends_on: dumbclient-w2000: condition: service_healthy command: ["dumpcap", "-i", "any", "-f", "tcp port 2775", "-w", "/captures/dumbclient.pcapng"] volumes: - ./interop-tests/captures:/captures node: depends_on: capture: condition: service_started dumbclient-idle: condition: service_healthy dumbclient-soak: condition: service_healthy dumbclient-w500: condition: service_healthy dumbclient-w2000: condition: service_healthy