Skip to content

Commit 8941441

Browse files
authored
Merge pull request #903 from andyzhangx/fix-hpc-test-failure
test: fix windows hpc test failure
2 parents 0737748 + 6252340 commit 8941441

File tree

2 files changed

+50
-6
lines changed

2 files changed

+50
-6
lines changed

test/e2e/suite_test.go

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

1919
import (
20+
"encoding/base64"
2021
"flag"
2122
"fmt"
2223
"log"
@@ -52,11 +53,12 @@ const (
5253
)
5354

5455
var (
55-
smbDriver *smb.Driver
56-
isWindowsCluster = os.Getenv(testWindowsEnvVar) != ""
57-
winServerVer = os.Getenv(testWinServerVerEnvVar)
58-
preInstallDriver = os.Getenv(preInstallDriverEnvVar) == "true"
59-
defaultStorageClassParameters = map[string]string{
56+
smbDriver *smb.Driver
57+
isWindowsCluster = os.Getenv(testWindowsEnvVar) != ""
58+
isWindowsHostProcessDeployment = os.Getenv("WINDOWS_USE_HOST_PROCESS_CONTAINERS") != ""
59+
winServerVer = os.Getenv(testWinServerVerEnvVar)
60+
preInstallDriver = os.Getenv(preInstallDriverEnvVar) == "true"
61+
defaultStorageClassParameters = map[string]string{
6062
"source": getSmbTestEnvVarValue(testSmbSourceEnvVar, defaultSmbSource),
6163
"csi.storage.k8s.io/provisioner-secret-name": getSmbTestEnvVarValue(testSmbSecretNameEnvVar, defaultSmbSecretName),
6264
"csi.storage.k8s.io/provisioner-secret-namespace": getSmbTestEnvVarValue(testSmbSecretNamespaceEnvVar, defaultSmbSecretNamespace),
@@ -160,14 +162,32 @@ var _ = ginkgo.BeforeSuite(func() {
160162
smbDriver.Run(fmt.Sprintf("unix:///tmp/csi-%s.sock", uuid.NewUUID().String()), kubeconfig, false)
161163
}()
162164

165+
var source string
163166
if isWindowsCluster {
164167
err := os.Chdir("../..")
165168
gomega.Expect(err).NotTo(gomega.HaveOccurred())
166169
defer func() {
167170
err := os.Chdir("test/e2e")
168171
gomega.Expect(err).NotTo(gomega.HaveOccurred())
169172
}()
173+
}
174+
175+
if isWindowsHostProcessDeployment {
176+
decodedBytes, err := base64.StdEncoding.DecodeString("YW5keXNzZGZpbGUK")
177+
if err != nil {
178+
log.Printf("Error decoding base64 string: %v\n", err)
179+
return
180+
}
181+
source = fmt.Sprintf("//%s.file.core.windows.net/test", strings.TrimRight(string(decodedBytes), "\n"))
170182

183+
createSMBCredsScript := "test/utils/create_smbcreds_windows.sh"
184+
log.Printf("run script: %s\n", createSMBCredsScript)
185+
186+
cmd := exec.Command("bash", createSMBCredsScript)
187+
output, err := cmd.CombinedOutput()
188+
log.Printf("got output: %v, error: %v\n", string(output), err)
189+
gomega.Expect(err).NotTo(gomega.HaveOccurred())
190+
} else if isWindowsCluster {
171191
getSMBPublicIPScript := "test/utils/get_smb_svc_public_ip.sh"
172192
log.Printf("run script: %s\n", getSMBPublicIPScript)
173193

@@ -177,8 +197,10 @@ var _ = ginkgo.BeforeSuite(func() {
177197
gomega.Expect(err).NotTo(gomega.HaveOccurred())
178198

179199
smbPublicIP := strings.TrimSuffix(string(output), "\n")
180-
source := fmt.Sprintf("//%s/share", smbPublicIP)
200+
source = fmt.Sprintf("//%s/share", smbPublicIP)
201+
}
181202

203+
if isWindowsCluster {
182204
log.Printf("use source on Windows: %v\n", source)
183205
defaultStorageClassParameters["source"] = source
184206
retainStorageClassParameters["source"] = source

test/utils/create_smbcreds_windows.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
3+
# Copyright 2025 The Kubernetes Authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
set -e
18+
username=`echo YW5keXNzZGZpbGUK | base64 -d`
19+
pwd=`echo RDVyY1pFMkZ1UlRZVktmaTd4SlZCb1VwdUhLZkRpQUhxZmZzaEVEMXlrQXNPMktaKzZvS25nemF5alZpL1hhSU5zaWVtUGlHSUp5ZkhGcTZUSm5rOUE9PQo= | base64 -d`
20+
kubectl delete secret smbcreds --ignore-not-found -n default
21+
kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$pwd --from-literal mountOptions="dir_mode=0777,file_mode=0777,uid=0,gid=0,mfsymlinks" -n default
22+

0 commit comments

Comments
 (0)