Skip to content

Commit 5a98873

Browse files
committed
refactor: replace sort.Slice with slices.SortFunc
This commit replaces all the instances of sort.Slice with slices.SortFunc. The godocs for sort.Slice recommends using slices.SortFunc, as it is faster and more efficient.
1 parent 66d3377 commit 5a98873

File tree

28 files changed

+262
-131
lines changed

28 files changed

+262
-131
lines changed

api/bootstrap/kubeadm/v1beta2/conversion.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ limitations under the License.
1717
package v1beta2
1818

1919
import (
20-
"sort"
20+
"slices"
2121
)
2222

2323
func (*KubeadmConfig) Hub() {}
@@ -38,11 +38,17 @@ func ConvertToArgs(in map[string]string) []Arg {
3838
for k, v := range in {
3939
args = append(args, Arg{Name: k, Value: v})
4040
}
41-
sort.Slice(args, func(i, j int) bool {
42-
if args[i].Name == args[j].Name {
43-
return args[i].Value < args[j].Value
41+
slices.SortFunc(args, func(i, j Arg) int {
42+
if i.Name == j.Name {
43+
if i.Value < j.Value {
44+
return 1
45+
}
46+
return -1
4447
}
45-
return args[i].Name < args[j].Name
48+
if i.Name < j.Name {
49+
return 1
50+
}
51+
return -1
4652
})
4753
return args
4854
}

cmd/clusterctl/client/cluster/installer.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package cluster
1919
import (
2020
"context"
2121
"fmt"
22-
"sort"
22+
"slices"
2323
"strings"
2424
"time"
2525

@@ -90,8 +90,11 @@ func (i *providerInstaller) Add(components repository.Components) {
9090
i.installQueue = append(i.installQueue, components)
9191

9292
// Ensure Providers are installed in the following order: Core, Bootstrap, ControlPlane, Infrastructure.
93-
sort.Slice(i.installQueue, func(a, b int) bool {
94-
return i.installQueue[a].Type().Order() < i.installQueue[b].Type().Order()
93+
slices.SortFunc(i.installQueue, func(a, b repository.Components) int {
94+
if a.Type().Order() < b.Type().Order() {
95+
return -1
96+
}
97+
return 1
9598
})
9699
}
97100

cmd/clusterctl/client/cluster/objectgraph_test.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package cluster
1919
import (
2020
"context"
2121
"fmt"
22-
"sort"
22+
"slices"
2323
"testing"
2424

2525
. "github.com/onsi/gomega"
@@ -2574,8 +2574,11 @@ func Test_objectGraph_setClusterTenants(t *testing.T) {
25742574
gb.setTenants()
25752575

25762576
gotClusters := gb.getClusters()
2577-
sort.Slice(gotClusters, func(i, j int) bool {
2578-
return gotClusters[i].identity.UID < gotClusters[j].identity.UID
2577+
slices.SortFunc(gotClusters, func(i, j *node) int {
2578+
if i.identity.UID < j.identity.UID {
2579+
return -1
2580+
}
2581+
return 1
25792582
})
25802583

25812584
g.Expect(gotClusters).To(HaveLen(len(tt.wantClusters)))
@@ -2673,8 +2676,11 @@ func Test_objectGraph_setCRSTenants(t *testing.T) {
26732676
gb.setTenants()
26742677

26752678
gotCRSs := gb.getCRSs()
2676-
sort.Slice(gotCRSs, func(i, j int) bool {
2677-
return gotCRSs[i].identity.UID < gotCRSs[j].identity.UID
2679+
slices.SortFunc(gotCRSs, func(i, j *node) int {
2680+
if i.identity.UID < j.identity.UID {
2681+
return -1
2682+
}
2683+
return 1
26782684
})
26792685

26802686
g.Expect(gotCRSs).To(HaveLen(len(tt.wantCRSs)))
@@ -2738,8 +2744,11 @@ func Test_objectGraph_setGlobalIdentityTenants(t *testing.T) {
27382744
gotIdentity = append(gotIdentity, n)
27392745
}
27402746
}
2741-
sort.Slice(gotIdentity, func(i, j int) bool {
2742-
return gotIdentity[i].identity.UID < gotIdentity[j].identity.UID
2747+
slices.SortFunc(gotIdentity, func(i, j *node) int {
2748+
if i.identity.UID < j.identity.UID {
2749+
return -1
2750+
}
2751+
return 1
27432752
})
27442753
g.Expect(gotIdentity).To(HaveLen(len(tt.wantIdentity)))
27452754

cmd/clusterctl/client/cluster/upgrader.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ package cluster
1818

1919
import (
2020
"context"
21-
"sort"
21+
"slices"
2222
"strings"
2323
"time"
2424

@@ -398,8 +398,11 @@ func (u *providerUpgrader) doUpgrade(ctx context.Context, upgradePlan *UpgradePl
398398

399399
// Ensure Providers are updated in the following order: Core, Bootstrap, ControlPlane, Infrastructure.
400400
providers := upgradePlan.Providers
401-
sort.Slice(providers, func(a, b int) bool {
402-
return providers[a].GetProviderType().Order() < providers[b].GetProviderType().Order()
401+
slices.SortFunc(providers, func(a, b UpgradeItem) int {
402+
if a.GetProviderType().Order() < b.GetProviderType().Order() {
403+
return -1
404+
}
405+
return 1
403406
})
404407

405408
if opts.EnableCRDStorageVersionMigration {

cmd/clusterctl/client/cluster/upgrader_info.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package cluster
1919
import (
2020
"context"
2121
"fmt"
22-
"sort"
22+
"slices"
2323

2424
"github.com/pkg/errors"
2525
"k8s.io/apimachinery/pkg/util/sets"
@@ -124,14 +124,19 @@ func (u *providerUpgrader) getUpgradeInfo(ctx context.Context, provider clusterc
124124

125125
func newUpgradeInfo(metadata *clusterctlv1.Metadata, currentVersion *version.Version, nextVersions []version.Version) *upgradeInfo {
126126
// Sorts release series; this ensures also an implicit ordering of contract versions.
127-
sort.Slice(metadata.ReleaseSeries, func(i, j int) bool {
128-
return metadata.ReleaseSeries[i].Major < metadata.ReleaseSeries[j].Major ||
129-
(metadata.ReleaseSeries[i].Major == metadata.ReleaseSeries[j].Major && metadata.ReleaseSeries[i].Minor < metadata.ReleaseSeries[j].Minor)
127+
slices.SortFunc(metadata.ReleaseSeries, func(i, j clusterctlv1.ReleaseSeries) int {
128+
if i.Major < j.Major || (i.Major == j.Major && i.Minor < j.Minor) {
129+
return -1
130+
}
131+
return 1
130132
})
131133

132134
// Sorts nextVersions.
133-
sort.Slice(nextVersions, func(i, j int) bool {
134-
return nextVersions[i].LessThan(&nextVersions[j])
135+
slices.SortFunc(nextVersions, func(i, j version.Version) int {
136+
if i.LessThan(&j) {
137+
return -1
138+
}
139+
return 1
135140
})
136141

137142
// Gets the current contract for the provider

cmd/clusterctl/client/config/providers_client.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package config
1919
import (
2020
"net/url"
2121
"os"
22-
"sort"
22+
"slices"
2323
"strings"
2424

2525
"github.com/drone/envsubst/v2"
@@ -504,8 +504,11 @@ func (p *providersClient) List() ([]Provider, error) {
504504
}
505505

506506
// ensure provider configurations are consistently sorted
507-
sort.Slice(providers, func(i, j int) bool {
508-
return providers[i].Less(providers[j])
507+
slices.SortFunc(providers, func(i, j Provider) int {
508+
if i.Less(j) {
509+
return -1
510+
}
511+
return 1
509512
})
510513

511514
return providers, nil

cmd/clusterctl/client/config/providers_client_test.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ package config
1818

1919
import (
2020
"fmt"
21-
"sort"
21+
"slices"
2222
"testing"
2323

2424
. "github.com/onsi/gomega"
@@ -36,14 +36,20 @@ func Test_providers_List(t *testing.T) {
3636
}
3737

3838
defaults := p.defaults()
39-
sort.Slice(defaults, func(i, j int) bool {
40-
return defaults[i].Less(defaults[j])
39+
slices.SortFunc(defaults, func(i, j Provider) int {
40+
if i.Less(j) {
41+
return -1
42+
}
43+
return 1
4144
})
4245

4346
defaultsAndZZZ := append(defaults, NewProvider("zzz", "https://zzz/infrastructure-components.yaml", "InfrastructureProvider"))
4447
// AddonProviders are at the end of the list so we want to make sure this InfrastructureProvider is before the AddonProviders.
45-
sort.Slice(defaultsAndZZZ, func(i, j int) bool {
46-
return defaultsAndZZZ[i].Less(defaultsAndZZZ[j])
48+
slices.SortFunc(defaultsAndZZZ, func(i, j Provider) int {
49+
if i.Less(j) {
50+
return -1
51+
}
52+
return 1
4753
})
4854

4955
defaultsWithOverride := append([]Provider{}, defaults...)

cmd/clusterctl/client/tree/tree.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package tree
1818

1919
import (
2020
"fmt"
21+
"slices"
2122
"sort"
2223
"strconv"
2324
"strings"
@@ -149,8 +150,11 @@ func (od ObjectTree) Add(parent, obj client.Object, opts ...AddObjectOption) (ad
149150

150151
// The loop below will process the next node and decide if it belongs in a group. Since objects in the same group
151152
// must have the same Kind, we sort by Kind so objects of the same Kind will be together in the list.
152-
sort.Slice(siblings, func(i, j int) bool {
153-
return siblings[i].GetObjectKind().GroupVersionKind().Kind < siblings[j].GetObjectKind().GroupVersionKind().Kind
153+
slices.SortFunc(siblings, func(i, j client.Object) int {
154+
if i.GetObjectKind().GroupVersionKind().Kind < j.GetObjectKind().GroupVersionKind().Kind {
155+
return -1
156+
}
157+
return 1
154158
})
155159

156160
for i := range siblings {

cmd/clusterctl/client/tree/util.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ package tree
1818

1919
import (
2020
"fmt"
21-
"sort"
21+
"slices"
2222

2323
corev1 "k8s.io/api/core/v1"
2424
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -116,8 +116,11 @@ func GetOtherV1Beta1Conditions(obj client.Object) []*clusterv1.Condition {
116116
conditions = append(conditions, &c)
117117
}
118118
}
119-
sort.Slice(conditions, func(i, j int) bool {
120-
return conditions[i].Type < conditions[j].Type
119+
slices.SortFunc(conditions, func(i, j *clusterv1.Condition) int {
120+
if i.Type < j.Type {
121+
return -1
122+
}
123+
return 1
121124
})
122125
return conditions
123126
}

cmd/clusterctl/client/upgrade_test.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ package client
1818

1919
import (
2020
"context"
21-
"sort"
21+
"slices"
2222
"testing"
2323

2424
"github.com/google/go-cmp/cmp"
@@ -288,11 +288,17 @@ func Test_clusterctlClient_ApplyUpgrade(t *testing.T) {
288288

289289
g.Expect(c.List(ctx, gotProviders)).To(Succeed())
290290

291-
sort.Slice(gotProviders.Items, func(i, j int) bool {
292-
return gotProviders.Items[i].Name < gotProviders.Items[j].Name
291+
slices.SortFunc(gotProviders.Items, func(i, j clusterctlv1.Provider) int {
292+
if i.Name < j.Name {
293+
return -1
294+
}
295+
return 1
293296
})
294-
sort.Slice(tt.wantProviders.Items, func(i, j int) bool {
295-
return tt.wantProviders.Items[i].Name < tt.wantProviders.Items[j].Name
297+
slices.SortFunc(tt.wantProviders.Items, func(i, j clusterctlv1.Provider) int {
298+
if i.Name < j.Name {
299+
return -1
300+
}
301+
return 1
296302
})
297303
for i := range gotProviders.Items {
298304
tt.wantProviders.Items[i].ResourceVersion = gotProviders.Items[i].ResourceVersion

0 commit comments

Comments
 (0)