#!/bin/sh

test_description='simple command server'

TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh

test-tool simple-ipc SUPPORTS_SIMPLE_IPC || {
	skip_all='simple IPC not supported on this platform'
	test_done
}

stop_simple_IPC_server () {
	test-tool simple-ipc stop-daemon
}

test_expect_success 'start simple command server' '
	test_atexit stop_simple_IPC_server &&
	test-tool simple-ipc start-daemon --threads=8 &&
	test-tool simple-ipc is-active
'

test_expect_success 'simple command server' '
	test-tool simple-ipc send --token=ping >actual &&
	echo pong >expect &&
	test_cmp expect actual
'

test_expect_success 'servers cannot share the same path' '
	test_must_fail test-tool simple-ipc run-daemon &&
	test-tool simple-ipc is-active
'

test_expect_success 'big response' '
	test-tool simple-ipc send --token=big >actual &&
	test_line_count -ge 10000 actual &&
	grep -q "big: [0]*9999\$" actual
'

test_expect_success 'chunk response' '
	test-tool simple-ipc send --token=chunk >actual &&
	test_line_count -ge 10000 actual &&
	grep -q "big: [0]*9999\$" actual
'

test_expect_success 'slow response' '
	test-tool simple-ipc send --token=slow >actual &&
	test_line_count -ge 100 actual &&
	grep -q "big: [0]*99\$" actual
'

# Send an IPC with n=100,000 bytes of ballast.  This should be large enough
# to force both the kernel and the pkt-line layer to chunk the message to the
# daemon and for the daemon to receive it in chunks.
#
test_expect_success 'sendbytes' '
	test-tool simple-ipc sendbytes --bytecount=100000 --byte=A >actual &&
	grep "sent:A00100000 rcvd:A00100000" actual
'

# Start a series of <threads> client threads that each make <batchsize>
# IPC requests to the server.  Each (<threads> * <batchsize>) request
# will open a new connection to the server and randomly bind to a server
# thread.  Each client thread exits after completing its batch.  So the
# total number of live client threads will be smaller than the total.
# Each request will send a message containing at least <bytecount> bytes
# of ballast.  (Responses are small.)
#
# The purpose here is to test threading in the server and responding to
# many concurrent client requests (regardless of whether they come from
# 1 client process or many).  And to test that the server side of the
# named pipe/socket is stable.  (On Windows this means that the server
# pipe is properly recycled.)
#
# On Windows it also lets us adjust the connection timeout in the
# `ipc_client_send_command()`.
#
# Note it is easy to drive the system into failure by requesting an
# insane number of threads on client or server and/or increasing the
# per-thread batchsize or the per-request bytecount (ballast).
# On Windows these failures look like "pipe is busy" errors.
# So I've chosen fairly conservative values for now.
#
# We expect output of the form "sent:<letter><length> ..."
# With terms (7, 19, 13) we expect:
#   <letter> in [A-G]
#   <length> in [19+0 .. 19+(13-1)]
# and (7 * 13) successful responses.
#
test_expect_success 'stress test threads' '
	test-tool simple-ipc multiple \
		--threads=7 \
		--bytecount=19 \
		--batchsize=13 \
		>actual &&
	test_line_count = 92 actual &&
	grep "good 91" actual &&
	grep "sent:A" <actual >actual_a &&
	cat >expect_a <<-EOF &&
		sent:A00000019 rcvd:A00000019
		sent:A00000020 rcvd:A00000020
		sent:A00000021 rcvd:A00000021
		sent:A00000022 rcvd:A00000022
		sent:A00000023 rcvd:A00000023
		sent:A00000024 rcvd:A00000024
		sent:A00000025 rcvd:A00000025
		sent:A00000026 rcvd:A00000026
		sent:A00000027 rcvd:A00000027
		sent:A00000028 rcvd:A00000028
		sent:A00000029 rcvd:A00000029
		sent:A00000030 rcvd:A00000030
		sent:A00000031 rcvd:A00000031
	EOF
	test_cmp expect_a actual_a
'

test_expect_success 'stop-daemon works' '
	test-tool simple-ipc stop-daemon &&
	test_must_fail test-tool simple-ipc is-active &&
	test_must_fail test-tool simple-ipc send --token=ping
'

test_done
