Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
dcc302ab
Commit
dcc302ab
authored
Aug 18, 2015
by
Wojciech Tyczynski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactoring of list etcd tests.
parent
b5a4a548
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
330 additions
and
1174 deletions
+330
-1174
resttest.go
pkg/api/rest/resttest/resttest.go
+143
-0
etcd_test.go
pkg/registry/controller/etcd/etcd_test.go
+16
-96
etcd_test.go
pkg/registry/endpoint/etcd/etcd_test.go
+12
-104
etcd_test.go
pkg/registry/horizontalpodautoscaler/etcd/etcd_test.go
+12
-64
etcd_test.go
pkg/registry/minion/etcd/etcd_test.go
+15
-78
etcd_test.go
pkg/registry/namespace/etcd/etcd_test.go
+16
-140
etcd_test.go
pkg/registry/persistentvolume/etcd/etcd_test.go
+12
-96
etcd_test.go
pkg/registry/persistentvolumeclaim/etcd/etcd_test.go
+13
-97
etcd_test.go
pkg/registry/pod/etcd/etcd_test.go
+17
-271
etcd.go
pkg/registry/registrytest/etcd.go
+56
-0
etcd_test.go
pkg/registry/resourcequota/etcd/etcd_test.go
+17
-227
fake_etcd_client.go
pkg/tools/fake_etcd_client.go
+1
-1
No files found.
pkg/api/rest/resttest/resttest.go
View file @
dcc302ab
...
@@ -17,6 +17,8 @@ limitations under the License.
...
@@ -17,6 +17,8 @@ limitations under the License.
package
resttest
package
resttest
import
(
import
(
"fmt"
"reflect"
"strings"
"strings"
"testing"
"testing"
...
@@ -24,6 +26,9 @@ import (
...
@@ -24,6 +26,9 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/rest"
"k8s.io/kubernetes/pkg/api/rest"
"k8s.io/kubernetes/pkg/conversion"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/tools"
"k8s.io/kubernetes/pkg/tools"
"k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/pkg/util"
...
@@ -91,6 +96,9 @@ func copyOrDie(obj runtime.Object) runtime.Object {
...
@@ -91,6 +96,9 @@ func copyOrDie(obj runtime.Object) runtime.Object {
return
out
return
out
}
}
type
AssignFunc
func
(
objs
[]
runtime
.
Object
)
[]
runtime
.
Object
type
SetRVFunc
func
(
resourceVersion
uint64
)
// Test creating an object.
// Test creating an object.
func
(
t
*
Tester
)
TestCreate
(
valid
runtime
.
Object
,
invalid
...
runtime
.
Object
)
{
func
(
t
*
Tester
)
TestCreate
(
valid
runtime
.
Object
,
invalid
...
runtime
.
Object
)
{
t
.
testCreateHasMetadata
(
copyOrDie
(
valid
))
t
.
testCreateHasMetadata
(
copyOrDie
(
valid
))
...
@@ -113,6 +121,7 @@ func (t *Tester) TestUpdate(valid runtime.Object, existing, older runtime.Object
...
@@ -113,6 +121,7 @@ func (t *Tester) TestUpdate(valid runtime.Object, existing, older runtime.Object
}
}
// Test deleting an object.
// Test deleting an object.
// TODO(wojtek-t): Change it to use AssignFunc instead.
func
(
t
*
Tester
)
TestDelete
(
createFn
func
()
runtime
.
Object
,
wasGracefulFn
func
()
bool
,
invalid
...
runtime
.
Object
)
{
func
(
t
*
Tester
)
TestDelete
(
createFn
func
()
runtime
.
Object
,
wasGracefulFn
func
()
bool
,
invalid
...
runtime
.
Object
)
{
t
.
testDeleteNonExist
(
createFn
)
t
.
testDeleteNonExist
(
createFn
)
t
.
testDeleteNoGraceful
(
createFn
,
wasGracefulFn
)
t
.
testDeleteNoGraceful
(
createFn
,
wasGracefulFn
)
...
@@ -122,6 +131,7 @@ func (t *Tester) TestDelete(createFn func() runtime.Object, wasGracefulFn func()
...
@@ -122,6 +131,7 @@ func (t *Tester) TestDelete(createFn func() runtime.Object, wasGracefulFn func()
}
}
// Test graceful deletion.
// Test graceful deletion.
// TODO(wojtek-t): Change it to use AssignFunc instead.
func
(
t
*
Tester
)
TestDeleteGraceful
(
createFn
func
()
runtime
.
Object
,
expectedGrace
int64
,
wasGracefulFn
func
()
bool
)
{
func
(
t
*
Tester
)
TestDeleteGraceful
(
createFn
func
()
runtime
.
Object
,
expectedGrace
int64
,
wasGracefulFn
func
()
bool
)
{
t
.
testDeleteGracefulHasDefault
(
createFn
(),
expectedGrace
,
wasGracefulFn
)
t
.
testDeleteGracefulHasDefault
(
createFn
(),
expectedGrace
,
wasGracefulFn
)
t
.
testDeleteGracefulUsesZeroOnNil
(
createFn
(),
0
)
t
.
testDeleteGracefulUsesZeroOnNil
(
createFn
(),
0
)
...
@@ -137,6 +147,14 @@ func (t *Tester) TestGet(obj runtime.Object) {
...
@@ -137,6 +147,14 @@ func (t *Tester) TestGet(obj runtime.Object) {
}
}
}
}
// Test listing object.
func
(
t
*
Tester
)
TestList
(
obj
runtime
.
Object
,
assignFn
AssignFunc
,
setRVFn
SetRVFunc
)
{
t
.
testListError
()
t
.
testListFound
(
obj
,
assignFn
)
t
.
testListNotFound
(
assignFn
,
setRVFn
)
t
.
testListMatchLabels
(
obj
,
assignFn
)
}
// =============================================================================
// =============================================================================
// Creation tests.
// Creation tests.
...
@@ -478,3 +496,128 @@ func (t *Tester) testGetNotFound(obj runtime.Object) {
...
@@ -478,3 +496,128 @@ func (t *Tester) testGetNotFound(obj runtime.Object) {
t
.
Errorf
(
"unexpected error returned: %#v"
,
err
)
t
.
Errorf
(
"unexpected error returned: %#v"
,
err
)
}
}
}
}
// =============================================================================
// List tests.
func
listToItems
(
listObj
runtime
.
Object
)
([]
runtime
.
Object
,
error
)
{
v
,
err
:=
conversion
.
EnforcePtr
(
listObj
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"unexpected error: %v"
,
err
)
}
items
:=
v
.
FieldByName
(
"Items"
)
if
!
items
.
IsValid
()
{
return
nil
,
fmt
.
Errorf
(
"unexpected Items field in %v"
,
listObj
)
}
if
items
.
Type
()
.
Kind
()
!=
reflect
.
Slice
{
return
nil
,
fmt
.
Errorf
(
"unexpected Items field type: %v"
,
items
.
Type
()
.
Kind
())
}
result
:=
make
([]
runtime
.
Object
,
items
.
Len
())
for
i
:=
0
;
i
<
items
.
Len
();
i
++
{
result
[
i
]
=
items
.
Index
(
i
)
.
Addr
()
.
Interface
()
.
(
runtime
.
Object
)
}
return
result
,
nil
}
func
(
t
*
Tester
)
testListError
()
{
ctx
:=
t
.
TestContext
()
storageError
:=
fmt
.
Errorf
(
"test error"
)
t
.
withStorageError
(
storageError
,
func
()
{
_
,
err
:=
t
.
storage
.
(
rest
.
Lister
)
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
storageError
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
})
}
func
(
t
*
Tester
)
testListFound
(
obj
runtime
.
Object
,
assignFn
AssignFunc
)
{
ctx
:=
t
.
TestContext
()
foo1
:=
copyOrDie
(
obj
)
foo1Meta
:=
t
.
getObjectMetaOrFail
(
foo1
)
foo1Meta
.
Name
=
"foo1"
foo1Meta
.
Namespace
=
api
.
NamespaceValue
(
ctx
)
foo2
:=
copyOrDie
(
obj
)
foo2Meta
:=
t
.
getObjectMetaOrFail
(
foo2
)
foo2Meta
.
Name
=
"foo2"
foo2Meta
.
Namespace
=
api
.
NamespaceValue
(
ctx
)
existing
:=
assignFn
([]
runtime
.
Object
{
foo1
,
foo2
})
listObj
,
err
:=
t
.
storage
.
(
rest
.
Lister
)
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
items
,
err
:=
listToItems
(
listObj
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
if
len
(
items
)
!=
len
(
existing
)
{
t
.
Errorf
(
"unexpected number of items: %v"
,
len
(
items
))
}
if
!
api
.
Semantic
.
DeepEqual
(
existing
,
items
)
{
t
.
Errorf
(
"expected: %#v, got: %#v"
,
existing
,
items
)
}
}
func
(
t
*
Tester
)
testListMatchLabels
(
obj
runtime
.
Object
,
assignFn
AssignFunc
)
{
ctx
:=
t
.
TestContext
()
testLabels
:=
map
[
string
]
string
{
"key"
:
"value"
}
foo1
:=
copyOrDie
(
obj
)
foo1Meta
:=
t
.
getObjectMetaOrFail
(
foo1
)
foo1Meta
.
Name
=
"foo1"
foo1Meta
.
Namespace
=
api
.
NamespaceValue
(
ctx
)
foo2
:=
copyOrDie
(
obj
)
foo2Meta
:=
t
.
getObjectMetaOrFail
(
foo2
)
foo2Meta
.
Name
=
"foo2"
foo2Meta
.
Namespace
=
api
.
NamespaceValue
(
ctx
)
foo2Meta
.
Labels
=
testLabels
existing
:=
assignFn
([]
runtime
.
Object
{
foo1
,
foo2
})
filtered
:=
[]
runtime
.
Object
{
existing
[
1
]}
selector
:=
labels
.
SelectorFromSet
(
labels
.
Set
(
testLabels
))
listObj
,
err
:=
t
.
storage
.
(
rest
.
Lister
)
.
List
(
ctx
,
selector
,
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
items
,
err
:=
listToItems
(
listObj
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
if
len
(
items
)
!=
len
(
filtered
)
{
t
.
Errorf
(
"unexpected number of items: %v"
,
len
(
items
))
}
if
!
api
.
Semantic
.
DeepEqual
(
filtered
,
items
)
{
t
.
Errorf
(
"expected: %#v, got: %#v"
,
filtered
,
items
)
}
}
func
(
t
*
Tester
)
testListNotFound
(
assignFn
AssignFunc
,
setRVFn
SetRVFunc
)
{
ctx
:=
t
.
TestContext
()
setRVFn
(
uint64
(
123
))
_
=
assignFn
([]
runtime
.
Object
{})
listObj
,
err
:=
t
.
storage
.
(
rest
.
Lister
)
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
items
,
err
:=
listToItems
(
listObj
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
if
len
(
items
)
!=
0
{
t
.
Errorf
(
"unexpected items: %v"
,
items
)
}
meta
,
err
:=
api
.
ListMetaFor
(
listObj
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
if
meta
.
ResourceVersion
!=
"123"
{
t
.
Errorf
(
"unexpected resource version: %d"
,
meta
.
ResourceVersion
)
}
}
pkg/registry/controller/etcd/etcd_test.go
View file @
dcc302ab
...
@@ -30,6 +30,7 @@ import (
...
@@ -30,6 +30,7 @@ import (
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/labels"
etcdgeneric
"k8s.io/kubernetes/pkg/registry/generic/etcd"
etcdgeneric
"k8s.io/kubernetes/pkg/registry/generic/etcd"
"k8s.io/kubernetes/pkg/registry/registrytest"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/storage"
"k8s.io/kubernetes/pkg/storage"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
...
@@ -101,12 +102,6 @@ func makeControllerKey(ctx api.Context, id string) (string, error) {
...
@@ -101,12 +102,6 @@ func makeControllerKey(ctx api.Context, id string) (string, error) {
return
etcdgeneric
.
NamespaceKeyFunc
(
ctx
,
controllerPrefix
,
id
)
return
etcdgeneric
.
NamespaceKeyFunc
(
ctx
,
controllerPrefix
,
id
)
}
}
// makeControllerListKey constructs etcd paths to the root of the resource,
// not a specific controller resource
func
makeControllerListKey
(
ctx
api
.
Context
)
string
{
return
etcdgeneric
.
NamespaceKeyRootFunc
(
ctx
,
controllerPrefix
)
}
func
TestEtcdCreateController
(
t
*
testing
.
T
)
{
func
TestEtcdCreateController
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
ctx
:=
api
.
NewDefaultContext
()
storage
,
fakeClient
:=
newStorage
(
t
)
storage
,
fakeClient
:=
newStorage
(
t
)
...
@@ -319,6 +314,21 @@ func TestEtcdGetController(t *testing.T) {
...
@@ -319,6 +314,21 @@ func TestEtcdGetController(t *testing.T) {
test
.
TestGet
(
&
copy
)
test
.
TestGet
(
&
copy
)
}
}
func
TestEtcdListControllers
(
t
*
testing
.
T
)
{
storage
,
fakeClient
:=
newStorage
(
t
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
key
:=
etcdtest
.
AddPrefix
(
storage
.
KeyRootFunc
(
test
.
TestContext
()))
copy
:=
validController
test
.
TestList
(
&
copy
,
func
(
objects
[]
runtime
.
Object
)
[]
runtime
.
Object
{
return
registrytest
.
SetObjectsForKey
(
fakeClient
,
key
,
objects
)
},
func
(
resourceVersion
uint64
)
{
registrytest
.
SetResourceVersion
(
fakeClient
,
resourceVersion
)
})
}
func
TestEtcdUpdateController
(
t
*
testing
.
T
)
{
func
TestEtcdUpdateController
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
ctx
:=
api
.
NewDefaultContext
()
storage
,
fakeClient
:=
newStorage
(
t
)
storage
,
fakeClient
:=
newStorage
(
t
)
...
@@ -368,96 +378,6 @@ func TestEtcdDeleteController(t *testing.T) {
...
@@ -368,96 +378,6 @@ func TestEtcdDeleteController(t *testing.T) {
}
}
}
}
func
TestEtcdListControllers
(
t
*
testing
.
T
)
{
storage
,
fakeClient
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
makeControllerListKey
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
controller
:=
validController
controller
.
Name
=
"bar"
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
validController
),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
controller
),
},
},
},
},
E
:
nil
,
}
objList
,
err
:=
storage
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
controllers
,
_
:=
objList
.
(
*
api
.
ReplicationControllerList
)
if
len
(
controllers
.
Items
)
!=
2
||
controllers
.
Items
[
0
]
.
Name
!=
validController
.
Name
||
controllers
.
Items
[
1
]
.
Name
!=
controller
.
Name
{
t
.
Errorf
(
"Unexpected controller list: %#v"
,
controllers
)
}
}
func
TestEtcdListControllersNotFound
(
t
*
testing
.
T
)
{
storage
,
fakeClient
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
makeControllerListKey
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{},
E
:
tools
.
EtcdErrorNotFound
,
}
objList
,
err
:=
storage
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
controllers
,
_
:=
objList
.
(
*
api
.
ReplicationControllerList
)
if
len
(
controllers
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected controller list: %#v"
,
controllers
)
}
}
func
TestEtcdListControllersLabelsMatch
(
t
*
testing
.
T
)
{
storage
,
fakeClient
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
makeControllerListKey
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
controller
:=
validController
controller
.
Labels
=
map
[
string
]
string
{
"k"
:
"v"
}
controller
.
Name
=
"bar"
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
validController
),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
controller
),
},
},
},
},
E
:
nil
,
}
testLabels
:=
labels
.
SelectorFromSet
(
labels
.
Set
(
controller
.
Labels
))
objList
,
err
:=
storage
.
List
(
ctx
,
testLabels
,
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
controllers
,
_
:=
objList
.
(
*
api
.
ReplicationControllerList
)
if
len
(
controllers
.
Items
)
!=
1
||
controllers
.
Items
[
0
]
.
Name
!=
controller
.
Name
||
!
testLabels
.
Matches
(
labels
.
Set
(
controllers
.
Items
[
0
]
.
Labels
))
{
t
.
Errorf
(
"Unexpected controller list: %#v for query with labels %#v"
,
controllers
,
testLabels
)
}
}
func
TestEtcdWatchController
(
t
*
testing
.
T
)
{
func
TestEtcdWatchController
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
ctx
:=
api
.
NewDefaultContext
()
storage
,
fakeClient
:=
newStorage
(
t
)
storage
,
fakeClient
:=
newStorage
(
t
)
...
...
pkg/registry/endpoint/etcd/etcd_test.go
View file @
dcc302ab
...
@@ -22,8 +22,7 @@ import (
...
@@ -22,8 +22,7 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/latest"
"k8s.io/kubernetes/pkg/api/latest"
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/registry/registrytest"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/storage"
"k8s.io/kubernetes/pkg/storage"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
...
@@ -113,46 +112,6 @@ func TestDelete(t *testing.T) {
...
@@ -113,46 +112,6 @@ func TestDelete(t *testing.T) {
test
.
TestDelete
(
createFn
,
gracefulSetFn
)
test
.
TestDelete
(
createFn
,
gracefulSetFn
)
}
}
func
TestEtcdListEndpoints
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
storage
,
fakeClient
:=
newStorage
(
t
)
key
:=
storage
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Endpoints
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Subsets
:
[]
api
.
EndpointSubset
{{
Addresses
:
[]
api
.
EndpointAddress
{{
IP
:
"127.0.0.1"
}},
Ports
:
[]
api
.
EndpointPort
{{
Port
:
8345
,
Protocol
:
"TCP"
}},
}},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Endpoints
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
}),
},
},
},
},
E
:
nil
,
}
endpointsObj
,
err
:=
storage
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
endpoints
:=
endpointsObj
.
(
*
api
.
EndpointsList
)
if
len
(
endpoints
.
Items
)
!=
2
||
endpoints
.
Items
[
0
]
.
Name
!=
"foo"
||
endpoints
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected endpoints list: %#v"
,
endpoints
)
}
}
func
TestEtcdGetEndpoints
(
t
*
testing
.
T
)
{
func
TestEtcdGetEndpoints
(
t
*
testing
.
T
)
{
storage
,
fakeClient
:=
newStorage
(
t
)
storage
,
fakeClient
:=
newStorage
(
t
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
...
@@ -160,70 +119,19 @@ func TestEtcdGetEndpoints(t *testing.T) {
...
@@ -160,70 +119,19 @@ func TestEtcdGetEndpoints(t *testing.T) {
test
.
TestGet
(
endpoints
)
test
.
TestGet
(
endpoints
)
}
}
func
TestListEmptyEndpointsList
(
t
*
testing
.
T
)
{
func
TestEtcdListEndpoints
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
storage
,
fakeClient
:=
newStorage
(
t
)
fakeClient
.
ChangeIndex
=
1
key
:=
storage
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{},
E
:
fakeClient
.
NewError
(
tools
.
EtcdErrorCodeNotFound
),
}
endpoints
,
err
:=
storage
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
endpoints
.
(
*
api
.
EndpointsList
)
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected non-zero pod list: %#v"
,
endpoints
)
}
if
endpoints
.
(
*
api
.
EndpointsList
)
.
ResourceVersion
!=
"1"
{
t
.
Errorf
(
"Unexpected resource version: %#v"
,
endpoints
)
}
}
func
TestListEndpointsList
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
storage
,
fakeClient
:=
newStorage
(
t
)
storage
,
fakeClient
:=
newStorage
(
t
)
fakeClient
.
ChangeIndex
=
1
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
key
:=
storage
.
KeyRootFunc
(
ctx
)
endpoints
:=
validNewEndpoints
()
key
=
etcdtest
.
AddPrefix
(
key
)
key
:=
etcdtest
.
AddPrefix
(
storage
.
KeyRootFunc
(
test
.
TestContext
()))
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
test
.
TestList
(
R
:
&
etcd
.
Response
{
endpoints
,
Node
:
&
etcd
.
Node
{
func
(
objects
[]
runtime
.
Object
)
[]
runtime
.
Object
{
Nodes
:
[]
*
etcd
.
Node
{
return
registrytest
.
SetObjectsForKey
(
fakeClient
,
key
,
objects
)
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Endpoints
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Endpoints
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
}),
},
},
},
},
},
}
func
(
resourceVersion
uint64
)
{
registrytest
.
SetResourceVersion
(
fakeClient
,
resourceVersion
)
endpointsObj
,
err
:=
storage
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
})
endpoints
:=
endpointsObj
.
(
*
api
.
EndpointsList
)
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
endpoints
.
Items
)
!=
2
{
t
.
Errorf
(
"Unexpected endpoints list: %#v"
,
endpoints
)
}
if
endpoints
.
Items
[
0
]
.
Name
!=
"foo"
{
t
.
Errorf
(
"Unexpected endpoints: %#v"
,
endpoints
.
Items
[
0
])
}
if
endpoints
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected endpoints: %#v"
,
endpoints
.
Items
[
1
])
}
}
}
func
TestEndpointsDecode
(
t
*
testing
.
T
)
{
func
TestEndpointsDecode
(
t
*
testing
.
T
)
{
...
...
pkg/registry/horizontalpodautoscaler/etcd/etcd_test.go
View file @
dcc302ab
...
@@ -25,8 +25,7 @@ import (
...
@@ -25,8 +25,7 @@ import (
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/expapi"
"k8s.io/kubernetes/pkg/expapi"
"k8s.io/kubernetes/pkg/expapi/v1"
"k8s.io/kubernetes/pkg/expapi/v1"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/registry/registrytest"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/storage"
"k8s.io/kubernetes/pkg/storage"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
...
@@ -143,68 +142,17 @@ func TestGet(t *testing.T) {
...
@@ -143,68 +142,17 @@ func TestGet(t *testing.T) {
test
.
TestGet
(
autoscaler
)
test
.
TestGet
(
autoscaler
)
}
}
func
TestEmptyList
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
registry
,
fakeClient
,
_
:=
newStorage
(
t
)
fakeClient
.
ChangeIndex
=
1
key
:=
registry
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{},
E
:
fakeClient
.
NewError
(
tools
.
EtcdErrorCodeNotFound
),
}
autoscalerList
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
autoscalerList
.
(
*
expapi
.
HorizontalPodAutoscalerList
)
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected non-zero autoscaler list: %#v"
,
autoscalerList
)
}
if
autoscalerList
.
(
*
expapi
.
HorizontalPodAutoscalerList
)
.
ResourceVersion
!=
"1"
{
t
.
Errorf
(
"Unexpected resource version: %#v"
,
autoscalerList
)
}
}
func
TestList
(
t
*
testing
.
T
)
{
func
TestList
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
storage
,
fakeEtcdClient
,
_
:=
newStorage
(
t
)
registry
,
fakeClient
,
_
:=
newStorage
(
t
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeEtcdClient
.
SetError
)
fakeClient
.
ChangeIndex
=
1
key
:=
etcdtest
.
AddPrefix
(
storage
.
KeyRootFunc
(
test
.
TestContext
()))
key
:=
registry
.
KeyRootFunc
(
ctx
)
autoscaler
:=
validNewHorizontalPodAutoscaler
(
"foo"
)
key
=
etcdtest
.
AddPrefix
(
key
)
test
.
TestList
(
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
autoscaler
,
R
:
&
etcd
.
Response
{
func
(
objects
[]
runtime
.
Object
)
[]
runtime
.
Object
{
Node
:
&
etcd
.
Node
{
return
registrytest
.
SetObjectsForKey
(
fakeEtcdClient
,
key
,
objects
)
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
testapi
.
Codec
(),
&
expapi
.
HorizontalPodAutoscaler
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
testapi
.
Codec
(),
&
expapi
.
HorizontalPodAutoscaler
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
}),
},
},
},
},
},
}
func
(
resourceVersion
uint64
)
{
obj
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
registrytest
.
SetResourceVersion
(
fakeEtcdClient
,
resourceVersion
)
if
err
!=
nil
{
})
t
.
Fatalf
(
"Unexpected error %v"
,
err
)
}
autoscalerList
:=
obj
.
(
*
expapi
.
HorizontalPodAutoscalerList
)
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
autoscalerList
.
Items
)
!=
2
{
t
.
Errorf
(
"Unexpected HorizontalPodAutoscaler list: %#v"
,
autoscalerList
)
}
if
autoscalerList
.
Items
[
0
]
.
Name
!=
"foo"
{
t
.
Errorf
(
"Unexpected HorizontalPodAutoscaler: %#v"
,
autoscalerList
.
Items
[
0
])
}
if
autoscalerList
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected HorizontalPodAutoscaler: %#v"
,
autoscalerList
.
Items
[
1
])
}
}
}
pkg/registry/minion/etcd/etcd_test.go
View file @
dcc302ab
...
@@ -27,6 +27,7 @@ import (
...
@@ -27,6 +27,7 @@ import (
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/registry/registrytest"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/storage"
"k8s.io/kubernetes/pkg/storage"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
...
@@ -130,90 +131,26 @@ func TestDelete(t *testing.T) {
...
@@ -130,90 +131,26 @@ func TestDelete(t *testing.T) {
test
.
TestDelete
(
createFn
,
gracefulSetFn
)
test
.
TestDelete
(
createFn
,
gracefulSetFn
)
}
}
func
TestEtcdListNodes
(
t
*
testing
.
T
)
{
func
TestEtcdGetNode
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewContext
()
storage
,
fakeClient
:=
newStorage
(
t
)
key
:=
storage
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Node
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Node
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
}),
},
},
},
},
E
:
nil
,
}
nodesObj
,
err
:=
storage
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
nodes
:=
nodesObj
.
(
*
api
.
NodeList
)
if
len
(
nodes
.
Items
)
!=
2
||
nodes
.
Items
[
0
]
.
Name
!=
"foo"
||
nodes
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected nodes list: %#v"
,
nodes
)
}
}
func
TestEtcdListNodesMatch
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewContext
()
storage
,
fakeClient
:=
newStorage
(
t
)
storage
,
fakeClient
:=
newStorage
(
t
)
key
:=
storage
.
KeyRootFunc
(
ctx
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
.
ClusterScope
()
key
=
etcdtest
.
AddPrefix
(
key
)
node
:=
validNewNode
()
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
test
.
TestGet
(
node
)
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Node
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
,
Labels
:
map
[
string
]
string
{
"name"
:
"foo"
,
},
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Node
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
,
Labels
:
map
[
string
]
string
{
"name"
:
"bar"
,
},
},
}),
},
},
},
},
E
:
nil
,
}
label
:=
labels
.
SelectorFromSet
(
labels
.
Set
{
"name"
:
"bar"
})
nodesObj
,
err
:=
storage
.
List
(
ctx
,
label
,
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
nodes
:=
nodesObj
.
(
*
api
.
NodeList
)
if
len
(
nodes
.
Items
)
!=
1
||
nodes
.
Items
[
0
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected nodes list: %#v"
,
nodes
)
}
}
}
func
TestEtcd
GetNode
(
t
*
testing
.
T
)
{
func
TestEtcd
ListNodes
(
t
*
testing
.
T
)
{
storage
,
fakeClient
:=
newStorage
(
t
)
storage
,
fakeClient
:=
newStorage
(
t
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
.
ClusterScope
()
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
.
ClusterScope
()
key
:=
etcdtest
.
AddPrefix
(
storage
.
KeyRootFunc
(
test
.
TestContext
()))
node
:=
validNewNode
()
node
:=
validNewNode
()
test
.
TestGet
(
node
)
test
.
TestList
(
node
,
func
(
objects
[]
runtime
.
Object
)
[]
runtime
.
Object
{
return
registrytest
.
SetObjectsForKey
(
fakeClient
,
key
,
objects
)
},
func
(
resourceVersion
uint64
)
{
registrytest
.
SetResourceVersion
(
fakeClient
,
resourceVersion
)
})
}
}
func
TestEtcdUpdateEndpoints
(
t
*
testing
.
T
)
{
func
TestEtcdUpdateEndpoints
(
t
*
testing
.
T
)
{
...
...
pkg/registry/namespace/etcd/etcd_test.go
View file @
dcc302ab
...
@@ -22,9 +22,8 @@ import (
...
@@ -22,9 +22,8 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/latest"
"k8s.io/kubernetes/pkg/api/latest"
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/registry/namespace"
"k8s.io/kubernetes/pkg/registry/namespace"
"k8s.io/kubernetes/pkg/registry/registrytest"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/storage"
"k8s.io/kubernetes/pkg/storage"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
...
@@ -124,144 +123,6 @@ func TestCreateSetsFields(t *testing.T) {
...
@@ -124,144 +123,6 @@ func TestCreateSetsFields(t *testing.T) {
}
}
}
}
func
TestListEmptyNamespaceList
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
fakeEtcdClient
.
ChangeIndex
=
1
key
:=
etcdtest
.
AddPrefix
(
"/namespaces"
)
fakeEtcdClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{},
E
:
fakeEtcdClient
.
NewError
(
tools
.
EtcdErrorCodeNotFound
),
}
storage
,
_
,
_
:=
NewStorage
(
etcdStorage
)
namespaces
,
err
:=
storage
.
List
(
api
.
NewContext
(),
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"Unexpected error: %v"
,
err
)
}
if
len
(
namespaces
.
(
*
api
.
NamespaceList
)
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected non-zero namespace list: %#v"
,
namespaces
)
}
if
namespaces
.
(
*
api
.
NamespaceList
)
.
ResourceVersion
!=
"1"
{
t
.
Errorf
(
"Unexpected resource version: %#v"
,
namespaces
)
}
}
func
TestListNamespaceList
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
key
:=
etcdtest
.
AddPrefix
(
"/namespaces"
)
fakeEtcdClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Namespace
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Namespace
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
}),
},
},
},
},
}
storage
,
_
,
_
:=
NewStorage
(
etcdStorage
)
namespacesObj
,
err
:=
storage
.
List
(
api
.
NewContext
(),
labels
.
Everything
(),
fields
.
Everything
())
namespaces
:=
namespacesObj
.
(
*
api
.
NamespaceList
)
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
namespaces
.
Items
)
!=
2
{
t
.
Errorf
(
"Unexpected namespaces list: %#v"
,
namespaces
)
}
if
namespaces
.
Items
[
0
]
.
Name
!=
"foo"
||
namespaces
.
Items
[
0
]
.
Status
.
Phase
!=
api
.
NamespaceActive
{
t
.
Errorf
(
"Unexpected namespace: %#v"
,
namespaces
.
Items
[
0
])
}
if
namespaces
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected namespace: %#v"
,
namespaces
.
Items
[
1
])
}
}
func
TestListNamespaceListSelection
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
key
:=
etcdtest
.
AddPrefix
(
"/namespaces"
)
fakeEtcdClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Namespace
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
})},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Namespace
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
})},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Namespace
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"baz"
},
Status
:
api
.
NamespaceStatus
{
Phase
:
api
.
NamespaceTerminating
},
})},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Namespace
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"qux"
,
Labels
:
map
[
string
]
string
{
"label"
:
"qux"
},
},
})},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Namespace
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"zot"
},
})},
},
},
},
}
storage
,
_
,
_
:=
NewStorage
(
etcdStorage
)
ctx
:=
api
.
NewContext
()
table
:=
[]
struct
{
label
,
field
string
expectedIDs
util
.
StringSet
}{
{
expectedIDs
:
util
.
NewStringSet
(
"foo"
,
"bar"
,
"baz"
,
"qux"
,
"zot"
),
},
{
field
:
"name=zot"
,
expectedIDs
:
util
.
NewStringSet
(
"zot"
),
},
{
label
:
"label=qux"
,
expectedIDs
:
util
.
NewStringSet
(
"qux"
),
},
{
field
:
"status.phase=Terminating"
,
expectedIDs
:
util
.
NewStringSet
(
"baz"
),
},
}
for
index
,
item
:=
range
table
{
label
,
err
:=
labels
.
Parse
(
item
.
label
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
continue
}
field
,
err
:=
fields
.
ParseSelector
(
item
.
field
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
continue
}
namespacesObj
,
err
:=
storage
.
List
(
ctx
,
label
,
field
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
namespaces
:=
namespacesObj
.
(
*
api
.
NamespaceList
)
set
:=
util
.
NewStringSet
()
for
i
:=
range
namespaces
.
Items
{
set
.
Insert
(
namespaces
.
Items
[
i
]
.
Name
)
}
if
e
,
a
:=
len
(
item
.
expectedIDs
),
len
(
set
);
e
!=
a
{
t
.
Errorf
(
"%v: Expected %v, got %v"
,
index
,
item
.
expectedIDs
,
set
)
}
}
}
func
TestNamespaceDecode
(
t
*
testing
.
T
)
{
func
TestNamespaceDecode
(
t
*
testing
.
T
)
{
_
,
etcdStorage
:=
newEtcdStorage
(
t
)
_
,
etcdStorage
:=
newEtcdStorage
(
t
)
storage
,
_
,
_
:=
NewStorage
(
etcdStorage
)
storage
,
_
,
_
:=
NewStorage
(
etcdStorage
)
...
@@ -290,6 +151,21 @@ func TestGet(t *testing.T) {
...
@@ -290,6 +151,21 @@ func TestGet(t *testing.T) {
test
.
TestGet
(
namespace
)
test
.
TestGet
(
namespace
)
}
}
func
TestList
(
t
*
testing
.
T
)
{
storage
,
fakeEtcdClient
,
_
:=
newStorage
(
t
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeEtcdClient
.
SetError
)
.
ClusterScope
()
key
:=
etcdtest
.
AddPrefix
(
storage
.
KeyRootFunc
(
test
.
TestContext
()))
namespace
:=
validNewNamespace
()
test
.
TestList
(
namespace
,
func
(
objects
[]
runtime
.
Object
)
[]
runtime
.
Object
{
return
registrytest
.
SetObjectsForKey
(
fakeEtcdClient
,
key
,
objects
)
},
func
(
resourceVersion
uint64
)
{
registrytest
.
SetResourceVersion
(
fakeEtcdClient
,
resourceVersion
)
})
}
func
TestDeleteNamespace
(
t
*
testing
.
T
)
{
func
TestDeleteNamespace
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
fakeEtcdClient
.
ChangeIndex
=
1
fakeEtcdClient
.
ChangeIndex
=
1
...
...
pkg/registry/persistentvolume/etcd/etcd_test.go
View file @
dcc302ab
...
@@ -23,8 +23,7 @@ import (
...
@@ -23,8 +23,7 @@ import (
"k8s.io/kubernetes/pkg/api/latest"
"k8s.io/kubernetes/pkg/api/latest"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/registry/registrytest"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/storage"
"k8s.io/kubernetes/pkg/storage"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
...
@@ -116,38 +115,6 @@ func TestDelete(t *testing.T) {
...
@@ -116,38 +115,6 @@ func TestDelete(t *testing.T) {
test
.
TestDelete
(
createFn
,
gracefulSetFn
)
test
.
TestDelete
(
createFn
,
gracefulSetFn
)
}
}
func
TestEtcdListPersistentVolumes
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewContext
()
storage
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
key
:=
storage
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
validNewPersistentVolume
(
"foo"
)),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
validNewPersistentVolume
(
"bar"
)),
},
},
},
},
E
:
nil
,
}
pvObj
,
err
:=
storage
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
pvs
:=
pvObj
.
(
*
api
.
PersistentVolumeList
)
if
len
(
pvs
.
Items
)
!=
2
||
pvs
.
Items
[
0
]
.
Name
!=
"foo"
||
pvs
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected persistentVolume list: %#v"
,
pvs
)
}
}
func
TestEtcdGetPersistentVolumes
(
t
*
testing
.
T
)
{
func
TestEtcdGetPersistentVolumes
(
t
*
testing
.
T
)
{
storage
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
storage
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
.
ClusterScope
()
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
.
ClusterScope
()
...
@@ -155,70 +122,19 @@ func TestEtcdGetPersistentVolumes(t *testing.T) {
...
@@ -155,70 +122,19 @@ func TestEtcdGetPersistentVolumes(t *testing.T) {
test
.
TestGet
(
persistentVolume
)
test
.
TestGet
(
persistentVolume
)
}
}
func
TestListEmptyPersistentVolumesList
(
t
*
testing
.
T
)
{
func
TestEtcdListPersistentVolumes
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewContext
()
storage
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
fakeClient
.
ChangeIndex
=
1
key
:=
storage
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{},
E
:
fakeClient
.
NewError
(
tools
.
EtcdErrorCodeNotFound
),
}
persistentVolume
,
err
:=
storage
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
persistentVolume
.
(
*
api
.
PersistentVolumeList
)
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected non-zero pod list: %#v"
,
persistentVolume
)
}
if
persistentVolume
.
(
*
api
.
PersistentVolumeList
)
.
ResourceVersion
!=
"1"
{
t
.
Errorf
(
"Unexpected resource version: %#v"
,
persistentVolume
)
}
}
func
TestListPersistentVolumesList
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewContext
()
storage
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
storage
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
fakeClient
.
ChangeIndex
=
1
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
.
ClusterScope
()
key
:=
storage
.
KeyRootFunc
(
ctx
)
key
:=
etcdtest
.
AddPrefix
(
storage
.
KeyRootFunc
(
test
.
TestContext
()))
key
=
etcdtest
.
AddPrefix
(
key
)
persistentVolume
:=
validNewPersistentVolume
(
"foo"
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
test
.
TestList
(
R
:
&
etcd
.
Response
{
persistentVolume
,
Node
:
&
etcd
.
Node
{
func
(
objects
[]
runtime
.
Object
)
[]
runtime
.
Object
{
Nodes
:
[]
*
etcd
.
Node
{
return
registrytest
.
SetObjectsForKey
(
fakeClient
,
key
,
objects
)
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
PersistentVolume
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
PersistentVolume
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
}),
},
},
},
},
},
}
func
(
resourceVersion
uint64
)
{
registrytest
.
SetResourceVersion
(
fakeClient
,
resourceVersion
)
persistentVolumeObj
,
err
:=
storage
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
})
persistentVolumeList
:=
persistentVolumeObj
.
(
*
api
.
PersistentVolumeList
)
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
persistentVolumeList
.
Items
)
!=
2
{
t
.
Errorf
(
"Unexpected persistentVolume list: %#v"
,
persistentVolumeList
)
}
if
persistentVolumeList
.
Items
[
0
]
.
Name
!=
"foo"
{
t
.
Errorf
(
"Unexpected persistentVolume: %#v"
,
persistentVolumeList
.
Items
[
0
])
}
if
persistentVolumeList
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected persistentVolume: %#v"
,
persistentVolumeList
.
Items
[
1
])
}
}
}
func
TestPersistentVolumesDecode
(
t
*
testing
.
T
)
{
func
TestPersistentVolumesDecode
(
t
*
testing
.
T
)
{
...
...
pkg/registry/persistentvolumeclaim/etcd/etcd_test.go
View file @
dcc302ab
...
@@ -23,8 +23,7 @@ import (
...
@@ -23,8 +23,7 @@ import (
"k8s.io/kubernetes/pkg/api/latest"
"k8s.io/kubernetes/pkg/api/latest"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/registry/registrytest"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/storage"
"k8s.io/kubernetes/pkg/storage"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
etcdstorage
"k8s.io/kubernetes/pkg/storage/etcd"
...
@@ -114,38 +113,6 @@ func TestDelete(t *testing.T) {
...
@@ -114,38 +113,6 @@ func TestDelete(t *testing.T) {
test
.
TestDelete
(
createFn
,
gracefulSetFn
)
test
.
TestDelete
(
createFn
,
gracefulSetFn
)
}
}
func
TestEtcdListPersistentVolumeClaims
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
registry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
key
:=
registry
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
validNewPersistentVolumeClaim
(
"foo"
,
api
.
NamespaceDefault
)),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
validNewPersistentVolumeClaim
(
"bar"
,
api
.
NamespaceDefault
)),
},
},
},
},
E
:
nil
,
}
pvObj
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
pvs
:=
pvObj
.
(
*
api
.
PersistentVolumeClaimList
)
if
len
(
pvs
.
Items
)
!=
2
||
pvs
.
Items
[
0
]
.
Name
!=
"foo"
||
pvs
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected persistentVolume list: %#v"
,
pvs
)
}
}
func
TestEtcdGetPersistentVolumeClaims
(
t
*
testing
.
T
)
{
func
TestEtcdGetPersistentVolumeClaims
(
t
*
testing
.
T
)
{
storage
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
storage
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
...
@@ -153,70 +120,19 @@ func TestEtcdGetPersistentVolumeClaims(t *testing.T) {
...
@@ -153,70 +120,19 @@ func TestEtcdGetPersistentVolumeClaims(t *testing.T) {
test
.
TestGet
(
claim
)
test
.
TestGet
(
claim
)
}
}
func
TestListEmptyPersistentVolumeClaimsList
(
t
*
testing
.
T
)
{
func
TestEtcdListPersistentVolumeClaims
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
storage
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
registry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeClient
.
SetError
)
fakeClient
.
ChangeIndex
=
1
key
:=
etcdtest
.
AddPrefix
(
storage
.
KeyRootFunc
(
test
.
TestContext
()))
key
:=
registry
.
KeyRootFunc
(
ctx
)
claim
:=
validNewPersistentVolumeClaim
(
"foo"
,
api
.
NamespaceDefault
)
key
=
etcdtest
.
AddPrefix
(
key
)
test
.
TestList
(
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
claim
,
R
:
&
etcd
.
Response
{},
func
(
objects
[]
runtime
.
Object
)
[]
runtime
.
Object
{
E
:
fakeClient
.
NewError
(
tools
.
EtcdErrorCodeNotFound
),
return
registrytest
.
SetObjectsForKey
(
fakeClient
,
key
,
objects
)
}
persistentVolume
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
persistentVolume
.
(
*
api
.
PersistentVolumeClaimList
)
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected non-zero pod list: %#v"
,
persistentVolume
)
}
if
persistentVolume
.
(
*
api
.
PersistentVolumeClaimList
)
.
ResourceVersion
!=
"1"
{
t
.
Errorf
(
"Unexpected resource version: %#v"
,
persistentVolume
)
}
}
func
TestListPersistentVolumeClaimsList
(
t
*
testing
.
T
)
{
ctx
:=
api
.
NewDefaultContext
()
registry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
fakeClient
.
ChangeIndex
=
1
key
:=
registry
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
PersistentVolumeClaim
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
PersistentVolumeClaim
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
}),
},
},
},
},
},
}
func
(
resourceVersion
uint64
)
{
registrytest
.
SetResourceVersion
(
fakeClient
,
resourceVersion
)
persistentVolumeObj
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
})
persistentVolumeList
:=
persistentVolumeObj
.
(
*
api
.
PersistentVolumeClaimList
)
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
persistentVolumeList
.
Items
)
!=
2
{
t
.
Errorf
(
"Unexpected persistentVolume list: %#v"
,
persistentVolumeList
)
}
if
persistentVolumeList
.
Items
[
0
]
.
Name
!=
"foo"
{
t
.
Errorf
(
"Unexpected persistentVolume: %#v"
,
persistentVolumeList
.
Items
[
0
])
}
if
persistentVolumeList
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected persistentVolume: %#v"
,
persistentVolumeList
.
Items
[
1
])
}
}
}
func
TestPersistentVolumeClaimsDecode
(
t
*
testing
.
T
)
{
func
TestPersistentVolumeClaimsDecode
(
t
*
testing
.
T
)
{
...
...
pkg/registry/pod/etcd/etcd_test.go
View file @
dcc302ab
...
@@ -31,6 +31,7 @@ import (
...
@@ -31,6 +31,7 @@ import (
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/registry/pod"
"k8s.io/kubernetes/pkg/registry/pod"
"k8s.io/kubernetes/pkg/registry/registrytest"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/securitycontext"
"k8s.io/kubernetes/pkg/securitycontext"
"k8s.io/kubernetes/pkg/storage"
"k8s.io/kubernetes/pkg/storage"
...
@@ -182,193 +183,6 @@ func TestCreateSetsFields(t *testing.T) {
...
@@ -182,193 +183,6 @@ func TestCreateSetsFields(t *testing.T) {
}
}
}
}
func
TestListError
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
fakeEtcdClient
.
Err
=
fmt
.
Errorf
(
"test error"
)
storage
:=
NewStorage
(
etcdStorage
,
nil
)
.
Pod
pods
,
err
:=
storage
.
List
(
api
.
NewDefaultContext
(),
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
fakeEtcdClient
.
Err
{
t
.
Fatalf
(
"Expected %#v, Got %#v"
,
fakeEtcdClient
.
Err
,
err
)
}
if
pods
!=
nil
{
t
.
Errorf
(
"Unexpected non-nil pod list: %#v"
,
pods
)
}
}
func
TestListEmptyPodList
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
fakeEtcdClient
.
ChangeIndex
=
1
ctx
:=
api
.
NewContext
()
storage
:=
NewStorage
(
etcdStorage
,
nil
)
.
Pod
key
:=
storage
.
Etcd
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeEtcdClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{},
E
:
fakeEtcdClient
.
NewError
(
tools
.
EtcdErrorCodeNotFound
),
}
pods
,
err
:=
storage
.
List
(
api
.
NewContext
(),
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
pods
.
(
*
api
.
PodList
)
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected non-zero pod list: %#v"
,
pods
)
}
if
pods
.
(
*
api
.
PodList
)
.
ResourceVersion
!=
"1"
{
t
.
Errorf
(
"Unexpected resource version: %#v"
,
pods
)
}
}
func
TestListPodList
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
storage
:=
NewStorage
(
etcdStorage
,
nil
)
.
Pod
key
:=
storage
.
Etcd
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeEtcdClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Spec
:
api
.
PodSpec
{
NodeName
:
"machine"
},
Status
:
api
.
PodStatus
{
Phase
:
api
.
PodRunning
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
Spec
:
api
.
PodSpec
{
NodeName
:
"machine"
},
}),
},
},
},
},
}
podsObj
,
err
:=
storage
.
List
(
api
.
NewDefaultContext
(),
labels
.
Everything
(),
fields
.
Everything
())
pods
:=
podsObj
.
(
*
api
.
PodList
)
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
pods
.
Items
)
!=
2
{
t
.
Errorf
(
"Unexpected pod list: %#v"
,
pods
)
}
if
pods
.
Items
[
0
]
.
Name
!=
"foo"
||
pods
.
Items
[
0
]
.
Status
.
Phase
!=
api
.
PodRunning
||
pods
.
Items
[
0
]
.
Spec
.
NodeName
!=
"machine"
{
t
.
Errorf
(
"Unexpected pod: %#v"
,
pods
.
Items
[
0
])
}
if
pods
.
Items
[
1
]
.
Name
!=
"bar"
||
pods
.
Items
[
1
]
.
Spec
.
NodeName
!=
"machine"
{
t
.
Errorf
(
"Unexpected pod: %#v"
,
pods
.
Items
[
1
])
}
}
func
TestListPodListSelection
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
storage
:=
NewStorage
(
etcdStorage
,
nil
)
.
Pod
rootKey
:=
etcdtest
.
AddPrefix
(
"pods/default"
)
key
:=
etcdtest
.
AddPrefix
(
"pods/default/zot"
)
fakeEtcdClient
.
Data
[
rootKey
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
})},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
Spec
:
api
.
PodSpec
{
NodeName
:
"barhost"
},
})},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"baz"
},
Status
:
api
.
PodStatus
{
Phase
:
api
.
PodFailed
},
})},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"qux"
,
Labels
:
map
[
string
]
string
{
"label"
:
"qux"
},
},
})},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"zot"
},
})},
},
},
},
}
fakeEtcdClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"zot"
},
}),
},
},
}
table
:=
[]
struct
{
label
,
field
string
expectedIDs
util
.
StringSet
}{
{
expectedIDs
:
util
.
NewStringSet
(
"foo"
,
"bar"
,
"baz"
,
"qux"
,
"zot"
),
},
{
field
:
"metadata.name=zot"
,
expectedIDs
:
util
.
NewStringSet
(
"zot"
),
},
{
label
:
"label=qux"
,
expectedIDs
:
util
.
NewStringSet
(
"qux"
),
},
{
field
:
"status.phase=Failed"
,
expectedIDs
:
util
.
NewStringSet
(
"baz"
),
},
{
field
:
"spec.nodeName=barhost"
,
expectedIDs
:
util
.
NewStringSet
(
"bar"
),
},
{
field
:
"spec.nodeName="
,
expectedIDs
:
util
.
NewStringSet
(
"foo"
,
"baz"
,
"qux"
,
"zot"
),
},
{
field
:
"spec.nodeName!="
,
expectedIDs
:
util
.
NewStringSet
(
"bar"
),
},
}
for
index
,
item
:=
range
table
{
label
,
err
:=
labels
.
Parse
(
item
.
label
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
continue
}
field
,
err
:=
fields
.
ParseSelector
(
item
.
field
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
continue
}
podsObj
,
err
:=
storage
.
List
(
ctx
,
label
,
field
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
pods
:=
podsObj
.
(
*
api
.
PodList
)
set
:=
util
.
NewStringSet
()
for
i
:=
range
pods
.
Items
{
set
.
Insert
(
pods
.
Items
[
i
]
.
Name
)
}
if
e
,
a
:=
len
(
item
.
expectedIDs
),
len
(
set
);
e
!=
a
{
t
.
Errorf
(
"%v: Expected %v, got %v"
,
index
,
item
.
expectedIDs
,
set
)
}
/*for _, pod := range pods.Items {
if !item.expectedIDs.Has(pod.Name) {
t.Errorf("%v: Unexpected pod %v", index, pod.Name)
}
t.Logf("%v: Got pod Name: %v", index, pod.Name)
}*/
}
}
func
TestPodDecode
(
t
*
testing
.
T
)
{
func
TestPodDecode
(
t
*
testing
.
T
)
{
_
,
etcdStorage
:=
newEtcdStorage
(
t
)
_
,
etcdStorage
:=
newEtcdStorage
(
t
)
storage
:=
NewStorage
(
etcdStorage
,
nil
)
.
Pod
storage
:=
NewStorage
(
etcdStorage
,
nil
)
.
Pod
...
@@ -642,6 +456,22 @@ func TestEtcdGet(t *testing.T) {
...
@@ -642,6 +456,22 @@ func TestEtcdGet(t *testing.T) {
test
.
TestGet
(
pod
)
test
.
TestGet
(
pod
)
}
}
func
TestEtcdList
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
storage
:=
NewStorage
(
etcdStorage
,
nil
)
.
Pod
test
:=
resttest
.
New
(
t
,
storage
,
fakeEtcdClient
.
SetError
)
key
:=
etcdtest
.
AddPrefix
(
storage
.
Etcd
.
KeyRootFunc
(
test
.
TestContext
()))
pod
:=
validNewPod
()
test
.
TestList
(
pod
,
func
(
objects
[]
runtime
.
Object
)
[]
runtime
.
Object
{
return
registrytest
.
SetObjectsForKey
(
fakeEtcdClient
,
key
,
objects
)
},
func
(
resourceVersion
uint64
)
{
registrytest
.
SetResourceVersion
(
fakeEtcdClient
,
resourceVersion
)
})
}
func
TestEtcdCreate
(
t
*
testing
.
T
)
{
func
TestEtcdCreate
(
t
*
testing
.
T
)
{
registry
,
bindingRegistry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
registry
,
bindingRegistry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
ctx
:=
api
.
NewDefaultContext
()
...
@@ -1184,90 +1014,6 @@ func TestEtcdDeletePodMultipleContainers(t *testing.T) {
...
@@ -1184,90 +1014,6 @@ func TestEtcdDeletePodMultipleContainers(t *testing.T) {
}
}
}
}
func
TestEtcdEmptyList
(
t
*
testing
.
T
)
{
registry
,
_
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
registry
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{},
},
},
E
:
nil
,
}
obj
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
pods
:=
obj
.
(
*
api
.
PodList
)
if
len
(
pods
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected pod list: %#v"
,
pods
)
}
}
func
TestEtcdListNotFound
(
t
*
testing
.
T
)
{
registry
,
_
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
registry
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{},
E
:
tools
.
EtcdErrorNotFound
,
}
obj
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
pods
:=
obj
.
(
*
api
.
PodList
)
if
len
(
pods
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected pod list: %#v"
,
pods
)
}
}
func
TestEtcdList
(
t
*
testing
.
T
)
{
registry
,
_
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
registry
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Spec
:
api
.
PodSpec
{
NodeName
:
"machine"
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
Spec
:
api
.
PodSpec
{
NodeName
:
"machine"
},
}),
},
},
},
},
E
:
nil
,
}
obj
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
pods
:=
obj
.
(
*
api
.
PodList
)
if
len
(
pods
.
Items
)
!=
2
||
pods
.
Items
[
0
]
.
Name
!=
"foo"
||
pods
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected pod list: %#v"
,
pods
)
}
if
pods
.
Items
[
0
]
.
Spec
.
NodeName
!=
"machine"
||
pods
.
Items
[
1
]
.
Spec
.
NodeName
!=
"machine"
{
t
.
Errorf
(
"Failed to populate host name."
)
}
}
func
TestEtcdWatchPods
(
t
*
testing
.
T
)
{
func
TestEtcdWatchPods
(
t
*
testing
.
T
)
{
registry
,
_
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
registry
,
_
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
ctx
:=
api
.
NewDefaultContext
()
...
...
pkg/registry/registrytest/etcd.go
0 → 100644
View file @
dcc302ab
/*
Copyright 2015 The Kubernetes Authors All rights reserved.
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
registrytest
import
(
"github.com/coreos/go-etcd/etcd"
"k8s.io/kubernetes/pkg/api/latest"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/tools"
)
func
SetResourceVersion
(
fakeClient
*
tools
.
FakeEtcdClient
,
resourceVersion
uint64
)
{
fakeClient
.
ChangeIndex
=
resourceVersion
}
func
SetObjectsForKey
(
fakeClient
*
tools
.
FakeEtcdClient
,
key
string
,
objects
[]
runtime
.
Object
)
[]
runtime
.
Object
{
result
:=
make
([]
runtime
.
Object
,
len
(
objects
))
if
len
(
objects
)
>
0
{
nodes
:=
make
([]
*
etcd
.
Node
,
len
(
objects
))
for
i
,
obj
:=
range
objects
{
encoded
:=
runtime
.
EncodeOrDie
(
latest
.
Codec
,
obj
)
decoded
,
_
:=
latest
.
Codec
.
Decode
([]
byte
(
encoded
))
nodes
[
i
]
=
&
etcd
.
Node
{
Value
:
encoded
}
result
[
i
]
=
decoded
}
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
nodes
,
},
},
E
:
nil
,
}
}
else
{
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{},
E
:
fakeClient
.
NewError
(
tools
.
EtcdErrorCodeNotFound
),
}
}
return
result
}
pkg/registry/resourcequota/etcd/etcd_test.go
View file @
dcc302ab
...
@@ -29,6 +29,7 @@ import (
...
@@ -29,6 +29,7 @@ import (
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/api/rest/resttest"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/registry/registrytest"
"k8s.io/kubernetes/pkg/registry/resourcequota"
"k8s.io/kubernetes/pkg/registry/resourcequota"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/storage"
"k8s.io/kubernetes/pkg/storage"
...
@@ -146,155 +147,6 @@ func TestCreateSetsFields(t *testing.T) {
...
@@ -146,155 +147,6 @@ func TestCreateSetsFields(t *testing.T) {
}
}
}
}
func
TestListError
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
fakeEtcdClient
.
Err
=
fmt
.
Errorf
(
"test error"
)
storage
,
_
:=
NewStorage
(
etcdStorage
)
resourcequotas
,
err
:=
storage
.
List
(
api
.
NewDefaultContext
(),
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
fakeEtcdClient
.
Err
{
t
.
Fatalf
(
"Expected %#v, Got %#v"
,
fakeEtcdClient
.
Err
,
err
)
}
if
resourcequotas
!=
nil
{
t
.
Errorf
(
"Unexpected non-nil resourcequota list: %#v"
,
resourcequotas
)
}
}
func
TestListEmptyResourceQuotaList
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
fakeEtcdClient
.
ChangeIndex
=
1
storage
,
_
:=
NewStorage
(
etcdStorage
)
ctx
:=
api
.
NewContext
()
key
:=
storage
.
Etcd
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeEtcdClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{},
E
:
fakeEtcdClient
.
NewError
(
tools
.
EtcdErrorCodeNotFound
),
}
resourcequotas
,
err
:=
storage
.
List
(
api
.
NewContext
(),
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
resourcequotas
.
(
*
api
.
ResourceQuotaList
)
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected non-zero resourcequota list: %#v"
,
resourcequotas
)
}
if
resourcequotas
.
(
*
api
.
ResourceQuotaList
)
.
ResourceVersion
!=
"1"
{
t
.
Errorf
(
"Unexpected resource version: %#v"
,
resourcequotas
)
}
}
func
TestListResourceQuotaList
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
storage
,
_
:=
NewStorage
(
etcdStorage
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
storage
.
Etcd
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeEtcdClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
ResourceQuota
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
ResourceQuota
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
}),
},
},
},
},
}
resourcequotasObj
,
err
:=
storage
.
List
(
api
.
NewDefaultContext
(),
labels
.
Everything
(),
fields
.
Everything
())
resourcequotas
:=
resourcequotasObj
.
(
*
api
.
ResourceQuotaList
)
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
if
len
(
resourcequotas
.
Items
)
!=
2
{
t
.
Errorf
(
"Unexpected resourcequota list: %#v"
,
resourcequotas
)
}
if
resourcequotas
.
Items
[
0
]
.
Name
!=
"foo"
{
t
.
Errorf
(
"Unexpected resourcequota: %#v"
,
resourcequotas
.
Items
[
0
])
}
if
resourcequotas
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected resourcequota: %#v"
,
resourcequotas
.
Items
[
1
])
}
}
func
TestListResourceQuotaListSelection
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
storage
,
_
:=
NewStorage
(
etcdStorage
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
storage
.
Etcd
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeEtcdClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
ResourceQuota
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
})},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
ResourceQuota
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"qux"
,
Labels
:
map
[
string
]
string
{
"label"
:
"qux"
},
},
})},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
ResourceQuota
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"zot"
},
})},
},
},
},
}
table
:=
[]
struct
{
label
,
field
string
expectedIDs
util
.
StringSet
}{
{
expectedIDs
:
util
.
NewStringSet
(
"foo"
,
"qux"
,
"zot"
),
},
{
field
:
"name=zot"
,
expectedIDs
:
util
.
NewStringSet
(
"zot"
),
},
{
label
:
"label=qux"
,
expectedIDs
:
util
.
NewStringSet
(
"qux"
),
},
}
for
index
,
item
:=
range
table
{
label
,
err
:=
labels
.
Parse
(
item
.
label
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
continue
}
field
,
err
:=
fields
.
ParseSelector
(
item
.
field
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
continue
}
resourcequotasObj
,
err
:=
storage
.
List
(
ctx
,
label
,
field
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
resourcequotas
:=
resourcequotasObj
.
(
*
api
.
ResourceQuotaList
)
set
:=
util
.
NewStringSet
()
for
i
:=
range
resourcequotas
.
Items
{
set
.
Insert
(
resourcequotas
.
Items
[
i
]
.
Name
)
}
if
e
,
a
:=
len
(
item
.
expectedIDs
),
len
(
set
);
e
!=
a
{
t
.
Errorf
(
"%v: Expected %v, got %v"
,
index
,
item
.
expectedIDs
,
set
)
}
}
}
func
TestResourceQuotaDecode
(
t
*
testing
.
T
)
{
func
TestResourceQuotaDecode
(
t
*
testing
.
T
)
{
_
,
etcdStorage
:=
newEtcdStorage
(
t
)
_
,
etcdStorage
:=
newEtcdStorage
(
t
)
storage
,
_
:=
NewStorage
(
etcdStorage
)
storage
,
_
:=
NewStorage
(
etcdStorage
)
...
@@ -350,6 +202,22 @@ func TestEtcdGet(t *testing.T) {
...
@@ -350,6 +202,22 @@ func TestEtcdGet(t *testing.T) {
test
.
TestGet
(
resourcequota
)
test
.
TestGet
(
resourcequota
)
}
}
func
TestEtcdList
(
t
*
testing
.
T
)
{
fakeEtcdClient
,
etcdStorage
:=
newEtcdStorage
(
t
)
storage
,
_
:=
NewStorage
(
etcdStorage
)
test
:=
resttest
.
New
(
t
,
storage
,
fakeEtcdClient
.
SetError
)
key
:=
etcdtest
.
AddPrefix
(
storage
.
Etcd
.
KeyRootFunc
(
test
.
TestContext
()))
resourcequota
:=
validNewResourceQuota
()
test
.
TestList
(
resourcequota
,
func
(
objects
[]
runtime
.
Object
)
[]
runtime
.
Object
{
return
registrytest
.
SetObjectsForKey
(
fakeEtcdClient
,
key
,
objects
)
},
func
(
resourceVersion
uint64
)
{
registrytest
.
SetResourceVersion
(
fakeEtcdClient
,
resourceVersion
)
})
}
func
TestEtcdCreateFailsWithoutNamespace
(
t
*
testing
.
T
)
{
func
TestEtcdCreateFailsWithoutNamespace
(
t
*
testing
.
T
)
{
registry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
registry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
fakeClient
.
TestIndex
=
true
fakeClient
.
TestIndex
=
true
...
@@ -436,84 +304,6 @@ func TestEtcdUpdateStatus(t *testing.T) {
...
@@ -436,84 +304,6 @@ func TestEtcdUpdateStatus(t *testing.T) {
}
}
}
}
func
TestEtcdEmptyList
(
t
*
testing
.
T
)
{
registry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
registry
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{},
},
},
E
:
nil
,
}
obj
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
resourcequotas
:=
obj
.
(
*
api
.
ResourceQuotaList
)
if
len
(
resourcequotas
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected resourcequota list: %#v"
,
resourcequotas
)
}
}
func
TestEtcdListNotFound
(
t
*
testing
.
T
)
{
registry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
registry
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{},
E
:
tools
.
EtcdErrorNotFound
,
}
obj
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
resourcequotas
:=
obj
.
(
*
api
.
ResourceQuotaList
)
if
len
(
resourcequotas
.
Items
)
!=
0
{
t
.
Errorf
(
"Unexpected resourcequota list: %#v"
,
resourcequotas
)
}
}
func
TestEtcdList
(
t
*
testing
.
T
)
{
registry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
key
:=
registry
.
KeyRootFunc
(
ctx
)
key
=
etcdtest
.
AddPrefix
(
key
)
fakeClient
.
Data
[
key
]
=
tools
.
EtcdResponseWithError
{
R
:
&
etcd
.
Response
{
Node
:
&
etcd
.
Node
{
Nodes
:
[]
*
etcd
.
Node
{
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
ResourceQuota
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
}),
},
{
Value
:
runtime
.
EncodeOrDie
(
latest
.
Codec
,
&
api
.
ResourceQuota
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"bar"
},
}),
},
},
},
},
E
:
nil
,
}
obj
,
err
:=
registry
.
List
(
ctx
,
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
resourcequotas
:=
obj
.
(
*
api
.
ResourceQuotaList
)
if
len
(
resourcequotas
.
Items
)
!=
2
||
resourcequotas
.
Items
[
0
]
.
Name
!=
"foo"
||
resourcequotas
.
Items
[
1
]
.
Name
!=
"bar"
{
t
.
Errorf
(
"Unexpected resourcequota list: %#v"
,
resourcequotas
)
}
}
func
TestEtcdWatchResourceQuotas
(
t
*
testing
.
T
)
{
func
TestEtcdWatchResourceQuotas
(
t
*
testing
.
T
)
{
registry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
registry
,
_
,
fakeClient
,
_
:=
newStorage
(
t
)
ctx
:=
api
.
NewDefaultContext
()
ctx
:=
api
.
NewDefaultContext
()
...
...
pkg/tools/fake_etcd_client.go
View file @
dcc302ab
...
@@ -142,7 +142,7 @@ func (f *FakeEtcdClient) Get(key string, sort, recursive bool) (*etcd.Response,
...
@@ -142,7 +142,7 @@ func (f *FakeEtcdClient) Get(key string, sort, recursive bool) (*etcd.Response,
}
}
f
.
t
.
Logf
(
"returning %v: %#v %#v"
,
key
,
result
.
R
,
result
.
E
)
f
.
t
.
Logf
(
"returning %v: %#v %#v"
,
key
,
result
.
R
,
result
.
E
)
// Sort response, note this will alter resu
tl
.R.
// Sort response, note this will alter resu
lt
.R.
if
result
.
R
.
Node
!=
nil
&&
result
.
R
.
Node
.
Nodes
!=
nil
&&
sort
{
if
result
.
R
.
Node
!=
nil
&&
result
.
R
.
Node
.
Nodes
!=
nil
&&
sort
{
f
.
sortResponse
(
result
.
R
.
Node
.
Nodes
)
f
.
sortResponse
(
result
.
R
.
Node
.
Nodes
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment