diff --git a/test/e2e/framework/BUILD b/test/e2e/framework/BUILD index 9c7f7f33d0c..c6edcc89c2c 100644 --- a/test/e2e/framework/BUILD +++ b/test/e2e/framework/BUILD @@ -12,6 +12,7 @@ go_library( "framework.go", "get-kubemark-resource-usage.go", "google_compute.go", + "log.go", "log_size_monitoring.go", "networking_utils.go", "nodes_util.go", diff --git a/test/e2e/framework/log.go b/test/e2e/framework/log.go new file mode 100644 index 00000000000..2208a8f9b27 --- /dev/null +++ b/test/e2e/framework/log.go @@ -0,0 +1,41 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package framework + +import ( + "fmt" + + "k8s.io/kubernetes/test/e2e/framework/ginkgowrapper" +) + +// Logf logs the info. +func Logf(format string, args ...interface{}) { + log("INFO", format, args...) +} + +// Failf logs the fail info. +func Failf(format string, args ...interface{}) { + FailfWithOffset(1, format, args...) +} + +// FailfWithOffset calls "Fail" and logs the error at "offset" levels above its caller +// (for example, for call chain f -> g -> FailfWithOffset(1, ...) error would be logged for "f"). +func FailfWithOffset(offset int, format string, args ...interface{}) { + msg := fmt.Sprintf(format, args...) + log("INFO", msg) + ginkgowrapper.Fail(nowStamp()+": "+msg, 1+offset) +} diff --git a/test/e2e/framework/log/logger.go b/test/e2e/framework/log/logger.go index 906a568a09c..039119e7572 100644 --- a/test/e2e/framework/log/logger.go +++ b/test/e2e/framework/log/logger.go @@ -14,6 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// Package log should be removed after switching to use core framework log. package log import ( diff --git a/test/e2e/framework/volume/BUILD b/test/e2e/framework/volume/BUILD index 92768875380..171c9d61ed6 100644 --- a/test/e2e/framework/volume/BUILD +++ b/test/e2e/framework/volume/BUILD @@ -13,7 +13,6 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//test/e2e/framework:go_default_library", - "//test/e2e/framework/log:go_default_library", "//test/e2e/framework/pod:go_default_library", "//test/e2e/storage/utils:go_default_library", "//test/utils/image:go_default_library", diff --git a/test/e2e/framework/volume/fixtures.go b/test/e2e/framework/volume/fixtures.go index 5a94a3c54de..d86ea312da5 100644 --- a/test/e2e/framework/volume/fixtures.go +++ b/test/e2e/framework/volume/fixtures.go @@ -51,7 +51,6 @@ import ( "k8s.io/apimachinery/pkg/labels" clientset "k8s.io/client-go/kubernetes" "k8s.io/kubernetes/test/e2e/framework" - e2elog "k8s.io/kubernetes/test/e2e/framework/log" e2epod "k8s.io/kubernetes/test/e2e/framework/pod" "k8s.io/kubernetes/test/e2e/storage/utils" imageutils "k8s.io/kubernetes/test/utils/image" @@ -249,7 +248,7 @@ func NewRBDServer(cs clientset.Interface, namespace string) (config TestConfig, secret, err := cs.CoreV1().Secrets(config.Namespace).Create(secret) if err != nil { - e2elog.Failf("Failed to create secrets for Ceph RBD: %v", err) + framework.Failf("Failed to create secrets for Ceph RBD: %v", err) } return config, pod, secret, ip @@ -263,7 +262,7 @@ func CreateStorageServer(cs clientset.Interface, config TestConfig) (pod *v1.Pod gomega.Expect(pod).NotTo(gomega.BeNil(), "storage server pod should not be nil") ip = pod.Status.PodIP gomega.Expect(len(ip)).NotTo(gomega.BeZero(), fmt.Sprintf("pod %s's IP should not be empty", pod.Name)) - e2elog.Logf("%s server pod IP address: %s", config.Prefix, ip) + framework.Logf("%s server pod IP address: %s", config.Prefix, ip) return pod, ip } @@ -357,7 +356,7 @@ func StartVolumeServer(client clientset.Interface, config TestConfig) *v1.Pod { // ok if the server pod already exists. TODO: make this controllable by callers if err != nil { if apierrs.IsAlreadyExists(err) { - e2elog.Logf("Ignore \"already-exists\" error, re-get pod...") + framework.Logf("Ignore \"already-exists\" error, re-get pod...") ginkgo.By(fmt.Sprintf("re-getting the %q server pod", serverPodName)) serverPod, err = podClient.Get(serverPodName, metav1.GetOptions{}) framework.ExpectNoError(err, "Cannot re-get the server pod %q: %v", serverPodName, err) @@ -395,17 +394,17 @@ func CleanUpVolumeServerWithSecret(f *framework.Framework, serverPod *v1.Pod, se ns := f.Namespace if secret != nil { - e2elog.Logf("Deleting server secret %q...", secret.Name) + framework.Logf("Deleting server secret %q...", secret.Name) err := cs.CoreV1().Secrets(ns.Name).Delete(secret.Name, &metav1.DeleteOptions{}) if err != nil { - e2elog.Logf("Delete secret failed: %v", err) + framework.Logf("Delete secret failed: %v", err) } } - e2elog.Logf("Deleting server pod %q...", serverPod.Name) + framework.Logf("Deleting server pod %q...", serverPod.Name) err := framework.DeletePodWithWait(f, cs, serverPod) if err != nil { - e2elog.Logf("Server pod delete failed: %v", err) + framework.Logf("Server pod delete failed: %v", err) } } @@ -549,7 +548,7 @@ func testVolumeContent(client clientset.Interface, pod *v1.Pod, fsGroup *int64, func TestVolumeClient(client clientset.Interface, config TestConfig, fsGroup *int64, fsType string, tests []Test) { clientPod, err := runVolumeTesterPod(client, config, "client", fsGroup, tests) if err != nil { - e2elog.Failf("Failed to create client pod: %v", err) + framework.Failf("Failed to create client pod: %v", err) } framework.ExpectNoError(e2epod.WaitForPodRunningInNamespace(client, clientPod)) @@ -562,7 +561,7 @@ func TestVolumeClient(client clientset.Interface, config TestConfig, fsGroup *in func InjectContent(client clientset.Interface, config TestConfig, fsGroup *int64, fsType string, tests []Test) { injectorPod, err := runVolumeTesterPod(client, config, "injector", fsGroup, tests) if err != nil { - e2elog.Failf("Failed to create injector pod: %v", err) + framework.Failf("Failed to create injector pod: %v", err) return } defer func() { @@ -676,7 +675,7 @@ func GenerateWriteandExecuteScriptFileCmd(content, fileName, filePath string) [] fullPath := filepath.Join(filePath, scriptName) cmd := "echo \"" + content + "\" > " + fullPath + "; .\\" + fullPath - e2elog.Logf("generated pod command %s", cmd) + framework.Logf("generated pod command %s", cmd) return []string{"powershell", "/c", cmd} } scriptName := fmt.Sprintf("%s.sh", fileName)