From fa41615da7020d4d951ed3a0b98464bed66ff58b Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Thu, 8 Oct 2015 23:59:27 +0100 Subject: max_parallel transport option --- test/confs/0288 | 1 + test/confs/0611 | 68 ++++++++++++++++++++++++++++++++++++++++++++ test/log/0288 | 4 +++ test/log/0611 | 27 ++++++++++++++++++ test/scripts/0000-Basic/0288 | 31 +++++++++++++++++++- test/scripts/0000-Basic/0611 | 43 ++++++++++++++++++++++++++++ test/stdout/0288 | 24 ++++++++++++++++ test/stdout/0390 | 2 ++ 8 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 test/confs/0611 create mode 100644 test/log/0611 create mode 100644 test/scripts/0000-Basic/0611 (limited to 'test') diff --git a/test/confs/0288 b/test/confs/0288 index 270ffb29e..1d41d0804 100644 --- a/test/confs/0288 +++ b/test/confs/0288 @@ -1,4 +1,5 @@ # Exim test configuration 0288 +# serialize_hosts option on smtp transport exim_path = EXIM_PATH host_lookup_order = bydns diff --git a/test/confs/0611 b/test/confs/0611 new file mode 100644 index 000000000..b1bff27a1 --- /dev/null +++ b/test/confs/0611 @@ -0,0 +1,68 @@ +# Exim test configuration 0611 +# max_parallel on transport + +SERVER= + +exim_path = EXIM_PATH +host_lookup_order = bydns +primary_hostname = myhost.test.ex +spool_directory = DIR/spool +log_file_path = DIR/spool/log/%slog +gecos_pattern = "" +gecos_name = CALLER_NAME + +# ----- Main settings ----- + +qualify_domain = test.ex +queue_run_in_order +log_selector = +received_recipients + +acl_smtp_rcpt = accept ${if eq {SERVER}{server} {delay = 2s}} + +# ----- Routers ----- + +begin routers + +server: + condition = ${if eq {SERVER}{server} {yes}{no}} + driver = redirect + data = :blackhole: + +rmt_client: + local_parts = a:b:c + driver = manualroute + route_list = * 127.0.0.1 + self = send + transport = smtp + +lcl_client: + local_parts = x:y:z + driver = accept + transport = pipe + +# ----- Transports ----- + +begin transports + +smtp: + driver = smtp + port = PORT_D + max_rcpt = 1 + connection_max_messages = 1 + max_parallel = 2 + +pipe: + driver = pipe + command = "sleep 2; cat > /dev/null" + use_shell = true + max_parallel = 1 + +# ----- Retry ----- + + +begin retry + +* * F,1h,10m + + +# End diff --git a/test/log/0288 b/test/log/0288 index 6e082602a..5ca2885a4 100644 --- a/test/log/0288 +++ b/test/log/0288 @@ -3,3 +3,7 @@ 1999-03-02 09:44:33 10HmaX-0005vi-00 == b@test.ex R=all T=smtp defer (-53): connection limit reached for all hosts 1999-03-02 09:44:33 10HmaX-0005vi-00 => a@test.ex R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK" 1999-03-02 09:44:33 End queue run: pid=pppp +1999-03-02 09:44:33 Start queue run: pid=pppp +1999-03-02 09:44:33 10HmaX-0005vi-00 => b@test.ex R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK" +1999-03-02 09:44:33 10HmaX-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp diff --git a/test/log/0611 b/test/log/0611 new file mode 100644 index 000000000..39c10bc12 --- /dev/null +++ b/test/log/0611 @@ -0,0 +1,27 @@ +1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss for a b c +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 Start queue run: pid=pppp +1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@test.ex H=localhost (myhost.test.ex) [127.0.0.1] P=esmtp S=sss id=E10HmaX-0005vi-00@myhost.test.ex for a@test.ex +1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: R=server +1999-03-02 09:44:33 10HmaY-0005vi-00 Completed +1999-03-02 09:44:33 10HmaX-0005vi-00 => a@test.ex R=rmt_client T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmaY-0005vi-00" +1999-03-02 09:44:33 10HmaZ-0005vi-00 <= CALLER@test.ex H=localhost (myhost.test.ex) [127.0.0.1] P=esmtp S=sss id=E10HmaX-0005vi-00@myhost.test.ex for b@test.ex +1999-03-02 09:44:33 10HmaZ-0005vi-00 => :blackhole: R=server +1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed +1999-03-02 09:44:33 10HmaX-0005vi-00 => b@test.ex R=rmt_client T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmaZ-0005vi-00" +1999-03-02 09:44:33 End queue run: pid=pppp +1999-03-02 09:44:33 Start queue run: pid=pppp +1999-03-02 09:44:33 10HmbA-0005vi-00 <= CALLER@test.ex H=localhost (myhost.test.ex) [127.0.0.1] P=esmtp S=sss id=E10HmaX-0005vi-00@myhost.test.ex for c@test.ex +1999-03-02 09:44:33 10HmbA-0005vi-00 => :blackhole: R=server +1999-03-02 09:44:33 10HmbA-0005vi-00 Completed +1999-03-02 09:44:33 10HmaX-0005vi-00 => c@test.ex R=rmt_client T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbA-0005vi-00" +1999-03-02 09:44:33 10HmaX-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp +1999-03-02 09:44:33 10HmbB-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss for y +1999-03-02 09:44:33 10HmbC-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss for z +1999-03-02 09:44:33 10HmbB-0005vi-00 => y R=lcl_client T=pipe +1999-03-02 09:44:33 10HmbB-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp +1999-03-02 09:44:33 10HmbC-0005vi-00 => z R=lcl_client T=pipe +1999-03-02 09:44:33 10HmbC-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp diff --git a/test/scripts/0000-Basic/0288 b/test/scripts/0000-Basic/0288 index 7b867cedb..ed381dad7 100644 --- a/test/scripts/0000-Basic/0288 +++ b/test/scripts/0000-Basic/0288 @@ -1,9 +1,12 @@ # serialize_hosts need_ipv4 # +# preload the spool exim -odq a b . **** +# +# a slow server as a test target server PORT_S 220 ESMTP EHLO @@ -21,6 +24,32 @@ DATA QUIT 250 OK **** +# +# First message should go; second does not wait for 1st complete +# on same conn due to connection_max_messages, then is deferred +# as second transport run aborted by serialize_hosts. +exim -q +**** +# +# a server as a test target +server PORT_S +220 ESMTP +EHLO +250-OK +250 HELP +MAIL FROM: +250 Sender OK +RCPT TO: +250 Recipient OK +DATA +354 Send data +. +250 OK +QUIT +250 OK +**** +# +# Remaining message on queue should go immediately; no delay +# associated with retry rules exim -q **** -no_msglog_check diff --git a/test/scripts/0000-Basic/0611 b/test/scripts/0000-Basic/0611 new file mode 100644 index 000000000..c35284147 --- /dev/null +++ b/test/scripts/0000-Basic/0611 @@ -0,0 +1,43 @@ +# max_parallel on transport +need_ipv4 +# +# Remote transport: +# preload the spool +exim -odq a b c +. +**** +# +# a slow server as a test target +exim -DSERVER=server -bd -oX PORT_D +**** +# +# First and second messages should go, as separate conns due to +# connection_max_messages, third is deferred +# as third transport run denied by max_parallel +exim -q +**** +# +# +# Remaining message on queue should go immediately; no delay +# associated with retry rules +exim -q +**** +killdaemon +# +######## +# +# +# Local transport: +# Only one message should go as the transport takes a long +# time and we set max_parallel=1 to serialize it +exim y +**** +exim z +**** +# +# +sleep 3 +# +# Remaining message on queue should go immediately; no delay +# associated with retry rules +exim -q diff --git a/test/stdout/0288 b/test/stdout/0288 index 8f36a023d..3eab9dfe7 100644 --- a/test/stdout/0288 +++ b/test/stdout/0288 @@ -25,3 +25,27 @@ Date: Tue, 2 Mar 1999 09:44:33 +0000 QUIT 250 OK End of script +Listening on port 1224 ... +Connection request from [127.0.0.1] +220 ESMTP +EHLO myhost.test.ex +250-OK +250 HELP +MAIL FROM: +250 Sender OK +RCPT TO: +250 Recipient OK +DATA +354 Send data +Received: from CALLER by myhost.test.ex with local (Exim x.yz) + (envelope-from ) + id 10HmaX-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000 +Message-Id: +From: CALLER_NAME +Date: Tue, 2 Mar 1999 09:44:33 +0000 + +. +250 OK +QUIT +250 OK +End of script diff --git a/test/stdout/0390 b/test/stdout/0390 index a80e34c38..ca6f90cbd 100644 --- a/test/stdout/0390 +++ b/test/stdout/0390 @@ -52,6 +52,7 @@ headers_remove = headers_rewrite = home_directory = no_initgroups +max_parallel = message_size_limit = no_rcpt_include_affixes retry_use_local_part @@ -106,6 +107,7 @@ headers_remove = headers_rewrite = home_directory = no_initgroups +max_parallel = message_size_limit = no_rcpt_include_affixes retry_use_local_part -- cgit v1.2.3