Skip to content

Commit 071f77e

Browse files
Merge pull request #2176 from atiratree/bump-1.31.5
OCPBUGS-48552: Update to Kubernetes 1.31.5
2 parents 5f71ced + d2d1c41 commit 071f77e

File tree

29 files changed

+602
-277
lines changed

29 files changed

+602
-277
lines changed

.go-version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.22.9
1+
1.22.10

CHANGELOG/CHANGELOG-1.31.md

+168-64
Large diffs are not rendered by default.

build/build-image/cross/VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v1.31.0-go1.22.9-bullseye.0
1+
v1.31.0-go1.22.10-bullseye.0

build/common.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ readonly KUBE_RSYNC_PORT="${KUBE_RSYNC_PORT:-}"
9797
readonly KUBE_CONTAINER_RSYNC_PORT=8730
9898

9999
# These are the default versions (image tags) for their respective base images.
100-
readonly __default_distroless_iptables_version=v0.5.10
101-
readonly __default_go_runner_version=v2.4.0-go1.22.9-bookworm.0
100+
readonly __default_distroless_iptables_version=v0.5.11
101+
readonly __default_go_runner_version=v2.4.0-go1.22.10-bookworm.0
102102
readonly __default_setcap_version=bookworm-v1.0.3
103103

104104
# These are the base images for the Docker-wrapped binaries.

build/dependencies.yaml

+4-4
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ dependencies:
116116

117117
# Golang
118118
- name: "golang: upstream version"
119-
version: 1.22.9
119+
version: 1.22.10
120120
refPaths:
121121
- path: .go-version
122122
- path: build/build-image/cross/VERSION
@@ -138,7 +138,7 @@ dependencies:
138138
match: minimum_go_version=go([0-9]+\.[0-9]+)
139139

140140
- name: "registry.k8s.io/kube-cross: dependents"
141-
version: v1.31.0-go1.22.9-bullseye.0
141+
version: v1.31.0-go1.22.10-bullseye.0
142142
refPaths:
143143
- path: build/build-image/cross/VERSION
144144

