Skip to content

Commit 1025db6

Browse files
committed
Add unprivileged upgrade testing for Windows.
1 parent 3b0214f commit 1025db6

File tree

5 files changed

+29
-19
lines changed

5 files changed

+29
-19
lines changed

testing/integration/upgrade_fleet_test.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,12 @@ func testUpgradeFleetManagedElasticAgent(
222222
t.Skipf("Ending version %s is less than 8.13 and doesn't support --unprivileged", endParsedVersion.String())
223223
}
224224
if runtime.GOOS != define.Linux {
225-
t.Skip("Unprivileged mode is currently only supported on Linux")
225+
if startParsedVersion.Less(*upgradetest.Version_8_14_0) {
226+
t.Skipf("Starting version %s is less than 8.14 and doesn't support --unprivileged on Windows", startParsedVersion.String())
227+
}
228+
if endParsedVersion.Less(*upgradetest.Version_8_14_0) {
229+
t.Skipf("Ending version %s is less than 8.14 and doesn't support --unprivileged on Windows", endParsedVersion.String())
230+
}
226231
}
227232
}
228233

testing/integration/upgrade_standalone_same_commit_test.go

+7-8
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,14 @@ func TestStandaloneUpgradeSameCommit(t *testing.T) {
5252
t.Skipf("Minimum version for running this test is %q, current version: %q", *upgradetest.Version_8_13_0_SNAPSHOT, currentVersion)
5353
}
5454

55-
unprivilegedAvailable := true
56-
if runtime.GOOS != define.Linux {
57-
// only available on Linux at the moment
58-
unprivilegedAvailable = false
59-
}
55+
unprivilegedAvailable := false
6056
// This is probably redundant: see the skip statement above
61-
if unprivilegedAvailable && currentVersion.Less(*upgradetest.Version_8_13_0) {
62-
// only available if both versions are 8.13+
63-
unprivilegedAvailable = false
57+
if runtime.GOOS == define.Linux && !currentVersion.Less(*upgradetest.Version_8_13_0) {
58+
// only available if version is 8.13+ on Linux
59+
unprivilegedAvailable = true
60+
} else if !currentVersion.Less(*upgradetest.Version_8_14_0) {
61+
// 8.14+ its always available
62+
unprivilegedAvailable = true
6463
}
6564

6665
unPrivilegedString := "unprivileged"

testing/integration/upgrade_standalone_test.go

+7-8
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,13 @@ func TestStandaloneUpgrade(t *testing.T) {
3636
require.NoError(t, err)
3737

3838
for _, startVersion := range versionList {
39-
unprivilegedAvailable := true
40-
if runtime.GOOS != define.Linux {
41-
// only available on Linux at the moment
42-
unprivilegedAvailable = false
43-
}
44-
if unprivilegedAvailable && (startVersion.Less(*upgradetest.Version_8_13_0) || endVersion.Less(*upgradetest.Version_8_13_0)) {
45-
// only available if both versions are 8.13+
46-
unprivilegedAvailable = false
39+
unprivilegedAvailable := false
40+
if runtime.GOOS == define.Linux && !startVersion.Less(*upgradetest.Version_8_13_0) && !endVersion.Less(*upgradetest.Version_8_13_0) {
41+
// unprivileged available if both versions are 8.13+ on Linux
42+
unprivilegedAvailable = true
43+
} else if !startVersion.Less(*upgradetest.Version_8_14_0) && !endVersion.Less(*upgradetest.Version_8_14_0) {
44+
// always available if both versions are 8.14+
45+
unprivilegedAvailable = true
4746
}
4847
t.Run(fmt.Sprintf("Upgrade %s to %s (privileged)", startVersion, define.Version()), func(t *testing.T) {
4948
testStandaloneUpgrade(t, startVersion, define.Version(), false)

testing/upgradetest/upgrader.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,12 @@ func PerformUpgrade(
210210
// in the case that its explicitly set then we ensure the version supports it
211211
if upgradeOpts.unprivileged == nil {
212212
if !startVersion.Less(*Version_8_13_0) && !endVersion.Less(*Version_8_13_0) && runtime.GOOS == define.Linux {
213-
// both version support --unprivileged
213+
// both version support --unprivileged on Linux
214+
unprivileged := true
215+
upgradeOpts.unprivileged = &unprivileged
216+
logger.Logf("installation of Elastic Agent will use --unprivileged as both start and end version support --unprivileged mode on Linux")
217+
} else if !startVersion.Less(*Version_8_14_0) && !endVersion.Less(*Version_8_14_0) {
218+
// both version support --unprivileged on all platforms
214219
unprivileged := true
215220
upgradeOpts.unprivileged = &unprivileged
216221
logger.Logf("installation of Elastic Agent will use --unprivileged as both start and end version support --unprivileged mode")

testing/upgradetest/versions.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ var (
3535
Version_8_11_0_SNAPSHOT = version.NewParsedSemVer(8, 11, 0, "SNAPSHOT", "")
3636
// Version_8_13_0_SNAPSHOT is the minimum version for testing upgrading agent with the same hash
3737
Version_8_13_0_SNAPSHOT = version.NewParsedSemVer(8, 13, 0, "SNAPSHOT", "")
38-
// Version_8_13_0 is the minimum version for proper unprivileged execution
38+
// Version_8_13_0 is the minimum version for proper unprivileged execution on Linux
3939
Version_8_13_0 = version.NewParsedSemVer(8, 13, 0, "", "")
40+
// Version_8_14_0 is the minimum version for proper unprivileged execution on all platforms
41+
Version_8_14_0 = version.NewParsedSemVer(8, 14, 0, "", "")
4042

4143
// ErrNoSnapshot is returned when a requested snapshot is not on the version list.
4244
ErrNoSnapshot = errors.New("failed to find a snapshot on the version list")

0 commit comments

Comments
 (0)