diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/README | 6 | ||||
-rw-r--r-- | test/confs/2700 | 16 | ||||
-rwxr-xr-x | test/runtest | 55 | ||||
-rw-r--r-- | test/scripts/2700-redis/2700 | 12 | ||||
-rw-r--r-- | test/scripts/2700-redis/REQUIRES | 2 | ||||
-rw-r--r-- | test/stdout/2700 | 3 |
6 files changed, 94 insertions, 0 deletions
diff --git a/test/README b/test/README index cdc240df0..d986a47cb 100644 --- a/test/README +++ b/test/README @@ -840,6 +840,12 @@ terminated by four asterisks. Even if no data is required for the particular usage, the asterisks must be given. + background + +This command takes one script line and runs it in the background, +in parallel with following commands. For external daemons, eg. redis-server. + + catwrite <file name> [nxm[=start-of-line-text]]* This command operates like the "write" command, which is described below, diff --git a/test/confs/2700 b/test/confs/2700 new file mode 100644 index 000000000..bb001681d --- /dev/null +++ b/test/confs/2700 @@ -0,0 +1,16 @@ +# Exim test configuration 2700 + +exim_path = EXIM_PATH +host_lookup_order = bydns +primary_hostname = myhost.test.ex +spool_directory = DIR/spool +log_file_path = DIR/spool/log/SERVER%slog +gecos_pattern = "" +gecos_name = CALLER_NAME +tls_advertise_hosts = + +# ----- Main settings ----- + +redis_servers = 127.0.0.1// + +# End diff --git a/test/runtest b/test/runtest index d62da04c0..97a32cb7f 100755 --- a/test/runtest +++ b/test/runtest @@ -2210,6 +2210,45 @@ elsif (/^([A-Z_]+=\S+\s+)?(\d+)?\s*(sudo(?:\s+-u\s+(\w+))?\s+)?exim(_\S+)?\s+(.* } } +# The "background" command is run but not waited-for, like exim -DSERVER=server. +# One script line is read and fork-exec'd. The PID is stored for a later +# killdaemon. + +elsif (/^background$/) + { + my $line; +# $pidfile = "$parm_cwd/aux-var/server-daemon.pid"; + + $_ = <SCRIPT>; $lineno++; + chomp; + $line = $_; + if ($debug) { printf ">> daemon: $line >>test-stdout 2>>test-stderr\n"; } + + my $pid = fork(); + if (not defined $pid) { die "** fork failed: $!\n" } + if (not $pid) { + print "[$$]>> ${line}\n" if ($debug); + close(STDIN); + open(STDIN, "<", "test-stdout"); + close(STDOUT); + open(STDOUT, ">>", "test-stdout"); + close(STDERR); + open(STDERR, ">>", "test-stderr-server"); + exec "exec ${line}"; + exit(1); + } + +# open(my $fh, ">", $pidfile) || +# tests_exit(-1, "Failed to open $pidfile: $!"); +# printf($fh, "%d\n", $pid); +# close($fh); + + while (<SCRIPT>) { $lineno++; last if /^\*{4}\s*$/; } # Ignore any input + select(undef, undef, undef, 0.3); # Let the daemon get going + return (3, { exim_pid => $pid }); # Don't wait + } + + # Unknown command @@ -2811,6 +2850,22 @@ if (defined $parm_support{'Content_Scanning'}) ################################################## +# Check for redis # +################################################## +if (defined $parm_support{'Experimental_Redis'}) + { + if (system("redis-server -v 2>/dev/null >/dev/null") == 0) + { + print "The redis-server command works\n"; + $parm_running{'redis'} = ' '; + } + else + { + print "The redis-server command failed: assume Redis not installed\n"; + } + } + +################################################## # Test for the basic requirements # ################################################## diff --git a/test/scripts/2700-redis/2700 b/test/scripts/2700-redis/2700 new file mode 100644 index 000000000..c0e84dae9 --- /dev/null +++ b/test/scripts/2700-redis/2700 @@ -0,0 +1,12 @@ +# Redis lookups and quoting +# +background +redis-server +**** +exim -be -d-all+expand+lookup +${lookup redis{set keyname ${quote_redis:objvalue plus}}} +${lookup redis{get keyname}} +**** +# +killdaemon +no_stderr_check diff --git a/test/scripts/2700-redis/REQUIRES b/test/scripts/2700-redis/REQUIRES new file mode 100644 index 000000000..9c48ef88e --- /dev/null +++ b/test/scripts/2700-redis/REQUIRES @@ -0,0 +1,2 @@ +support Experimental_Redis +running redis diff --git a/test/stdout/2700 b/test/stdout/2700 new file mode 100644 index 000000000..ada3ea157 --- /dev/null +++ b/test/stdout/2700 @@ -0,0 +1,3 @@ +> OK +> objvalue plus +> |