From 7cbbfcc9efd19d6b50434062ac54b1fb87922f65 Mon Sep 17 00:00:00 2001 From: Bruno Medina Date: Mon, 4 Mar 2019 20:36:09 -0800 Subject: [PATCH] Creating NodePort test for Windows Co-authored-by: Muzz Imam --- test/e2e/windows/BUILD | 2 ++ test/e2e/windows/service.go | 65 +++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 test/e2e/windows/service.go diff --git a/test/e2e/windows/BUILD b/test/e2e/windows/BUILD index 7875e26457..cc2ea16a3b 100644 --- a/test/e2e/windows/BUILD +++ b/test/e2e/windows/BUILD @@ -10,6 +10,7 @@ go_library( "hybrid_network.go", "memory_limits.go", "networking.go", + "service.go", "volumes.go", ], importpath = "k8s.io/kubernetes/test/e2e/windows", @@ -24,6 +25,7 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//staging/src/k8s.io/kubelet/config/v1beta1:go_default_library", diff --git a/test/e2e/windows/service.go b/test/e2e/windows/service.go new file mode 100644 index 0000000000..ca865d1bb9 --- /dev/null +++ b/test/e2e/windows/service.go @@ -0,0 +1,65 @@ +/* +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 windows + +import ( + "fmt" + + v1 "k8s.io/api/core/v1" + clientset "k8s.io/client-go/kubernetes" + "k8s.io/kubernetes/test/e2e/framework" + + "github.com/onsi/ginkgo" +) + +var _ = SIGDescribe("Services", func() { + f := framework.NewDefaultFramework("services") + + var cs clientset.Interface + + ginkgo.BeforeEach(func() { + //Only for Windows containers + framework.SkipUnlessNodeOSDistroIs("windows") + cs = f.ClientSet + }) + ginkgo.It("should be able to create a functioning NodePort service for Windows", func() { + serviceName := "nodeport-test" + ns := f.Namespace.Name + + jig := framework.NewServiceTestJig(cs, serviceName) + nodeIP := framework.PickNodeIP(jig.Client) + + ginkgo.By("creating service " + serviceName + " with type=NodePort in namespace " + ns) + service := jig.CreateTCPServiceOrFail(ns, func(svc *v1.Service) { + svc.Spec.Type = v1.ServiceTypeNodePort + }) + jig.SanityCheckService(service, v1.ServiceTypeNodePort) + nodePort := int(service.Spec.Ports[0].NodePort) + + ginkgo.By("creating Pod to be part of service " + serviceName) + jig.RunOrFail(ns, nil) + + //using hybrid_network methods + ginkgo.By("creating Windows testing Pod") + windowsPod := createTestPod(f, windowsBusyBoximage, windowsOS) + + ginkgo.By(fmt.Sprintf("checking connectivity Pod to curl http://%s:%d", nodeIP, nodePort)) + assertConsistentConnectivity(f, windowsPod.ObjectMeta.Name, windowsOS, windowsCheck(fmt.Sprintf("http://%s:%d", nodeIP, nodePort))) + + }) + +})