mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-31 13:50:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			146 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| /*
 | |
| Copyright 2016 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 etcd
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"k8s.io/kubernetes/federation/apis/federation"
 | |
| 	"k8s.io/kubernetes/pkg/api"
 | |
| 	"k8s.io/kubernetes/pkg/fields"
 | |
| 	"k8s.io/kubernetes/pkg/labels"
 | |
| 	"k8s.io/kubernetes/pkg/registry/generic"
 | |
| 	"k8s.io/kubernetes/pkg/registry/registrytest"
 | |
| 	"k8s.io/kubernetes/pkg/runtime"
 | |
| 	etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing"
 | |
| )
 | |
| 
 | |
| func newStorage(t *testing.T) (*REST, *etcdtesting.EtcdTestServer) {
 | |
| 	storageConfig, server := registrytest.NewEtcdStorage(t, federation.GroupName)
 | |
| 	restOptions := generic.RESTOptions{
 | |
| 		StorageConfig:           storageConfig,
 | |
| 		Decorator:               generic.UndecoratedStorage,
 | |
| 		DeleteCollectionWorkers: 1,
 | |
| 		ResourcePrefix:          "clusters",
 | |
| 	}
 | |
| 	storage, _ := NewREST(restOptions)
 | |
| 	return storage, server
 | |
| }
 | |
| 
 | |
| func validNewCluster() *federation.Cluster {
 | |
| 	return &federation.Cluster{
 | |
| 		ObjectMeta: api.ObjectMeta{
 | |
| 			Name: "foo",
 | |
| 			Labels: map[string]string{
 | |
| 				"name": "foo",
 | |
| 			},
 | |
| 		},
 | |
| 		Spec: federation.ClusterSpec{
 | |
| 			ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{
 | |
| 				{
 | |
| 					ClientCIDR:    "0.0.0.0/0",
 | |
| 					ServerAddress: "localhost:8888",
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 		Status: federation.ClusterStatus{
 | |
| 			Conditions: []federation.ClusterCondition{
 | |
| 				{Type: federation.ClusterReady, Status: api.ConditionFalse},
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestCreate(t *testing.T) {
 | |
| 	storage, server := newStorage(t)
 | |
| 	defer server.Terminate(t)
 | |
| 	test := registrytest.New(t, storage.Store).ClusterScope()
 | |
| 	cluster := validNewCluster()
 | |
| 	cluster.ObjectMeta = api.ObjectMeta{GenerateName: "foo"}
 | |
| 	test.TestCreate(
 | |
| 		cluster,
 | |
| 		&federation.Cluster{
 | |
| 			ObjectMeta: api.ObjectMeta{Name: "-a123-a_"},
 | |
| 		},
 | |
| 	)
 | |
| }
 | |
| 
 | |
| func TestUpdate(t *testing.T) {
 | |
| 	storage, server := newStorage(t)
 | |
| 	defer server.Terminate(t)
 | |
| 	test := registrytest.New(t, storage.Store).ClusterScope()
 | |
| 	test.TestUpdate(
 | |
| 		// valid
 | |
| 		validNewCluster(),
 | |
| 		// updateFunc
 | |
| 		func(obj runtime.Object) runtime.Object {
 | |
| 			object := obj.(*federation.Cluster)
 | |
| 			object.Spec.SecretRef = &api.LocalObjectReference{
 | |
| 				Name: "bar",
 | |
| 			}
 | |
| 			return object
 | |
| 		},
 | |
| 	)
 | |
| }
 | |
| 
 | |
| func TestDelete(t *testing.T) {
 | |
| 	storage, server := newStorage(t)
 | |
| 	defer server.Terminate(t)
 | |
| 	test := registrytest.New(t, storage.Store).ClusterScope().ReturnDeletedObject()
 | |
| 	test.TestDelete(validNewCluster())
 | |
| }
 | |
| 
 | |
| func TestGet(t *testing.T) {
 | |
| 	storage, server := newStorage(t)
 | |
| 	defer server.Terminate(t)
 | |
| 	test := registrytest.New(t, storage.Store).ClusterScope()
 | |
| 	test.TestGet(validNewCluster())
 | |
| }
 | |
| 
 | |
| func TestList(t *testing.T) {
 | |
| 	storage, server := newStorage(t)
 | |
| 	defer server.Terminate(t)
 | |
| 	test := registrytest.New(t, storage.Store).ClusterScope()
 | |
| 	test.TestList(validNewCluster())
 | |
| }
 | |
| 
 | |
| func TestWatch(t *testing.T) {
 | |
| 	storage, server := newStorage(t)
 | |
| 	defer server.Terminate(t)
 | |
| 	test := registrytest.New(t, storage.Store).ClusterScope()
 | |
| 	test.TestWatch(
 | |
| 		validNewCluster(),
 | |
| 		// matching labels
 | |
| 		[]labels.Set{
 | |
| 			{"name": "foo"},
 | |
| 		},
 | |
| 		// not matching labels
 | |
| 		[]labels.Set{
 | |
| 			{"name": "bar"},
 | |
| 			{"foo": "bar"},
 | |
| 		},
 | |
| 		// matching fields
 | |
| 		[]fields.Set{
 | |
| 			{"metadata.name": "foo"},
 | |
| 		},
 | |
| 		// not matching fields
 | |
| 		[]fields.Set{
 | |
| 			{"metadata.name": "bar"},
 | |
| 		},
 | |
| 	)
 | |
| }
 |