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  }