@@ -42,10 +42,11 @@ var _ = Describe("Elemental Feature tests", func() {
4242 })
4343
4444 Context ("After install" , func () {
45- It ("downgrades to an older image including upgrade and reset hooks" , func () {
45+ It ("downgrades to an older image to then upgrade again to current including upgrade and reset hooks" , func () {
4646 By ("setting /oem/chroot_hooks.yaml" )
47- err := s .SendFile ("../assets/chroot_hooks.yaml" , "/oem/chroot_hooks.yaml" , "0770" )
48- Expect (err ).ToNot (HaveOccurred ())
47+ Expect (s .SendFile ("../assets/chroot_hooks.yaml" , "/oem/chroot_hooks.yaml" , "0770" )).To (Succeed ())
48+ Expect (s .SendFile ("../assets/hacks_for_tests.yaml" , "/oem/hacks_for_tests.yaml" , "0770" )).To (Succeed ())
49+
4950 originalVersion := s .GetOSRelease ("TIMESTAMP" )
5051
5152 By (fmt .Sprintf ("upgrading to %s" , comm .DefaultUpgradeImage ))
@@ -56,8 +57,8 @@ var _ = Describe("Elemental Feature tests", func() {
5657
5758 s .Reboot ()
5859 s .EventuallyBootedFrom (sut .Active )
59- currentVersion := s .GetOSRelease ("TIMESTAMP" )
60- Expect (currentVersion ).NotTo (Equal (originalVersion ))
60+ downgradedVersion := s .GetOSRelease ("TIMESTAMP" )
61+ Expect (downgradedVersion ).NotTo (Equal (originalVersion ))
6162
6263 _ , err = s .Command ("cat /after-upgrade-chroot" )
6364 Expect (err ).ToNot (HaveOccurred ())
@@ -70,8 +71,10 @@ var _ = Describe("Elemental Feature tests", func() {
7071 s .Reboot ()
7172 s .EventuallyBootedFrom (sut .Passive )
7273 passiveVersion := s .GetOSRelease ("TIMESTAMP" )
73- Expect (currentVersion ).NotTo (Equal (passiveVersion ))
74+ Expect (downgradedVersion ).NotTo (Equal (passiveVersion ))
75+ Expect (originalVersion ).To (Equal (passiveVersion ))
7476
77+ // Tests we can upgrade active from passive
7578 By (fmt .Sprintf ("Upgrading again from passive to %s" , comm .UpgradeImage ()))
7679 out , err = s .Command (s .ElementalCmd ("upgrade" , "--system" , comm .UpgradeImage ()))
7780 Expect (err ).ToNot (HaveOccurred ())
@@ -80,6 +83,34 @@ var _ = Describe("Elemental Feature tests", func() {
8083 By ("Rebooting to active" )
8184 s .Reboot ()
8285 s .EventuallyBootedFrom (sut .Active )
86+ activeVersion := s .GetOSRelease ("TIMESTAMP" )
87+ Expect (downgradedVersion ).NotTo (Equal (activeVersion ))
88+ Expect (originalVersion ).To (Equal (activeVersion ))
89+
90+ By ("Rebooting to passive" )
91+ s .ChangeBootOnce (sut .Passive )
92+ s .Reboot ()
93+ s .EventuallyBootedFrom (sut .Passive )
94+ passiveVersion = s .GetOSRelease ("TIMESTAMP" )
95+ Expect (downgradedVersion ).To (Equal (passiveVersion ))
96+ Expect (originalVersion ).NotTo (Equal (passiveVersion ))
97+
98+ // Test we can upgrade from the downgraded version back to original
99+ By (fmt .Sprintf ("Upgrading again from passive to %s" , comm .UpgradeImage ()))
100+ upgradeCmd := s .ElementalCmd ("upgrade" , "--tls-verify=false" , "--bootloader" , "--system" , comm .UpgradeImage ())
101+ out , err = s .NewPodmanRunCommand (comm .ToolkitImage (), fmt .Sprintf ("-c \" mount --rbind /host/run /run && %s\" " , upgradeCmd )).
102+ Privileged ().
103+ NoTLSVerify ().
104+ WithMount ("/" , "/host" ).
105+ Run ()
106+ Expect (err ).ToNot (HaveOccurred ())
107+ Expect (out ).Should (ContainSubstring ("Upgrade completed" ))
108+ By ("Rebooting to active" )
109+ s .Reboot ()
110+ s .EventuallyBootedFrom (sut .Active )
111+ activeVersion = s .GetOSRelease ("TIMESTAMP" )
112+ Expect (downgradedVersion ).NotTo (Equal (activeVersion ))
113+ Expect (originalVersion ).To (Equal (activeVersion ))
83114 })
84115 })
85116})
0 commit comments