@@ -176,15 +176,15 @@ dependencies:
176176
match: registry\.k8s\.io\/build-image\/debian-base:[a-zA-Z]+\-v((([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)
177177

178178
- name: "registry.k8s.io/distroless-iptables: dependents"
179-
version: v0.5.10
179+
version: v0.5.11
180180
refPaths:
181181
- path: build/common.sh
182182
match: __default_distroless_iptables_version=
183183
- path: test/utils/image/manifest.go
184184
match: configs\[DistrolessIptables\] = Config{list\.BuildImageRegistry, "distroless-iptables", "v([0-9]+)\.([0-9]+)\.([0-9]+)"}
185185

186186
- name: "registry.k8s.io/go-runner: dependents"
187-
version: v2.4.0-go1.22.9-bookworm.0
187+
version: v2.4.0-go1.22.10-bookworm.0
188188
refPaths:
189189
- path: build/common.sh
190190
match: __default_go_runner_version=

cmd/kubeadm/app/cmd/upgrade/node.go

+17-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package upgrade
1818

1919
import (
20+
"fmt"
2021
"io"
2122
"os"
2223

@@ -83,7 +84,22 @@ func newCmdNode(out io.Writer) *cobra.Command {
8384
return err
8485
}
8586

86-
return nodeRunner.Run(args)
87+
data, err := nodeRunner.InitData(args)
88+
if err != nil {
89+
return err
90+
}
91+
if _, ok := data.(*nodeData); !ok {
92+
return errors.New("invalid data struct")
93+
}
94+
if err := nodeRunner.Run(args); err != nil {
95+
return err
96+
}
97+
if nodeOptions.dryRun {
98+
fmt.Println("[upgrade/successful] Finished dryrunning successfully!")
99+
return nil
100+
}
101+
102+
return nil
87103
},
88104
Args: cobra.NoArgs,
89105
}

go.work.sum

+6
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@ github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAu
375375
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
376376
github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=
377377
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
378+
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM=
378379
github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg=
379380
github.com/apache/arrow/go/v14 v14.0.2 h1:N8OkaJEOfI3mEZt07BIkvo4sC6XDbL+48MBPWO5IONw=
380381
github.com/apache/arrow/go/v14 v14.0.2/go.mod h1:u3fgh3EdgN/YQ8cVQRguVW3R+seMybFg8QBQ5LU+eBY=
@@ -383,6 +384,7 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IU
383384
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I=
384385
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to=
385386
github.com/aws/aws-sdk-go v1.35.24 h1:U3GNTg8+7xSM6OAJ8zksiSM4bRqxBWmVwwehvOSNG3A=
387+
github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k=
386388
github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
387389
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc=
388390
github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g=
@@ -445,6 +447,7 @@ github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MG
445447
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
446448
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
447449
github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
450+
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
448451
github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68=
449452
github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4=
450453
github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
@@ -513,6 +516,7 @@ github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47
513516
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI=
514517
github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465 h1:KwWnWVWCNtNq/ewIX7HIKnELmEx2nDP42yskD/pi7QE=
515518
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
519+
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
516520
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
517521
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc=
518522
github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=
@@ -537,6 +541,7 @@ github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzR
537541
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
538542
github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI=
539543
github.com/matttproud/golang_protobuf_extensions v1.0.2 h1:hAHbPm5IJGijwng3PWk09JkG9WeqChjprR5s9bBZ+OM=
544+
github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
540545
github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA=
541546
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=
542547
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
@@ -547,6 +552,7 @@ github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc=
547552
github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY=
548553
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
549554
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
555+
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
550556
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
551557
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
552558
github.com/openshift/build-machinery-go v0.0.0-20240613134303-8359781da660 h1:F0zE2bmdVvaEd18VXuGYQdJJ1FYJu4MIDW9PYZWc9No=

openshift-hack/images/hyperkube/Dockerfile.rhel

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ COPY --from=builder /tmp/build/* /usr/bin/
1414
LABEL io.k8s.display-name="OpenShift Kubernetes Server Commands" \
1515
io.k8s.description="OpenShift is a platform for developing, building, and deploying containerized applications." \
1616
io.openshift.tags="openshift,hyperkube" \
17-
io.openshift.build.versions="kubernetes=1.31.4"
17+
io.openshift.build.versions="kubernetes=1.31.5"

pkg/controller/statefulset/stateful_set_control.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ func (ssc *defaultStatefulSetControl) truncateHistory(
194194
}
195195
historyLen := len(history)
196196
historyLimit := int(*set.Spec.RevisionHistoryLimit)
197-
if historyLen <= historyLimit {
197+
if historyLimit < 0 || historyLen <= historyLimit {
198198
return nil
199199
}
200200
// delete any non-live history to maintain the revision limit.

pkg/controller/statefulset/stateful_set_control_test.go

+35
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import (
5252
"k8s.io/kubernetes/pkg/controller"
5353
"k8s.io/kubernetes/pkg/controller/history"
5454
"k8s.io/kubernetes/pkg/features"
55+
"k8s.io/utils/ptr"
5556
)
5657

5758
type invariantFunc func(set *apps.StatefulSet, om *fakeObjectManager) error
@@ -2009,6 +2010,13 @@ func TestStatefulSetControlLimitsHistory(t *testing.T) {
20092010
if err != nil {
20102011
t.Fatalf("%s: %s", test.name, err)
20112012
}
2013+
2014+
if *set.Spec.RevisionHistoryLimit < 0 {
2015+
// If the revisionHistoryLimit is negative value, we don't truncate
2016+
// the revision history and it is incremental.
2017+
continue
2018+
}
2019+
20122020
if len(revisions) > int(*set.Spec.RevisionHistoryLimit)+2 {
20132021
t.Fatalf("%s: %d greater than limit %d", test.name, len(revisions), *set.Spec.RevisionHistoryLimit)
20142022
}
@@ -2030,6 +2038,33 @@ func TestStatefulSetControlLimitsHistory(t *testing.T) {
20302038
return burst(newStatefulSet(3))
20312039
},
20322040
},
2041+
{
2042+
name: "zero revisionHistoryLimit",
2043+
invariants: assertMonotonicInvariants,
2044+
initial: func() *apps.StatefulSet {
2045+
sts := newStatefulSet(3)
2046+
sts.Spec.RevisionHistoryLimit = ptr.To(int32(0))
2047+
return sts
2048+
},
2049+
},
2050+
{
2051+
name: "negative revisionHistoryLimit",
2052+
invariants: assertMonotonicInvariants,
2053+
initial: func() *apps.StatefulSet {
2054+
sts := newStatefulSet(3)
2055+
sts.Spec.RevisionHistoryLimit = ptr.To(int32(-2))
2056+
return sts
2057+
},
2058+
},
2059+
{
2060+
name: "positive revisionHistoryLimit",
2061+
invariants: assertMonotonicInvariants,
2062+
initial: func() *apps.StatefulSet {
2063+
sts := newStatefulSet(3)
2064+
sts.Spec.RevisionHistoryLimit = ptr.To(int32(5))
2065+
return sts
2066+
},
2067+
},
20332068
}
20342069
for i := range tests {
20352070
testFn(t, &tests[i])

pkg/features/kube_features.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,8 @@ const (
524524
// alpha: v1.27
525525
// beta: v1.30
526526
//
527-
// Enables querying logs of node services using the /logs endpoint
527+
// Enables querying logs of node services using the /logs endpoint. Enabling this feature has security implications.
528+
// The recommendation is to enable it on a need basis for debugging purposes and disabling otherwise.
528529
NodeLogQuery featuregate.Feature = "NodeLogQuery"
529530

530531
// owner: @xing-yang @sonasingh46

pkg/generated/openapi/zz_generated.openapi.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/kubelet/apis/config/types.go

+2
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,8 @@ type KubeletConfiguration struct {
408408
EnableSystemLogHandler bool
409409
// EnableSystemLogQuery enables the node log query feature on the /logs endpoint.
410410
// EnableSystemLogHandler has to be enabled in addition for this feature to work.
411+
// Enabling this feature has security implications. The recommendation is to enable it on a need basis for debugging
412+
// purposes and disabling otherwise.
411413
// +featureGate=NodeLogQuery
412414
// +optional
413415
EnableSystemLogQuery bool

pkg/kubelet/kubelet_server_journal.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -384,14 +384,15 @@ func (n *nodeLogQuery) splitNativeVsFileLoggers(ctx context.Context) ([]string,
384384
// copyServiceLogs invokes journalctl or Get-WinEvent with the provided args. Note that
385385
// services are explicitly passed here to account for the heuristics.
386386
func (n *nodeLogQuery) copyServiceLogs(ctx context.Context, w io.Writer, services []string, previousBoot int) {
387-
cmdStr, args, err := getLoggingCmd(n, services)
387+
cmdStr, args, cmdEnv, err := getLoggingCmd(n, services)
388388
if err != nil {
389389
fmt.Fprintf(w, "\nfailed to get logging cmd: %v\n", err)
390390
return
391391
}
392392
cmd := exec.CommandContext(ctx, cmdStr, args...)
393393
cmd.Stdout = w
394394
cmd.Stderr = w
395+
cmd.Env = append(os.Environ(), cmdEnv...)
395396

396397
if err := cmd.Run(); err != nil {
397398
if _, ok := err.(*exec.ExitError); ok {

pkg/kubelet/kubelet_server_journal_linux.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,13 @@ import (
2626
)
2727

2828
// getLoggingCmd returns the journalctl cmd and arguments for the given nodeLogQuery and boot. Note that
29-
// services are explicitly passed here to account for the heuristics
30-
func getLoggingCmd(n *nodeLogQuery, services []string) (string, []string, error) {
31-
args := []string{
29+
// services are explicitly passed here to account for the heuristics.
30+
// The return values are:
31+
// - cmd: the command to be executed
32+
// - args: arguments to the command
33+
// - cmdEnv: environment variables when the command will be executed
34+
func getLoggingCmd(n *nodeLogQuery, services []string) (cmd string, args []string, cmdEnv []string, err error) {
35+
args = []string{
3236
"--utc",
3337
"--no-pager",
3438
}
@@ -70,7 +74,7 @@ func getLoggingCmd(n *nodeLogQuery, services []string) (string, []string, error)
7074
}
7175
args = append(args, fmt.Sprintf("--output=%s", output))
7276

73-
return "journalctl", args, nil
77+
return "journalctl", args, nil, nil
7478
}
7579

7680
// checkForNativeLogger checks journalctl output for a service

pkg/kubelet/kubelet_server_journal_others.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ import (
2424
)
2525

2626
// getLoggingCmd on unsupported operating systems returns the echo command and a warning message (as strings)
27-
func getLoggingCmd(n *nodeLogQuery, services []string) (string, []string, error) {
28-
return "", []string{}, errors.New("Operating System Not Supported")
27+
func getLoggingCmd(n *nodeLogQuery, services []string) (cmd string, args []string, cmdEnv []string, err error) {
28+
return "", args, cmdEnv, errors.New("Operating System Not Supported")
2929
}
3030

3131
// checkForNativeLogger on unsupported operating systems returns false

pkg/kubelet/kubelet_server_journal_test.go

+43-9
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"net/url"
2121
"reflect"
2222
"runtime"
23+
"sort"
2324
"strings"
2425
"testing"
2526
"time"
@@ -30,31 +31,64 @@ import (
3031
)
3132

3233
func Test_getLoggingCmd(t *testing.T) {
34+
var emptyCmdEnv []string
3335
tests := []struct {
34-
name string
35-
args nodeLogQuery
36-
wantLinux []string
37-
wantWindows []string
38-
wantOtherOS []string
36+
name string
37+
args nodeLogQuery
38+
services []string
39+
wantLinux []string
40+
wantWindows []string
41+
wantLinuxCmdEnv []string
42+
wantWindowsCmdEnv []string
3943
}{
4044
{
41-
args: nodeLogQuery{},
42-
wantLinux: []string{"--utc", "--no-pager", "--output=short-precise"},
43-
wantWindows: []string{"-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command", "Get-WinEvent -FilterHashtable @{LogName='Application'} | Sort-Object TimeCreated | Format-Table -AutoSize -Wrap"},
45+
name: "basic",
46+
args: nodeLogQuery{},
47+
services: []string{},
48+
wantLinux: []string{"--utc", "--no-pager", "--output=short-precise"},
49+
wantLinuxCmdEnv: emptyCmdEnv,
50+
wantWindows: []string{"-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command", "Get-WinEvent -FilterHashtable @{LogName='Application'} | Sort-Object TimeCreated | Format-Table -AutoSize -Wrap"},
51+
wantWindowsCmdEnv: emptyCmdEnv,
52+
},
53+
{
54+
name: "two providers",
55+
args: nodeLogQuery{},
56+
services: []string{"p1", "p2"},
57+
wantLinux: []string{"--utc", "--no-pager", "--output=short-precise", "--unit=p1", "--unit=p2"},
58+
wantLinuxCmdEnv: emptyCmdEnv,
59+
wantWindows: []string{"-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command", "Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName=$Env:kubelet_provider0,$Env:kubelet_provider1} | Sort-Object TimeCreated | Format-Table -AutoSize -Wrap"},
60+
wantWindowsCmdEnv: []string{"kubelet_provider0=p1", "kubelet_provider1=p2"},
61+
},
62+
{
63+
name: "empty provider",
64+
args: nodeLogQuery{},
65+
services: []string{"p1", "", "p2"},
66+
wantLinux: []string{"--utc", "--no-pager", "--output=short-precise", "--unit=p1", "--unit=p2"},
67+
wantLinuxCmdEnv: emptyCmdEnv,
68+
wantWindows: []string{"-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command", "Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName=$Env:kubelet_provider0,$Env:kubelet_provider2} | Sort-Object TimeCreated | Format-Table -AutoSize -Wrap"},
69+
wantWindowsCmdEnv: []string{"kubelet_provider0=p1", "kubelet_provider2=p2"},
4470
},
4571
}
4672
for _, tt := range tests {
4773
t.Run(tt.name, func(t *testing.T) {
48-
_, got, err := getLoggingCmd(&tt.args, []string{})
74+
_, got, gotCmdEnv, err := getLoggingCmd(&tt.args, tt.services)
75+
sort.Strings(got)
76+
sort.Strings(tt.wantLinux)
4977
switch os := runtime.GOOS; os {
5078
case "linux":
5179
if !reflect.DeepEqual(got, tt.wantLinux) {
5280
t.Errorf("getLoggingCmd() = %v, want %v", got, tt.wantLinux)
5381
}
82+
if !reflect.DeepEqual(gotCmdEnv, tt.wantLinuxCmdEnv) {
83+
t.Errorf("gotCmdEnv %v, wantLinuxCmdEnv %v", gotCmdEnv, tt.wantLinuxCmdEnv)
84+
}
5485
case "windows":
5586
if !reflect.DeepEqual(got, tt.wantWindows) {
5687
t.Errorf("getLoggingCmd() = %v, want %v", got, tt.wantWindows)
5788
}
89+
if !reflect.DeepEqual(gotCmdEnv, tt.wantWindowsCmdEnv) {
90+
t.Errorf("gotCmdEnv %v, wantWindowsCmdEnv %v", gotCmdEnv, tt.wantWindowsCmdEnv)
91+
}
5892
default:
5993
if err == nil {
6094
t.Errorf("getLoggingCmd() = %v, want err", got)

0 commit comments

Comments
 (0)