...
1
16
17 package service
18
19 import (
20 "context"
21 "testing"
22
23 v1 "k8s.io/api/core/v1"
24 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25 "k8s.io/apimachinery/pkg/runtime"
26 "k8s.io/client-go/kubernetes"
27 kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
28 "k8s.io/kubernetes/pkg/api/legacyscheme"
29 "k8s.io/kubernetes/test/integration/framework"
30 )
31
32 func Test_UpgradeService(t *testing.T) {
33 etcdOptions := framework.SharedEtcd()
34 s := kubeapiservertesting.StartTestServerOrDie(t, nil, nil, etcdOptions)
35 defer s.TearDownFn()
36 serviceName := "test-old-service"
37 ns := "old-service-ns"
38
39 kubeclient, err := kubernetes.NewForConfig(s.ClientConfig)
40 if err != nil {
41 t.Fatalf("Unexpected error: %v", err)
42 }
43 if _, err := kubeclient.CoreV1().Namespaces().Create(context.TODO(), (&v1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: ns}}), metav1.CreateOptions{}); err != nil {
44 t.Fatal(err)
45 }
46
47
48 svc := &v1.Service{
49 ObjectMeta: metav1.ObjectMeta{
50 Name: serviceName,
51 Namespace: ns,
52 CreationTimestamp: metav1.Now(),
53 UID: "08675309-9376-9376-9376-086753099999",
54 },
55 Spec: v1.ServiceSpec{
56 ClusterIP: "10.0.0.1",
57 Ports: []v1.ServicePort{
58 {
59 Name: "test-port",
60 Port: 81,
61 },
62 },
63 },
64 }
65 svcJSON, err := runtime.Encode(legacyscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), svc)
66 if err != nil {
67 t.Fatalf("Failed creating service JSON: %v", err)
68 }
69 key := "/" + etcdOptions.Prefix + "/services/specs/" + ns + "/" + serviceName
70 if _, err := s.EtcdClient.Put(context.Background(), key, string(svcJSON)); err != nil {
71 t.Error(err)
72 }
73 t.Logf("Service stored in etcd %v", string(svcJSON))
74
75
76 _, err = kubeclient.CoreV1().Services(ns).Update(context.TODO(), svc, metav1.UpdateOptions{})
77 if err != nil {
78 t.Error(err)
79 }
80 }
81
View as plain text