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: all four are pure # outbound TCP clients, so sharing one netns is only a source-IP detail. It never exits, because a # client that finishes early would take the namespace, and every other conversation, with it. dumbclient-netns: image: nicolaka/netshoot:v0.16 <<: *log-limits command: ["sleep", "infinity"] init: true dumbclient-w2000: build: ./interop-tests/peers/dumbclient image: interop-dumbclient:de0334b <<: *log-limits network_mode: "service:dumbclient-netns" command: ["conf/window2000.yml"] healthcheck: *dumbclient-healthcheck depends_on: dumbclient-netns: condition: service_started # S9's comparison run: window below maxHeldMessages (1000, session-options.ts), where nothing # should ever be throttled - see findings/07-load.md. dumbclient-w500: build: ./interop-tests/peers/dumbclient image: interop-dumbclient:de0334b <<: *log-limits network_mode: "service:dumbclient-netns" command: ["conf/window500.yml"] healthcheck: *dumbclient-healthcheck depends_on: dumbclient-netns: 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-netns" environment: DUMBCLIENT_BIN: /app/smpp-dumb-client-noping command: ["conf/idle.yml"] healthcheck: *dumbclient-healthcheck depends_on: dumbclient-netns: 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-netns" command: ["conf/soak.yml"] healthcheck: *dumbclient-healthcheck depends_on: dumbclient-netns: condition: service_started # Every dumbclient-* service shares dumbclient-netns's namespace (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-netns" cap_add: - NET_ADMIN - NET_RAW depends_on: dumbclient-netns: condition: service_started 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