Skip to content

Commit c851600

Browse files
authored
[Maintenance] Coordinator Health issue upgrade procedure Tests (#1854)
1 parent 8cd2ceb commit c851600

File tree

2 files changed

+124
-1
lines changed

2 files changed

+124
-1
lines changed

pkg/deployment/reconcile/plan_builder_rotate_upgrade_decision.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ type updateUpgradeDecisionMap map[updateUpgradeDecisionItem]updateUpgradeDecisio
4848

4949
func (u updateUpgradeDecisionMap) GetFromToVersion() (from driver.Version, to driver.Version) {
5050
for _, el := range u {
51-
if !el.upgradeDecision.UpgradeNeeded {
51+
if !el.upgrade || !el.upgradeDecision.UpgradeNeeded {
5252
continue
5353
}
5454

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
//
2+
// DISCLAIMER
3+
//
4+
// Copyright 2025 ArangoDB GmbH, Cologne, Germany
5+
//
6+
// Licensed under the Apache License, Version 2.0 (the "License");
7+
// you may not use this file except in compliance with the License.
8+
// You may obtain a copy of the License at
9+
//
10+
// http://www.apache.org/licenses/LICENSE-2.0
11+
//
12+
// Unless required by applicable law or agreed to in writing, software
13+
// distributed under the License is distributed on an "AS IS" BASIS,
14+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
// See the License for the specific language governing permissions and
16+
// limitations under the License.
17+
//
18+
// Copyright holder is ArangoDB GmbH, Cologne, Germany
19+
//
20+
21+
package reconcile
22+
23+
import (
24+
"fmt"
25+
"testing"
26+
27+
"github.com/stretchr/testify/require"
28+
29+
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
30+
)
31+
32+
func buildUpdateUpgradeDecisionMap(elems ...updateUpgradeDecision) updateUpgradeDecisionMap {
33+
m := updateUpgradeDecisionMap{}
34+
for id, e := range elems {
35+
m[updateUpgradeDecisionItem{
36+
ID: fmt.Sprintf("Server%05d", id),
37+
Group: api.ServerGroupDBServers,
38+
}] = e
39+
}
40+
41+
return m
42+
}
43+
44+
func Test_updateUpgradeDecisionMap_GetFromToVersion(t *testing.T) {
45+
t.Run("With Empty", func(t *testing.T) {
46+
from, to := buildUpdateUpgradeDecisionMap().GetFromToVersion()
47+
require.EqualValues(t, "", from)
48+
require.EqualValues(t, "", to)
49+
})
50+
51+
t.Run("With NonUpgrade", func(t *testing.T) {
52+
from, to := buildUpdateUpgradeDecisionMap(updateUpgradeDecision{
53+
upgrade: false,
54+
upgradeDecision: upgradeDecision{
55+
UpgradeNeeded: false,
56+
FromVersion: "3.12.3",
57+
ToVersion: "3.12.4",
58+
},
59+
}).GetFromToVersion()
60+
require.EqualValues(t, "", from)
61+
require.EqualValues(t, "", to)
62+
})
63+
64+
t.Run("With Upgrade", func(t *testing.T) {
65+
from, to := buildUpdateUpgradeDecisionMap(updateUpgradeDecision{
66+
upgrade: true,
67+
upgradeDecision: upgradeDecision{
68+
UpgradeNeeded: true,
69+
FromVersion: "3.12.3",
70+
ToVersion: "3.12.4",
71+
},
72+
}).GetFromToVersion()
73+
require.EqualValues(t, "3.12.3", from)
74+
require.EqualValues(t, "3.12.4", to)
75+
})
76+
77+
t.Run("With Upgrade of single member", func(t *testing.T) {
78+
from, to := buildUpdateUpgradeDecisionMap(updateUpgradeDecision{
79+
upgrade: true,
80+
upgradeDecision: upgradeDecision{
81+
UpgradeNeeded: true,
82+
FromVersion: "3.12.3",
83+
ToVersion: "3.12.4",
84+
},
85+
}, updateUpgradeDecision{
86+
upgrade: false,
87+
upgradeDecision: upgradeDecision{
88+
UpgradeNeeded: false,
89+
FromVersion: "3.12.5",
90+
ToVersion: "3.12.5",
91+
},
92+
}).GetFromToVersion()
93+
require.EqualValues(t, "3.12.3", from)
94+
require.EqualValues(t, "3.12.4", to)
95+
})
96+
97+
t.Run("With Upgrade of multi member", func(t *testing.T) {
98+
from, to := buildUpdateUpgradeDecisionMap(updateUpgradeDecision{
99+
upgrade: true,
100+
upgradeDecision: upgradeDecision{
101+
UpgradeNeeded: true,
102+
FromVersion: "3.12.3",
103+
ToVersion: "3.12.4",
104+
},
105+
}, updateUpgradeDecision{
106+
upgrade: true,
107+
upgradeDecision: upgradeDecision{
108+
UpgradeNeeded: true,
109+
FromVersion: "3.12.2",
110+
ToVersion: "3.12.3",
111+
},
112+
}, updateUpgradeDecision{
113+
upgrade: true,
114+
upgradeDecision: upgradeDecision{
115+
UpgradeNeeded: true,
116+
FromVersion: "3.12.2",
117+
ToVersion: "3.12.5",
118+
},
119+
}).GetFromToVersion()
120+
require.EqualValues(t, "3.12.2", from)
121+
require.EqualValues(t, "3.12.5", to)
122+
})
123+
}

0 commit comments

Comments
 (0)