mirror of
https://git.proxmox.com/git/proxmox-spamassassin
synced 2025-08-06 07:22:34 +00:00
96 lines
2.0 KiB
Raku
Executable File
96 lines
2.0 KiB
Raku
Executable File
#!/usr/bin/perl -T
|
|
|
|
use lib '.'; use lib 't';
|
|
use SATest; sa_t_init("spamd_prefork_stress_3");
|
|
|
|
use Test::More;
|
|
diag("NOTE: this test requires both 'run_spamd_prefork_stress_test' and 'run_long_tests' set to 'y'.");
|
|
|
|
plan skip_all => "Spamd tests disabled" if $SKIP_SPAMD_TESTS;
|
|
plan skip_all => "Long running tests disabled" unless conf_bool('run_long_tests');
|
|
plan skip_all => "Spamd prefork stress tests disabled" unless conf_bool('run_spamd_prefork_stress_test');
|
|
plan tests => 291;
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
tstlocalrules ('
|
|
loadplugin myTestPlugin ../../data/testplugin.pm
|
|
header PLUGIN_SLEEP eval:sleep_based_on_header()
|
|
');
|
|
|
|
|
|
%patterns = (
|
|
|
|
q{ X-Spam-Status: Yes, score=}, 'status',
|
|
q{ X-Spam-Flag: YES}, 'flag',
|
|
q{ X-Spam-Level: **********}, 'stars',
|
|
q{ TEST_ENDSNUMS}, 'endsinnums',
|
|
q{ TEST_NOREALNAME}, 'noreal',
|
|
|
|
);
|
|
|
|
my $tmpnum = 0;
|
|
start_spamd("-L -m5");
|
|
ok ($spamd_pid > 1);
|
|
|
|
srand ($$); print "srand: $$\n";
|
|
|
|
ok (spamcrun ("< data/spam/001", \&patterns_run_cb));
|
|
ok_all_patterns();
|
|
|
|
test_fg(); ok_all_patterns();
|
|
test_bg();
|
|
foreach $i (0 .. 5) {
|
|
foreach $i (0 .. 20) {
|
|
test_bg();
|
|
}
|
|
test_fg(); ok_all_patterns();
|
|
test_fg(); ok_all_patterns();
|
|
test_fg(); ok_all_patterns();
|
|
test_fg(); ok_all_patterns();
|
|
}
|
|
|
|
test_fg(); ok_all_patterns();
|
|
ok (stop_spamd());
|
|
|
|
|
|
|
|
sub test_fg {
|
|
clear_pattern_counters();
|
|
my $secs = (int rand 5) + 1;
|
|
my $tmpf = mk_mail($secs);
|
|
ok (spamcrun ("<$tmpf", \&patterns_run_cb));
|
|
unlink $tmpf;
|
|
clean_pending_unlinks();
|
|
}
|
|
|
|
sub test_bg {
|
|
my $secs = (int rand 5) + 1;
|
|
my $tmpf = mk_mail($secs);
|
|
ok (spamcrun_background ("<$tmpf", {}));
|
|
push (@pending_unlinks, $tmpf);
|
|
}
|
|
|
|
sub mk_mail {
|
|
my $secs = shift;
|
|
|
|
my $tmpf = "log/tmp.$testname.$tmpnum"; $tmpnum++;
|
|
|
|
open (IN, "<data/spam/001");
|
|
open (OUT, ">$tmpf") or die "cannot write $tmpf";
|
|
print OUT "Sleep-Time: $secs\n";
|
|
while (<IN>) {
|
|
print OUT;
|
|
}
|
|
close OUT;
|
|
close IN;
|
|
return $tmpf;
|
|
}
|
|
|
|
sub clean_pending_unlinks {
|
|
unlink @pending_unlinks;
|
|
@pending_unlinks = ();
|
|
}
|
|
|
|
|