diff --git a/Regression/store-bayes-tokens-in-mariadb/bayes_mysql.sql b/Regression/store-bayes-tokens-in-mariadb/bayes_mysql.sql new file mode 100644 index 0000000..3a2440f --- /dev/null +++ b/Regression/store-bayes-tokens-in-mariadb/bayes_mysql.sql @@ -0,0 +1,47 @@ +-- bayes_mysql.sql + +CREATE TABLE bayes_expire ( + id int(11) NOT NULL default '0', + runtime int(11) NOT NULL default '0', + PRIMARY KEY (id) +) ENGINE=InnoDB; + +CREATE TABLE bayes_global_vars ( + variable varchar(30) NOT NULL default '', + value varchar(200) NOT NULL default '', + PRIMARY KEY (variable) +) ENGINE=InnoDB; + +INSERT INTO bayes_global_vars VALUES ('VERSION','3'); + +CREATE TABLE bayes_seen ( + id int(11) NOT NULL default '0', + msgid varchar(200) binary NOT NULL default '', + flag char(1) NOT NULL default '', + PRIMARY KEY (id,msgid) +) ENGINE=InnoDB; + +CREATE TABLE bayes_token ( + id int(11) NOT NULL default '0', + token binary(5) NOT NULL default '', + spam_count int(11) NOT NULL default '0', + ham_count int(11) NOT NULL default '0', + atime int(11) NOT NULL default '0', + PRIMARY KEY (id, token), + INDEX bayes_token_idx1 (id, atime) +) ENGINE=InnoDB; + +CREATE TABLE bayes_vars ( + id int(11) NOT NULL AUTO_INCREMENT, + username varchar(200) NOT NULL default '', + spam_count int(11) NOT NULL default '0', + ham_count int(11) NOT NULL default '0', + token_count int(11) NOT NULL default '0', + last_expire int(11) NOT NULL default '0', + last_atime_delta int(11) NOT NULL default '0', + last_expire_reduce int(11) NOT NULL default '0', + oldest_token_age int(11) NOT NULL default '2147483647', + newest_token_age int(11) NOT NULL default '0', + PRIMARY KEY (id), + UNIQUE bayes_vars_idx1 (username) +) ENGINE=InnoDB; diff --git a/Regression/store-bayes-tokens-in-mariadb/create_db_user.sql b/Regression/store-bayes-tokens-in-mariadb/create_db_user.sql new file mode 100644 index 0000000..2cc2ef6 --- /dev/null +++ b/Regression/store-bayes-tokens-in-mariadb/create_db_user.sql @@ -0,0 +1,6 @@ +-- create_db_user.sql + +CREATE DATABASE spamassassin; +CREATE USER 'spamassassin'@'localhost' IDENTIFIED BY 'password'; +GRANT ALL PRIVILEGES ON spamassassin.* TO 'spamassassin'@'localhost'; +FLUSH PRIVILEGES; diff --git a/Regression/store-bayes-tokens-in-mariadb/drop_tables_and_db.sql b/Regression/store-bayes-tokens-in-mariadb/drop_tables_and_db.sql new file mode 100644 index 0000000..c29aed4 --- /dev/null +++ b/Regression/store-bayes-tokens-in-mariadb/drop_tables_and_db.sql @@ -0,0 +1,13 @@ +-- drop_tables_and_db.sql + +USE spamassassin; + +DROP TABLE IF EXISTS bayes_expire; +DROP TABLE IF EXISTS bayes_global_vars; +DROP TABLE IF EXISTS bayes_seen; +DROP TABLE IF EXISTS bayes_token; +DROP TABLE IF EXISTS bayes_vars; + +DROP DATABASE IF EXISTS spamassassin; +DROP USER IF EXISTS 'spamassassin'@'localhost'; +FLUSH PRIVILEGES; diff --git a/Regression/store-bayes-tokens-in-mariadb/local.cf b/Regression/store-bayes-tokens-in-mariadb/local.cf new file mode 100644 index 0000000..cf30fad --- /dev/null +++ b/Regression/store-bayes-tokens-in-mariadb/local.cf @@ -0,0 +1,7 @@ +# local.cf + +bayes_store_module Mail::SpamAssassin::BayesStore::MySQL +bayes_sql_dsn DBI:MariaDB:database=spamassassin;host=localhost +bayes_sql_username spamassassin +bayes_sql_password password +bayes_sql_override_username amavis \ No newline at end of file diff --git a/Regression/store-bayes-tokens-in-mariadb/main.fmf b/Regression/store-bayes-tokens-in-mariadb/main.fmf new file mode 100644 index 0000000..4dae42c --- /dev/null +++ b/Regression/store-bayes-tokens-in-mariadb/main.fmf @@ -0,0 +1,34 @@ +summary: Test store bayes token in mariadb +description: '' +contact: FrantiĊĦek Hrdina +component: + - spamassassin +test: ./test.sh +framework: beakerlib +recommend: + - spamassassin + - mariadb-server + - mariadb mariadb-connector-c + - mariadb-connector-c-devel + - perl-DBI + - perl-DBD-MySQL +duration: 5m +enabled: true +tag: + - Tier1 +tier: '1' +link: + - verifies: https://issues.redhat.com/browse/RHEL-43418 +adjust: + - enabled: false + when: distro < rhel-8 + continue: false + - enabled: false + when: distro < centos-stream-8 + continue: false + - enabled: false + when: distro >= rhel-10 + continue: false + - enabled: false + when: distro >= centos-stream-10 + continue: false \ No newline at end of file diff --git a/Regression/store-bayes-tokens-in-mariadb/spam.txt b/Regression/store-bayes-tokens-in-mariadb/spam.txt new file mode 100644 index 0000000..e6d12e2 --- /dev/null +++ b/Regression/store-bayes-tokens-in-mariadb/spam.txt @@ -0,0 +1,30 @@ +Delivered-To: lists-bikini@bruce-guenter.dyndns.org +Received: (qmail 16879 invoked from network); 8 Jan 2017 08:13:51 -0000 +Received: from localhost (localhost [127.0.0.1]) + by bruce-guenter.dyndns.org ([192.168.1.2]); 08 Jan 2017 08:13:51 -0000 +Received: from zak.futurequest.net ([127.0.0.1]) + by localhost ([127.0.0.1]) + with SMTP via TCP; 08 Jan 2017 08:13:51 -0000 +Received: (qmail 23999 invoked from network); 8 Jan 2017 08:13:50 -0000 +Received: from dlhbyjp.ijagdad7.net (113.212.140.216) + by zak.futurequest.net with SMTP; 8 Jan 2017 08:13:50 -0000 +Received: from hisxyokcsn (feotrwa.ijagdad7.net [113.212.140.163]) + by dkocemk.ijagdad7.net (Postfix) with ESMTP id 5101F709478 + for ; Sun, 8 Jan 2017 17:13:49 +0900 (JST) +Received: from localhost (61-63-36-host226.kbtelecom.net.tw [61.63.36.226]) + by hisxyokcsn (Postfix) with ESMTP id 2646F5000B7 + for ; Sun, 8 Jan 2017 17:13:49 +0900 (JST) +To: lists-bikini@bruce-guenter.dyndns.org +Message-ID: +Date: Sun, 08 Jan 2017 17:13:49 +0900 +From: "guide@mpw9ukmq.net" +Subject: =?Shift_JIS?B?gXmTwZXKlrOXv5LKkE2ShoF6ia2SUIjKgsaCooKklJyR5YLIi+CKeoLFgreCqoFBjoSCqpPGjqmCxZGXi+CC8JJTk5aCs4K5gsSSuIKrgtyCt4FCgXmOypBek1mVdJdMguiBeg==?=!!! +MIME-Version: 1.0 +Content-Type: text/plain; charset=Shift_JIS +Content-Transfer-Encoding: base64 + +j6yRgZDskLmOcYFAgrOC8YKpgueDgYNig1qBW4NXgqqTzYKrgtyCtYK9DQoNCluDXoNDg2eDi10N +CoF5k8GVypazl7+SypBNkoaBeomtklCIyoLGgqKCpJSckeWCyIvginqCxYK3gqqBQY6EgqqTxo6p +gsWRl4vggvCSU5OWgrOCuYLEkriCq4LcgreBQoF5jsqQXpNZlXSXTILogXoNCg0KW5GxgquC8JPH +gt5dDQpodHRwOi8vaGNydm1jbWJldDQ0cnZ0aGhtdHVqaC5tcHc5dWttcS5uZXQNCg0KW47zkE2D +e4Nig06DWF0NCmh0dHA6Ly9oY3J2bWNtYmV0a2gubXB3OXVrbXEubmV0 \ No newline at end of file diff --git a/Regression/store-bayes-tokens-in-mariadb/test.sh b/Regression/store-bayes-tokens-in-mariadb/test.sh new file mode 100755 index 0000000..30f1ebc --- /dev/null +++ b/Regression/store-bayes-tokens-in-mariadb/test.sh @@ -0,0 +1,64 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +DB_NAME="spamassassin" +DB_USER="spamassassin" +DB_PASSWORD="password" +DB_HOST="localhost" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm spamassassin + + rlFileBackup --missing-ok "/var/lib/mysql" + rlFileBackup --missing-ok "/etc/mail/spamassassin" + rlFileBackup --missing-ok "/var/spool/spamassassin" + rlFileBackup --missing-ok "/root/.spamassasin" + + TestDir=$(pwd) + CREATE_DB_USER_SQL="$TestDir/create_db_user.sql" + CREATE_TABLES_SQL="$TestDir/bayes_mysql.sql" + SPAMASSASSIN_CONFIG="$TestDir/local.cf" + DROP_TABLES_AND_DB_SQL="$TestDir/drop_tables_and_db.sql" + + + rlRun "tmp=\$(mktemp -d)" 0 "Create tmp directory" + rlRun "pushd $tmp" + rlRun "systemctl start mariadb" 0 "Running mariadb" + rlRun "systemctl enable mariadb" 0 "Enable mariadb service" + +mysql_secure_installation < sa-learn.log" + rlAssertGrep "Learned tokens" sa-learn.log + rlAssertNotGrep "bg: bayes: _put_tokens: SQL error: Column 'id' cannot be null" "sa-learn.log" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "mysql -u root -prootpassword < ${DROP_TABLES_AND_DB_SQL}" + rlRun "systemctl stop spamassassin" 0 "Stopping spamassassin" + rlRun "systemctl stop mariadb" 0 "Stopping mariadb" + rlRun "systemctl disable mariadb" 0 "Disable mariadb service" + rlFileRestore + rlRun "popd" + rlRun "rm -r $tmp" 0 "Remove tmp directory" + rlPhaseEnd +rlJournalEnd