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
b6e32965
Commit
b6e32965
authored
Nov 12, 2016
by
Hongchao Deng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
etcd2: have prefix always prepended
parent
2c61d2f8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
71 deletions
+35
-71
etcd_helper.go
pkg/storage/etcd/etcd_helper.go
+8
-16
etcd_helper_test.go
pkg/storage/etcd/etcd_helper_test.go
+20
-48
etcd_watcher_test.go
pkg/storage/etcd/etcd_watcher_test.go
+7
-7
No files found.
pkg/storage/etcd/etcd_helper.go
View file @
b6e32965
...
@@ -21,7 +21,6 @@ import (
...
@@ -21,7 +21,6 @@ import (
"fmt"
"fmt"
"path"
"path"
"reflect"
"reflect"
"strings"
"time"
"time"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
...
@@ -97,7 +96,7 @@ func (h *etcdHelper) Create(ctx context.Context, key string, obj, out runtime.Ob
...
@@ -97,7 +96,7 @@ func (h *etcdHelper) Create(ctx context.Context, key string, obj, out runtime.Ob
if
ctx
==
nil
{
if
ctx
==
nil
{
glog
.
Errorf
(
"Context is nil"
)
glog
.
Errorf
(
"Context is nil"
)
}
}
key
=
h
.
prefixEtcdKey
(
key
)
key
=
path
.
Join
(
h
.
pathPrefix
,
key
)
data
,
err
:=
runtime
.
Encode
(
h
.
codec
,
obj
)
data
,
err
:=
runtime
.
Encode
(
h
.
codec
,
obj
)
trace
.
Step
(
"Object encoded"
)
trace
.
Step
(
"Object encoded"
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -148,7 +147,7 @@ func (h *etcdHelper) Delete(ctx context.Context, key string, out runtime.Object,
...
@@ -148,7 +147,7 @@ func (h *etcdHelper) Delete(ctx context.Context, key string, out runtime.Object,
if
ctx
==
nil
{
if
ctx
==
nil
{
glog
.
Errorf
(
"Context is nil"
)
glog
.
Errorf
(
"Context is nil"
)
}
}
key
=
h
.
prefixEtcdKey
(
key
)
key
=
path
.
Join
(
h
.
pathPrefix
,
key
)
v
,
err
:=
conversion
.
EnforcePtr
(
out
)
v
,
err
:=
conversion
.
EnforcePtr
(
out
)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
"unable to convert output object to pointer"
)
panic
(
"unable to convert output object to pointer"
)
...
@@ -210,7 +209,7 @@ func (h *etcdHelper) Watch(ctx context.Context, key string, resourceVersion stri
...
@@ -210,7 +209,7 @@ func (h *etcdHelper) Watch(ctx context.Context, key string, resourceVersion stri
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
key
=
h
.
prefixEtcdKey
(
key
)
key
=
path
.
Join
(
h
.
pathPrefix
,
key
)
w
:=
newEtcdWatcher
(
false
,
h
.
quorum
,
nil
,
storage
.
SimpleFilter
(
pred
),
h
.
codec
,
h
.
versioner
,
nil
,
h
)
w
:=
newEtcdWatcher
(
false
,
h
.
quorum
,
nil
,
storage
.
SimpleFilter
(
pred
),
h
.
codec
,
h
.
versioner
,
nil
,
h
)
go
w
.
etcdWatch
(
ctx
,
h
.
etcdKeysAPI
,
key
,
watchRV
)
go
w
.
etcdWatch
(
ctx
,
h
.
etcdKeysAPI
,
key
,
watchRV
)
return
w
,
nil
return
w
,
nil
...
@@ -225,7 +224,7 @@ func (h *etcdHelper) WatchList(ctx context.Context, key string, resourceVersion
...
@@ -225,7 +224,7 @@ func (h *etcdHelper) WatchList(ctx context.Context, key string, resourceVersion
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
key
=
h
.
prefixEtcdKey
(
key
)
key
=
path
.
Join
(
h
.
pathPrefix
,
key
)
w
:=
newEtcdWatcher
(
true
,
h
.
quorum
,
exceptKey
(
key
),
storage
.
SimpleFilter
(
pred
),
h
.
codec
,
h
.
versioner
,
nil
,
h
)
w
:=
newEtcdWatcher
(
true
,
h
.
quorum
,
exceptKey
(
key
),
storage
.
SimpleFilter
(
pred
),
h
.
codec
,
h
.
versioner
,
nil
,
h
)
go
w
.
etcdWatch
(
ctx
,
h
.
etcdKeysAPI
,
key
,
watchRV
)
go
w
.
etcdWatch
(
ctx
,
h
.
etcdKeysAPI
,
key
,
watchRV
)
return
w
,
nil
return
w
,
nil
...
@@ -236,7 +235,7 @@ func (h *etcdHelper) Get(ctx context.Context, key string, resourceVersion string
...
@@ -236,7 +235,7 @@ func (h *etcdHelper) Get(ctx context.Context, key string, resourceVersion string
if
ctx
==
nil
{
if
ctx
==
nil
{
glog
.
Errorf
(
"Context is nil"
)
glog
.
Errorf
(
"Context is nil"
)
}
}
key
=
h
.
prefixEtcdKey
(
key
)
key
=
path
.
Join
(
h
.
pathPrefix
,
key
)
_
,
_
,
_
,
err
:=
h
.
bodyAndExtractObj
(
ctx
,
key
,
objPtr
,
ignoreNotFound
)
_
,
_
,
_
,
err
:=
h
.
bodyAndExtractObj
(
ctx
,
key
,
objPtr
,
ignoreNotFound
)
return
err
return
err
}
}
...
@@ -306,7 +305,7 @@ func (h *etcdHelper) GetToList(ctx context.Context, key string, resourceVersion
...
@@ -306,7 +305,7 @@ func (h *etcdHelper) GetToList(ctx context.Context, key string, resourceVersion
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
key
=
h
.
prefixEtcdKey
(
key
)
key
=
path
.
Join
(
h
.
pathPrefix
,
key
)
startTime
:=
time
.
Now
()
startTime
:=
time
.
Now
()
trace
.
Step
(
"About to read etcd node"
)
trace
.
Step
(
"About to read etcd node"
)
...
@@ -389,7 +388,7 @@ func (h *etcdHelper) List(ctx context.Context, key string, resourceVersion strin
...
@@ -389,7 +388,7 @@ func (h *etcdHelper) List(ctx context.Context, key string, resourceVersion strin
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
key
=
h
.
prefixEtcdKey
(
key
)
key
=
path
.
Join
(
h
.
pathPrefix
,
key
)
startTime
:=
time
.
Now
()
startTime
:=
time
.
Now
()
trace
.
Step
(
"About to list etcd node"
)
trace
.
Step
(
"About to list etcd node"
)
nodes
,
index
,
err
:=
h
.
listEtcdNode
(
ctx
,
key
)
nodes
,
index
,
err
:=
h
.
listEtcdNode
(
ctx
,
key
)
...
@@ -446,7 +445,7 @@ func (h *etcdHelper) GuaranteedUpdate(
...
@@ -446,7 +445,7 @@ func (h *etcdHelper) GuaranteedUpdate(
// Panic is appropriate, because this is a programming error.
// Panic is appropriate, because this is a programming error.
panic
(
"need ptr to type"
)
panic
(
"need ptr to type"
)
}
}
key
=
h
.
prefixEtcdKey
(
key
)
key
=
path
.
Join
(
h
.
pathPrefix
,
key
)
for
{
for
{
obj
:=
reflect
.
New
(
v
.
Type
())
.
Interface
()
.
(
runtime
.
Object
)
obj
:=
reflect
.
New
(
v
.
Type
())
.
Interface
()
.
(
runtime
.
Object
)
origBody
,
node
,
res
,
err
:=
h
.
bodyAndExtractObj
(
ctx
,
key
,
obj
,
ignoreNotFound
)
origBody
,
node
,
res
,
err
:=
h
.
bodyAndExtractObj
(
ctx
,
key
,
obj
,
ignoreNotFound
)
...
@@ -540,13 +539,6 @@ func (h *etcdHelper) GuaranteedUpdate(
...
@@ -540,13 +539,6 @@ func (h *etcdHelper) GuaranteedUpdate(
}
}
}
}
func
(
h
*
etcdHelper
)
prefixEtcdKey
(
key
string
)
string
{
if
strings
.
HasPrefix
(
key
,
h
.
pathPrefix
)
{
return
key
}
return
path
.
Join
(
h
.
pathPrefix
,
key
)
}
// etcdCache defines interface used for caching objects stored in etcd. Objects are keyed by
// etcdCache defines interface used for caching objects stored in etcd. Objects are keyed by
// their Node.ModifiedIndex, which is unique across all types.
// their Node.ModifiedIndex, which is unique across all types.
// All implementations must be thread-safe.
// All implementations must be thread-safe.
...
...
pkg/storage/etcd/etcd_helper_test.go
View file @
b6e32965
...
@@ -24,7 +24,6 @@ import (
...
@@ -24,7 +24,6 @@ import (
"time"
"time"
etcd
"github.com/coreos/etcd/client"
etcd
"github.com/coreos/etcd/client"
"github.com/stretchr/testify/assert"
"golang.org/x/net/context"
"golang.org/x/net/context"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
...
@@ -99,8 +98,7 @@ func createPodList(t *testing.T, helper etcdHelper, list *api.PodList) error {
...
@@ -99,8 +98,7 @@ func createPodList(t *testing.T, helper etcdHelper, list *api.PodList) error {
func
TestList
(
t
*
testing
.
T
)
{
func
TestList
(
t
*
testing
.
T
)
{
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
key
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
helper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
etcdtest
.
PathPrefix
())
helper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
key
)
list
:=
api
.
PodList
{
list
:=
api
.
PodList
{
Items
:
[]
api
.
Pod
{
Items
:
[]
api
.
Pod
{
...
@@ -123,7 +121,7 @@ func TestList(t *testing.T) {
...
@@ -123,7 +121,7 @@ func TestList(t *testing.T) {
var
got
api
.
PodList
var
got
api
.
PodList
// TODO: a sorted filter function could be applied such implied
// TODO: a sorted filter function could be applied such implied
// ordering on the returned list doesn't matter.
// ordering on the returned list doesn't matter.
err
:=
helper
.
List
(
context
.
TODO
(),
key
,
""
,
storage
.
Everything
,
&
got
)
err
:=
helper
.
List
(
context
.
TODO
(),
"/"
,
""
,
storage
.
Everything
,
&
got
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Errorf
(
"Unexpected error %v"
,
err
)
t
.
Errorf
(
"Unexpected error %v"
,
err
)
}
}
...
@@ -136,8 +134,7 @@ func TestList(t *testing.T) {
...
@@ -136,8 +134,7 @@ func TestList(t *testing.T) {
func
TestListFiltered
(
t
*
testing
.
T
)
{
func
TestListFiltered
(
t
*
testing
.
T
)
{
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
key
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
helper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
etcdtest
.
PathPrefix
())
helper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
key
)
list
:=
api
.
PodList
{
list
:=
api
.
PodList
{
Items
:
[]
api
.
Pod
{
Items
:
[]
api
.
Pod
{
...
@@ -167,7 +164,7 @@ func TestListFiltered(t *testing.T) {
...
@@ -167,7 +164,7 @@ func TestListFiltered(t *testing.T) {
},
},
}
}
var
got
api
.
PodList
var
got
api
.
PodList
err
:=
helper
.
List
(
context
.
TODO
(),
key
,
""
,
p
,
&
got
)
err
:=
helper
.
List
(
context
.
TODO
(),
"/"
,
""
,
p
,
&
got
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Errorf
(
"Unexpected error %v"
,
err
)
t
.
Errorf
(
"Unexpected error %v"
,
err
)
}
}
...
@@ -181,13 +178,10 @@ func TestListFiltered(t *testing.T) {
...
@@ -181,13 +178,10 @@ func TestListFiltered(t *testing.T) {
func
TestListAcrossDirectories
(
t
*
testing
.
T
)
{
func
TestListAcrossDirectories
(
t
*
testing
.
T
)
{
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
rootkey
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
key1
:=
etcdtest
.
AddPrefix
(
"/some/key/directory1"
)
key2
:=
etcdtest
.
AddPrefix
(
"/some/key/directory2"
)
roothelper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
rootkey
)
roothelper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
etcdtest
.
PathPrefix
()
)
helper1
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
key1
)
helper1
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
etcdtest
.
PathPrefix
()
+
"/dir1"
)
helper2
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
key2
)
helper2
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
etcdtest
.
PathPrefix
()
+
"/dir2"
)
list
:=
api
.
PodList
{
list
:=
api
.
PodList
{
Items
:
[]
api
.
Pod
{
Items
:
[]
api
.
Pod
{
...
@@ -217,7 +211,7 @@ func TestListAcrossDirectories(t *testing.T) {
...
@@ -217,7 +211,7 @@ func TestListAcrossDirectories(t *testing.T) {
list
.
Items
[
2
]
=
*
returnedObj
list
.
Items
[
2
]
=
*
returnedObj
var
got
api
.
PodList
var
got
api
.
PodList
err
:=
roothelper
.
List
(
context
.
TODO
(),
rootkey
,
""
,
storage
.
Everything
,
&
got
)
err
:=
roothelper
.
List
(
context
.
TODO
(),
"/"
,
""
,
storage
.
Everything
,
&
got
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Errorf
(
"Unexpected error %v"
,
err
)
t
.
Errorf
(
"Unexpected error %v"
,
err
)
}
}
...
@@ -229,8 +223,8 @@ func TestListAcrossDirectories(t *testing.T) {
...
@@ -229,8 +223,8 @@ func TestListAcrossDirectories(t *testing.T) {
func
TestGet
(
t
*
testing
.
T
)
{
func
TestGet
(
t
*
testing
.
T
)
{
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
key
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
key
:=
"/some/key"
helper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
key
)
helper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
etcdtest
.
PathPrefix
()
)
expect
:=
api
.
Pod
{
expect
:=
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Spec
:
apitesting
.
DeepEqualSafePodSpec
(),
Spec
:
apitesting
.
DeepEqualSafePodSpec
(),
...
@@ -251,14 +245,13 @@ func TestGet(t *testing.T) {
...
@@ -251,14 +245,13 @@ func TestGet(t *testing.T) {
func
TestGetNotFoundErr
(
t
*
testing
.
T
)
{
func
TestGetNotFoundErr
(
t
*
testing
.
T
)
{
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
key
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
boguskey
:=
"/some/boguskey"
boguskey
:=
etcdtest
.
AddPrefix
(
"/some/boguskey"
)
helper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
etcdtest
.
PathPrefix
())
helper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
key
)
var
got
api
.
Pod
var
got
api
.
Pod
err
:=
helper
.
Get
(
context
.
TODO
(),
boguskey
,
""
,
&
got
,
false
)
err
:=
helper
.
Get
(
context
.
TODO
(),
boguskey
,
""
,
&
got
,
false
)
if
!
storage
.
IsNotFound
(
err
)
{
if
!
storage
.
IsNotFound
(
err
)
{
t
.
Errorf
(
"Unexpected reponse on key=%v, err=%v"
,
key
,
err
)
t
.
Errorf
(
"Unexpected reponse on key=%v, err=%v"
,
bogus
key
,
err
)
}
}
}
}
...
@@ -304,8 +297,8 @@ func TestGuaranteedUpdate(t *testing.T) {
...
@@ -304,8 +297,8 @@ func TestGuaranteedUpdate(t *testing.T) {
_
,
codec
:=
testScheme
(
t
)
_
,
codec
:=
testScheme
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
key
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
key
:=
"/some/key"
helper
:=
newEtcdHelper
(
server
.
Client
,
codec
,
key
)
helper
:=
newEtcdHelper
(
server
.
Client
,
codec
,
etcdtest
.
PathPrefix
()
)
obj
:=
&
storagetesting
.
TestResource
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Value
:
1
}
obj
:=
&
storagetesting
.
TestResource
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Value
:
1
}
err
:=
helper
.
GuaranteedUpdate
(
context
.
TODO
(),
key
,
&
storagetesting
.
TestResource
{},
true
,
nil
,
storage
.
SimpleUpdate
(
func
(
in
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
err
:=
helper
.
GuaranteedUpdate
(
context
.
TODO
(),
key
,
&
storagetesting
.
TestResource
{},
true
,
nil
,
storage
.
SimpleUpdate
(
func
(
in
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
...
@@ -349,8 +342,8 @@ func TestGuaranteedUpdateNoChange(t *testing.T) {
...
@@ -349,8 +342,8 @@ func TestGuaranteedUpdateNoChange(t *testing.T) {
_
,
codec
:=
testScheme
(
t
)
_
,
codec
:=
testScheme
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
key
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
key
:=
"/some/key"
helper
:=
newEtcdHelper
(
server
.
Client
,
codec
,
key
)
helper
:=
newEtcdHelper
(
server
.
Client
,
codec
,
etcdtest
.
PathPrefix
()
)
obj
:=
&
storagetesting
.
TestResource
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Value
:
1
}
obj
:=
&
storagetesting
.
TestResource
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Value
:
1
}
err
:=
helper
.
GuaranteedUpdate
(
context
.
TODO
(),
key
,
&
storagetesting
.
TestResource
{},
true
,
nil
,
storage
.
SimpleUpdate
(
func
(
in
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
err
:=
helper
.
GuaranteedUpdate
(
context
.
TODO
(),
key
,
&
storagetesting
.
TestResource
{},
true
,
nil
,
storage
.
SimpleUpdate
(
func
(
in
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
...
@@ -379,8 +372,8 @@ func TestGuaranteedUpdateKeyNotFound(t *testing.T) {
...
@@ -379,8 +372,8 @@ func TestGuaranteedUpdateKeyNotFound(t *testing.T) {
_
,
codec
:=
testScheme
(
t
)
_
,
codec
:=
testScheme
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
key
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
key
:=
"/some/key"
helper
:=
newEtcdHelper
(
server
.
Client
,
codec
,
key
)
helper
:=
newEtcdHelper
(
server
.
Client
,
codec
,
etcdtest
.
PathPrefix
()
)
// Create a new node.
// Create a new node.
obj
:=
&
storagetesting
.
TestResource
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Value
:
1
}
obj
:=
&
storagetesting
.
TestResource
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
},
Value
:
1
}
...
@@ -406,7 +399,7 @@ func TestGuaranteedUpdate_CreateCollision(t *testing.T) {
...
@@ -406,7 +399,7 @@ func TestGuaranteedUpdate_CreateCollision(t *testing.T) {
_
,
codec
:=
testScheme
(
t
)
_
,
codec
:=
testScheme
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
key
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
key
:=
"/some/key"
helper
:=
newEtcdHelper
(
server
.
Client
,
codec
,
etcdtest
.
PathPrefix
())
helper
:=
newEtcdHelper
(
server
.
Client
,
codec
,
etcdtest
.
PathPrefix
())
const
concurrency
=
10
const
concurrency
=
10
...
@@ -471,27 +464,6 @@ func TestGuaranteedUpdateUIDMismatch(t *testing.T) {
...
@@ -471,27 +464,6 @@ func TestGuaranteedUpdateUIDMismatch(t *testing.T) {
}
}
}
}
func
TestPrefixEtcdKey
(
t
*
testing
.
T
)
{
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
prefix
:=
path
.
Join
(
"/"
,
etcdtest
.
PathPrefix
())
helper
:=
newEtcdHelper
(
server
.
Client
,
testapi
.
Default
.
Codec
(),
prefix
)
baseKey
:=
"/some/key"
// Verify prefix is added
keyBefore
:=
baseKey
keyAfter
:=
helper
.
prefixEtcdKey
(
keyBefore
)
assert
.
Equal
(
t
,
keyAfter
,
path
.
Join
(
prefix
,
baseKey
),
"Prefix incorrectly added by EtcdHelper"
)
// Verify prefix is not added
keyBefore
=
path
.
Join
(
prefix
,
baseKey
)
keyAfter
=
helper
.
prefixEtcdKey
(
keyBefore
)
assert
.
Equal
(
t
,
keyBefore
,
keyAfter
,
"Prefix incorrectly added by EtcdHelper"
)
}
func
TestDeleteUIDMismatch
(
t
*
testing
.
T
)
{
func
TestDeleteUIDMismatch
(
t
*
testing
.
T
)
{
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
...
...
pkg/storage/etcd/etcd_watcher_test.go
View file @
b6e32965
...
@@ -341,7 +341,7 @@ func makeSubsets(ip string, port int) []api.EndpointSubset {
...
@@ -341,7 +341,7 @@ func makeSubsets(ip string, port int) []api.EndpointSubset {
func
TestWatchEtcdState
(
t
*
testing
.
T
)
{
func
TestWatchEtcdState
(
t
*
testing
.
T
)
{
codec
:=
testapi
.
Default
.
Codec
()
codec
:=
testapi
.
Default
.
Codec
()
key
:=
etcdtest
.
AddPrefix
(
"/somekey/foo"
)
key
:=
"/somekey/foo"
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
...
@@ -399,7 +399,7 @@ func TestWatchFromZeroIndex(t *testing.T) {
...
@@ -399,7 +399,7 @@ func TestWatchFromZeroIndex(t *testing.T) {
codec
:=
testapi
.
Default
.
Codec
()
codec
:=
testapi
.
Default
.
Codec
()
pod
:=
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
}}
pod
:=
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
}}
key
:=
etcdtest
.
AddPrefix
(
"/somekey/foo"
)
key
:=
"/somekey/foo"
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
...
@@ -458,18 +458,18 @@ func TestWatchFromZeroIndex(t *testing.T) {
...
@@ -458,18 +458,18 @@ func TestWatchFromZeroIndex(t *testing.T) {
func
TestWatchListFromZeroIndex
(
t
*
testing
.
T
)
{
func
TestWatchListFromZeroIndex
(
t
*
testing
.
T
)
{
codec
:=
testapi
.
Default
.
Codec
()
codec
:=
testapi
.
Default
.
Codec
()
key
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
prefix
:=
"/some/key"
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
h
:=
newEtcdHelper
(
server
.
Client
,
codec
,
key
)
h
:=
newEtcdHelper
(
server
.
Client
,
codec
,
prefix
)
watching
,
err
:=
h
.
WatchList
(
context
.
TODO
(),
key
,
"0"
,
storage
.
Everything
)
watching
,
err
:=
h
.
WatchList
(
context
.
TODO
(),
"/"
,
"0"
,
storage
.
Everything
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"Unexpected error: %v"
,
err
)
t
.
Fatalf
(
"Unexpected error: %v"
,
err
)
}
}
defer
watching
.
Stop
()
defer
watching
.
Stop
()
// creates
key/foo which should trigger the WatchList for "key
"
// creates
foo which should trigger the WatchList for "/
"
pod
:=
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
}}
pod
:=
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
}}
err
=
h
.
Create
(
context
.
TODO
(),
pod
.
Name
,
pod
,
pod
,
0
)
err
=
h
.
Create
(
context
.
TODO
(),
pod
.
Name
,
pod
,
pod
,
0
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -489,7 +489,7 @@ func TestWatchListFromZeroIndex(t *testing.T) {
...
@@ -489,7 +489,7 @@ func TestWatchListFromZeroIndex(t *testing.T) {
func
TestWatchListIgnoresRootKey
(
t
*
testing
.
T
)
{
func
TestWatchListIgnoresRootKey
(
t
*
testing
.
T
)
{
codec
:=
testapi
.
Default
.
Codec
()
codec
:=
testapi
.
Default
.
Codec
()
pod
:=
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
}}
pod
:=
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo"
}}
key
:=
etcdtest
.
AddPrefix
(
"/some/key"
)
key
:=
"/some/key"
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
server
:=
etcdtesting
.
NewEtcdTestClientServer
(
t
)
defer
server
.
Terminate
(
t
)
defer
server
.
Terminate
(
t
)
h
:=
newEtcdHelper
(
server
.
Client
,
codec
,
key
)
h
:=
newEtcdHelper
(
server
.
Client
,
codec
,
key
)
...
...
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