github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/tests/suites/upgrade_series/base.sh (about) 1 # Deploy the dummy-sink charm on an earlier base, then check that we can 2 # upgrade the base, and that the charm still behaves correctly. 3 run_upgrade_base_relation() { 4 local start_base end_base 5 start_base="ubuntu@20.04" 6 end_base="ubuntu@22.04" 7 8 # Setup 9 ensure "test-upgrade-machine-relation" "${TEST_DIR}/test-upgrade-machine-relation.log" 10 juju deploy ./testcharms/charms/dummy-sink --base $start_base 11 juju deploy ./testcharms/charms/dummy-source --base $end_base 12 juju relate dummy-sink dummy-source 13 juju config dummy-source token=Canonical 14 15 # Check pre-conditions 16 wait_for "Canonical" "$(workload_status 'dummy-sink' 0).message" 17 assert_machine_base 0 $start_base 18 19 # Upgrade the machine 20 juju upgrade-machine 0 prepare $end_base -y 21 reboot_machine 0 22 echo "Upgrading machine..." 23 echo "See ${TEST_DIR}/do-release-upgrade.log for progress." 24 juju ssh 0 'sudo do-release-upgrade -f DistUpgradeViewNonInteractive' &>"${TEST_DIR}/do-release-upgrade.log" || true 25 reboot_machine 0 26 juju upgrade-machine 0 complete 27 28 # Check post-conditions 29 wait_for "Canonical" "$(workload_status 'dummy-sink' 0).message" 30 assert_machine_base 0 $end_base 31 # Check post-series-upgrade hook has run 32 # juju show-status-log dummy-sink/0 | grep 'post-series-upgrade' 33 } 34 35 # Assert the given machine has the given series. 36 assert_machine_base() { 37 local machine expected_base actual_base 38 machine=$1 39 expected_base=$2 40 actual_base=$(juju status --format=json | jq -r ".machines[\"$machine\"] | (.base.name+\"@\"+.base.channel)") 41 42 if [[ $expected_base == "$actual_base" ]]; then 43 echo "Machine $machine has base $actual_base" 44 else 45 echo "Machine $machine has base $actual_base, expected $expected_base" 46 exit 1 47 fi 48 } 49 50 # Reboot the given machine and wait for it to restart. 51 reboot_machine() { 52 local machine 53 machine=$1 54 55 juju ssh "$machine" 'sudo shutdown -r now' || true 56 wait_for_machine_agent_status "$machine" "down" 57 wait_for_machine_agent_status "$machine" "started" 58 } 59 60 test_upgrade_series_relation() { 61 if [ -n "$(skip 'test_upgrade_series_relation')" ]; then 62 echo "==> SKIP: Asked to skip upgrade series relation tests" 63 return 64 fi 65 66 ( 67 set_verbosity 68 69 cd .. || exit 70 71 run "run_upgrade_base_relation" 72 ) 73 }