Fix SSL related test failure by backporting Fedora commit <c33b1cf>.

As per analysis by mschorm on the upstream bugzilla:
<https://bugzilla.redhat.com/show_bug.cgi?id=2144488#c2>
the SSL tests were not really working properly.

Even though we had a misconfigured mariadb server for tests, it didn't
complain until now. It already had been fixed for Fedora via
c33b1cff59
the commit contents were adjusted for the RHEL environemnt and
mysql2 0.5.3 since the Fedora's commit is for mysql2 0.5.4.

Additionally, enhance the DB connection check via:
8b771a1ea9

Related: RHEL-36189
This commit is contained in:
Jarek Prokop 2024-03-08 12:55:11 +01:00 committed by Vít Ondruch
parent 7ffc09e3eb
commit 6eaa88e7c6
2 changed files with 74 additions and 8 deletions

View File

@ -0,0 +1,33 @@
From 15607011344b4f38306befeeebae2fa906dc4860 Mon Sep 17 00:00:00 2001
From: Jarek Prokop <jprokop@redhat.com>
Date: Fri, 8 Mar 2024 12:36:46 +0100
Subject: [PATCH] Backport "Use the SSL pem files in the Git repository." to
0.5.3.
Backport patch from Fedora
<https://src.fedoraproject.org/rpms/rubygem-mysql2/c/c33b1cff596b301b49c76f4307ab87390c681f30>
to resolve failing to start mariadb with SSL.
---
spec/mysql2/client_spec.rb | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/spec/mysql2/client_spec.rb b/spec/mysql2/client_spec.rb
index 5a3b8a2..f2f7bec 100644
--- a/spec/mysql2/client_spec.rb
+++ b/spec/mysql2/client_spec.rb
@@ -137,9 +137,9 @@ RSpec.describe Mysql2::Client do
ssl_client = nil
option_overrides = {
'host' => 'mysql2gem.example.com', # must match the certificates
- :sslkey => '/etc/mysql/client-key.pem',
- :sslcert => '/etc/mysql/client-cert.pem',
- :sslca => '/etc/mysql/ca-cert.pem',
+ :sslkey => 'spec/ssl/client-key.pem',
+ :sslcert => 'spec/ssl/client-cert.pem',
+ :sslca => 'spec/ssl/ca-cert.pem',
:sslcipher => 'DHE-RSA-AES256-SHA',
:sslverify => true,
}
--
2.43.0

View File

@ -6,7 +6,7 @@
Name: rubygem-%{gem_name}
Version: 0.5.3
Release: 1%{?dist}
Release: 2%{?dist}
Summary: A simple, fast Mysql library for Ruby, binding to libmysql
License: MIT
URL: https://github.com/brianmario/mysql2
@ -14,6 +14,9 @@ Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
# git clone --no-checkout https://github.com/brianmario/mysql2.git
# cd mysql2 && git archive -v -o mysql2-0.5.3-tests.txz 0.5.3 spec/
Source1: %{gem_name}-%{version}-tests.txz
# Use the SSL pem files in the upstream repositry for the SSL tests.
# https://github.com/brianmario/mysql2/pull/1293
Patch3: rubygem-mysql2-0.5.4-use-ssl-pem-files-in-repo.patch
# Required in lib/mysql2.rb
Requires: rubygem(bigdecimal)
@ -32,6 +35,8 @@ BuildRequires: rubygem(bigdecimal)
# Comment out to prevent a build error by conflicting requests.
# Nothing provides libruby.so.2.4()(64bit) needed by rubygem-eventmachine.
#BuildRequires: rubygem(eventmachine)
# Used in spec/ssl/gen_certs.sh
BuildRequires: %{_bindir}/openssl
%endif
%description
@ -52,6 +57,9 @@ Documentation for %{name}
%prep
%setup -q -n %{gem_name}-%{version} -b 1
pushd %{_builddir}/spec
%patch3 -p2
popd
%build
# Create the gem as gem install only works on a gem file
@ -81,6 +89,24 @@ pushd .%{gem_instdir}
ln -s %{_builddir}/spec spec
TOP_DIR=$(pwd)
# Regenerate the SSL certification files from the localhost, as we cannot set
# the host mysql2gem.example.com required for the SSL tests.
# https://github.com/brianmario/mysql2/pull/1296
sed -i '/host/ s/mysql2gem\.example\.com/localhost/' spec/mysql2/client_spec.rb
sed -i '/commonName_default/ s/mysql2gem\.example\.com/localhost/' spec/ssl/gen_certs.sh
pushd spec/ssl
bash gen_certs.sh
popd
# See https://github.com/brianmario/mysql2/blob/master/ci/ssl.sh
echo "
[mysqld]
ssl-ca=${TOP_DIR}/spec/ssl/ca-cert.pem
ssl-cert=${TOP_DIR}/spec/ssl/server-cert.pem
ssl-key=${TOP_DIR}/spec/ssl/server-key.pem
" > ~/.my.cnf
# Use testing port because the standard mysqld port 3306 is occupied.
# Assign a random port to consider a case of multi builds in parallel in a host.
# https://src.fedoraproject.org/rpms/rubygem-pg/pull-request/3
@ -104,15 +130,22 @@ mysql_install_db \
--port="${MYSQL_TEST_PORT}" \
--ssl &
conn_found=false
for i in $(seq 10); do
echo "Waiting for the DB server to accept connections... ${i}"
sleep 1
if grep -q 'ready for connections.' "${MYSQL_TEST_LOG}"; then
if grep -q 'ready for connections' "${MYSQL_TEST_LOG}"; then
conn_found=true
break
fi
echo "Waiting connections... ${i}"
done
if ! "${conn_found}"; then
echo "ERROR: Failed to connect the DB server."
cat "${MYSQL_TEST_LOG}"
exit 1
fi
# See https://github.com/brianmario/mysql2/blob/master/.travis_setup.sh
# See https://github.com/brianmario/mysql2/blob/master/ci/setup.sh
mysql -u root \
-e 'CREATE DATABASE /*M!50701 IF NOT EXISTS */ test' \
-S "${MYSQL_TEST_SOCKET}" \
@ -137,10 +170,6 @@ user:
socket: ${MYSQL_TEST_SOCKET}
EOF
# This test would require changes in host configuration.
sed -i '/^ it "should be able to connect via SSL options" do$/,/^ end$/ s/^/#/' \
spec/mysql2/client_spec.rb
# performance_schema.session_account_connect_attrs is unexpectedly empty.
# https://github.com/brianmario/mysql2/issues/965
sed -i '/^ it "should set default program_name in connect_attrs" do$/,/^ end$/ s/^/#/' \
@ -172,6 +201,10 @@ kill "$(cat "${MYSQL_TEST_PID_FILE}")"
%changelog
* Fri Mar 08 2024 Jarek Prokop <jprokop@redhat.com> - 0.5.3-2
- Fix SSL related test failure by backporting Fedora commit <c33b1cf>.
Related: RHEL-36189
* Fri May 29 2020 Jun Aruga <jaruga@redhat.com> - 0.5.3-1
- New upstream release 0.5.3 by merging Fedora master branch (commit: 674d475)
Resolves: rhbz#1817135