rpm-ostree/tests/vmcheck/test-override-replace-2.sh
Jonathan Lebon 4c99cc765f Copy used command-line and set as transaction title
In the app, rebuild the exact command-line that the client used and pass
that to the daemon to be used as the transaction title. Especially in
transactions like `UpdateDeployment()`, we can avoid reverse-engineering
what the original command used was.

This will be used by the upcoming history feature to record the
command-line used in the journal.

Closes: #1824
Approved by: rfairley
2019-05-08 21:09:08 +00:00

125 lines
4.8 KiB
Bash
Executable File

#!/bin/bash
#
# Copyright (C) 2017 Red Hat, Inc.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
set -euo pipefail
. ${commondir}/libtest.sh
. ${commondir}/libvm.sh
set -x
# check that we error out right now if not providing an RPM
if vm_rpmostree override replace foo bar baz |& tee out.txt; then
assert_not_reached "Able to replace RPMs from repos?"
fi
assert_file_has_content out.txt "Non-local replacement overrides not implemented yet"
echo "ok error on non-local replacements"
YUMREPO=/var/tmp/vmcheck/yumrepo/packages/x86_64
vm_assert_status_jq \
'.deployments[0]["base-checksum"]|not' \
'.deployments[0]["pending-base-checksum"]|not' \
'.deployments[0]["base-local-replacements"]|length == 0' \
'.deployments[0]["requested-base-local-replacements"]|length == 0'
build_rpms() {
local ver=${1:-1}
foodir=/usr/lib/foo-base
br_foodir='%{buildroot}'${foodir}
vm_build_rpm foo-base \
version ${ver} \
files "%dir ${foodir}
${foodir}/foo-base-1.txt
${foodir}/foo-base-2.txt" \
install "mkdir -p ${br_foodir} && \
echo foo-1-${ver} > ${br_foodir}/foo-base-1.txt && \
echo foo-2-${ver} > ${br_foodir}/foo-base-2.txt"
bardir=${foodir}/bar
br_bardir='%{buildroot}'${bardir}
vm_build_rpm bar-base \
version ${ver} \
files "%dir ${bardir}
${bardir}/bar.txt" \
install "mkdir -p ${br_bardir} && echo bar-${ver} > ${br_bardir}/bar.txt"
for x in 1 2; do
vm_build_rpm foo-ext-${x} \
version ${ver} \
requires "foo-base >= ${ver}" \
files "${foodir}/foo-ext-${x}-1.txt
${foodir}/foo-ext-${x}-2.txt" \
install "mkdir -p ${br_foodir} && \
for y in 1 2; do echo foo-ext-${ver}-\${y} > ${br_foodir}/foo-ext-${x}-\${y}.txt; done"
vm_build_rpm bar-ext-${x} \
version ${ver} \
requires "bar-base >= ${ver}" \
files "${bardir}/bar-ext-${x}-1.txt
${bardir}/bar-ext-${x}-2.txt" \
install "mkdir -p ${br_bardir} && \
for y in 1 2; do echo bar-ext-${ver}-\${y} > ${br_bardir}/bar-ext-${x}-\${y}.txt; done"
done
}
build_rpms
vm_status_watch_start
vm_rpmostree install {foo,bar}-ext-{1,2}
vm_status_watch_check "Transaction: install foo-ext-1 foo-ext-2 bar-ext-1 bar-ext-2"
vm_cmd ostree refs $(vm_get_deployment_info 0 checksum) \
--create vmcheck_tmp/with_foo_and_bar
vm_rpmostree cleanup -p
# upgrade to new commit with foo in the base layer
vm_ostree_commit_layered_as_base vmcheck_tmp/with_foo_and_bar vmcheck
vm_rpmostree upgrade
vm_reboot
echo "ok setup"
# Replace *just* the base parts for
# https://github.com/projectatomic/rpm-ostree/issues/1340
ver=2
build_rpms ${ver}
prev_root=$(vm_get_deployment_root 0)
vm_cmd /bin/sh -c "cd ${prev_root} && find . -print" > prev-list.txt
vm_rpmostree override replace $YUMREPO/{foo,bar}-base-${ver}-1.x86_64.rpm
vm_assert_status_jq \
'.deployments[0]["base-local-replacements"]|length == 2' \
'.deployments[0]["requested-base-local-replacements"]|length == 2'
new_root=$(vm_get_deployment_root 0)
vm_cmd /bin/sh -c "cd ${new_root} && find . -print" > new-list.txt
diff -u {prev,new}-list.txt
rm -f *-list.txt
vm_rpmostree cleanup -p
echo "ok override replace base"
# Now replace both
ver=3
build_rpms ${ver}
prev_root=$(vm_get_deployment_root 0)
vm_cmd /bin/sh -c "cd ${prev_root} && find . -print" > prev-list.txt
vm_rpmostree override replace $YUMREPO/{foo,bar}-base-${ver}-1.x86_64.rpm $YUMREPO/{foo,bar}-ext-{1,2}-${ver}-1.x86_64.rpm
vm_assert_status_jq \
'.deployments[0]["base-local-replacements"]|length == 6' \
'.deployments[0]["requested-base-local-replacements"]|length == 6'
new_root=$(vm_get_deployment_root 0)
vm_cmd /bin/sh -c "cd ${new_root} && find . -print" > new-list.txt
diff -u {prev,new}-list.txt
rm -f *-list.txt
echo "ok override replace both"