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
45b3f6a1
Commit
45b3f6a1
authored
Apr 06, 2017
by
shashidharatd
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor leader election test code to remove redundant code
parent
2899f47b
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
77 additions
and
278 deletions
+77
-278
leaderelection_test.go
pkg/client/leaderelection/leaderelection_test.go
+77
-278
No files found.
pkg/client/leaderelection/leaderelection_test.go
View file @
45b3f6a1
...
@@ -32,8 +32,24 @@ import (
...
@@ -32,8 +32,24 @@ import (
rl
"k8s.io/kubernetes/pkg/client/leaderelection/resourcelock"
rl
"k8s.io/kubernetes/pkg/client/leaderelection/resourcelock"
)
)
func
createLockObject
(
objectType
string
,
objectMeta
metav1
.
ObjectMeta
)
(
obj
runtime
.
Object
)
{
switch
objectType
{
case
"endpoints"
:
obj
=
&
v1
.
Endpoints
{
ObjectMeta
:
objectMeta
}
case
"configmaps"
:
obj
=
&
v1
.
ConfigMap
{
ObjectMeta
:
objectMeta
}
default
:
panic
(
"unexpected objType:"
+
objectType
)
}
return
}
// Will test leader election using endpoints as the resource
// Will test leader election using endpoints as the resource
func
TestTryAcquireOrRenewEndpoints
(
t
*
testing
.
T
)
{
func
TestTryAcquireOrRenewEndpoints
(
t
*
testing
.
T
)
{
testTryAcquireOrRenew
(
t
,
"endpoints"
)
}
func
testTryAcquireOrRenew
(
t
*
testing
.
T
,
objectType
string
)
{
future
:=
time
.
Now
()
.
Add
(
1000
*
time
.
Hour
)
future
:=
time
.
Now
()
.
Add
(
1000
*
time
.
Hour
)
past
:=
time
.
Now
()
.
Add
(
-
1000
*
time
.
Hour
)
past
:=
time
.
Now
()
.
Add
(
-
1000
*
time
.
Hour
)
...
@@ -49,7 +65,7 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
...
@@ -49,7 +65,7 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
transitionLeader
bool
transitionLeader
bool
outHolder
string
outHolder
string
}{
}{
// acquire from no
endpoints
// acquire from no
object
{
{
reactors
:
[]
struct
{
reactors
:
[]
struct
{
verb
string
verb
string
...
@@ -64,14 +80,14 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
...
@@ -64,14 +80,14 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
{
{
verb
:
"create"
,
verb
:
"create"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
()
.
(
*
v1
.
Endpoints
)
,
nil
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
(),
nil
},
},
},
},
},
},
expectSuccess
:
true
,
expectSuccess
:
true
,
outHolder
:
"baz"
,
outHolder
:
"baz"
,
},
},
// acquire from unled
endpoints
// acquire from unled
object
{
{
reactors
:
[]
struct
{
reactors
:
[]
struct
{
verb
string
verb
string
...
@@ -80,18 +96,17 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
...
@@ -80,18 +96,17 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
{
{
verb
:
"get"
,
verb
:
"get"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
&
v1
.
Endpoints
{
objectMeta
:=
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
action
.
GetNamespace
(),
Namespace
:
action
.
GetNamespace
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
}
},
return
true
,
createLockObject
(
objectType
,
objectMeta
),
nil
},
nil
},
},
},
},
{
{
verb
:
"update"
,
verb
:
"update"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
()
.
(
*
v1
.
Endpoints
)
,
nil
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
(),
nil
},
},
},
},
},
},
...
@@ -100,7 +115,7 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
...
@@ -100,7 +115,7 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
transitionLeader
:
true
,
transitionLeader
:
true
,
outHolder
:
"baz"
,
outHolder
:
"baz"
,
},
},
// acquire from led, unacked
endpoints
// acquire from led, unacked
object
{
{
reactors
:
[]
struct
{
reactors
:
[]
struct
{
verb
string
verb
string
...
@@ -109,21 +124,20 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
...
@@ -109,21 +124,20 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
{
{
verb
:
"get"
,
verb
:
"get"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
&
v1
.
Endpoints
{
objectMeta
:=
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
action
.
GetNamespace
(),
Namespace
:
action
.
GetNamespace
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
Annotations
:
map
[
string
]
string
{
Annotations
:
map
[
string
]
string
{
rl
.
LeaderElectionRecordAnnotationKey
:
`{"holderIdentity":"bing"}`
,
rl
.
LeaderElectionRecordAnnotationKey
:
`{"holderIdentity":"bing"}`
,
},
},
},
},
nil
}
return
true
,
createLockObject
(
objectType
,
objectMeta
),
nil
},
},
},
},
{
{
verb
:
"update"
,
verb
:
"update"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
()
.
(
*
v1
.
Endpoints
)
,
nil
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
(),
nil
},
},
},
},
},
},
...
@@ -134,7 +148,7 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
...
@@ -134,7 +148,7 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
transitionLeader
:
true
,
transitionLeader
:
true
,
outHolder
:
"baz"
,
outHolder
:
"baz"
,
},
},
// don't acquire from led, acked
endpoints
// don't acquire from led, acked
object
{
{
reactors
:
[]
struct
{
reactors
:
[]
struct
{
verb
string
verb
string
...
@@ -143,15 +157,14 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
...
@@ -143,15 +157,14 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
{
{
verb
:
"get"
,
verb
:
"get"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
&
v1
.
Endpoints
{
objectMeta
:=
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
action
.
GetNamespace
(),
Namespace
:
action
.
GetNamespace
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
Annotations
:
map
[
string
]
string
{
Annotations
:
map
[
string
]
string
{
rl
.
LeaderElectionRecordAnnotationKey
:
`{"holderIdentity":"bing"}`
,
rl
.
LeaderElectionRecordAnnotationKey
:
`{"holderIdentity":"bing"}`
,
},
},
},
},
nil
}
return
true
,
createLockObject
(
objectType
,
objectMeta
),
nil
},
},
},
},
},
},
...
@@ -160,7 +173,7 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
...
@@ -160,7 +173,7 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
expectSuccess
:
false
,
expectSuccess
:
false
,
outHolder
:
"bing"
,
outHolder
:
"bing"
,
},
},
// renew already acquired
endpoints
// renew already acquired
object
{
{
reactors
:
[]
struct
{
reactors
:
[]
struct
{
verb
string
verb
string
...
@@ -169,21 +182,20 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
...
@@ -169,21 +182,20 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
{
{
verb
:
"get"
,
verb
:
"get"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
&
v1
.
Endpoints
{
objectMeta
:=
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
action
.
GetNamespace
(),
Namespace
:
action
.
GetNamespace
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
Annotations
:
map
[
string
]
string
{
Annotations
:
map
[
string
]
string
{
rl
.
LeaderElectionRecordAnnotationKey
:
`{"holderIdentity":"baz"}`
,
rl
.
LeaderElectionRecordAnnotationKey
:
`{"holderIdentity":"baz"}`
,
},
},
},
},
nil
}
return
true
,
createLockObject
(
objectType
,
objectMeta
),
nil
},
},
},
},
{
{
verb
:
"update"
,
verb
:
"update"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
()
.
(
*
v1
.
Endpoints
)
,
nil
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
(),
nil
},
},
},
},
},
},
...
@@ -200,247 +212,39 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
...
@@ -200,247 +212,39 @@ func TestTryAcquireOrRenewEndpoints(t *testing.T) {
var
wg
sync
.
WaitGroup
var
wg
sync
.
WaitGroup
wg
.
Add
(
1
)
wg
.
Add
(
1
)
var
reportedLeader
string
var
reportedLeader
string
var
lock
rl
.
Interface
lock
:=
rl
.
EndpointsLock
{
objectMeta
:=
metav1
.
ObjectMeta
{
Namespace
:
"foo"
,
Name
:
"bar"
}
EndpointsMeta
:
metav1
.
ObjectMeta
{
Namespace
:
"foo"
,
Name
:
"bar"
},
resourceLockConfig
:=
rl
.
ResourceLockConfig
{
LockConfig
:
rl
.
ResourceLockConfig
{
Identity
:
"baz"
,
Identity
:
"baz"
,
EventRecorder
:
&
record
.
FakeRecorder
{},
EventRecorder
:
&
record
.
FakeRecorder
{},
},
}
lec
:=
LeaderElectionConfig
{
Lock
:
&
lock
,
LeaseDuration
:
10
*
time
.
Second
,
Callbacks
:
LeaderCallbacks
{
OnNewLeader
:
func
(
l
string
)
{
defer
wg
.
Done
()
reportedLeader
=
l
},
},
}
}
c
:=
&
fakeclientset
.
Clientset
{
Fake
:
core
.
Fake
{}}
c
:=
&
fakeclientset
.
Clientset
{
Fake
:
core
.
Fake
{}}
for
_
,
reactor
:=
range
test
.
reactors
{
for
_
,
reactor
:=
range
test
.
reactors
{
c
.
AddReactor
(
reactor
.
verb
,
"endpoints"
,
reactor
.
reaction
)
c
.
AddReactor
(
reactor
.
verb
,
objectType
,
reactor
.
reaction
)
}
}
c
.
AddReactor
(
"*"
,
"*"
,
func
(
action
core
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
c
.
AddReactor
(
"*"
,
"*"
,
func
(
action
core
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
t
.
Errorf
(
"[%v] unreachable action. testclient called too many times: %+v"
,
i
,
action
)
t
.
Errorf
(
"[%v] unreachable action. testclient called too many times: %+v"
,
i
,
action
)
return
true
,
nil
,
fmt
.
Errorf
(
"un
c
reachable action"
)
return
true
,
nil
,
fmt
.
Errorf
(
"unreachable action"
)
})
})
le
:=
&
LeaderElector
{
switch
objectType
{
config
:
lec
,
case
"endpoints"
:
observedRecord
:
test
.
observedRecord
,
lock
=
&
rl
.
EndpointsLock
{
observedTime
:
test
.
observedTime
,
EndpointsMeta
:
objectMeta
,
}
LockConfig
:
resourceLockConfig
,
lock
.
Client
=
c
Client
:
c
,
}
if
test
.
expectSuccess
!=
le
.
tryAcquireOrRenew
()
{
case
"configmaps"
:
t
.
Errorf
(
"[%v]unexpected result of tryAcquireOrRenew: [succeded=%v]"
,
i
,
!
test
.
expectSuccess
)
lock
=
&
rl
.
ConfigMapLock
{
}
ConfigMapMeta
:
objectMeta
,
LockConfig
:
resourceLockConfig
,
le
.
observedRecord
.
AcquireTime
=
metav1
.
Time
{}
Client
:
c
,
le
.
observedRecord
.
RenewTime
=
metav1
.
Time
{}
}
if
le
.
observedRecord
.
HolderIdentity
!=
test
.
outHolder
{
t
.
Errorf
(
"[%v]expected holder:
\n\t
%+v
\n
got:
\n\t
%+v"
,
i
,
test
.
outHolder
,
le
.
observedRecord
.
HolderIdentity
)
}
if
len
(
test
.
reactors
)
!=
len
(
c
.
Actions
())
{
t
.
Errorf
(
"[%v]wrong number of api interactions"
,
i
)
}
if
test
.
transitionLeader
&&
le
.
observedRecord
.
LeaderTransitions
!=
1
{
t
.
Errorf
(
"[%v]leader should have transitioned but did not"
,
i
)
}
if
!
test
.
transitionLeader
&&
le
.
observedRecord
.
LeaderTransitions
!=
0
{
t
.
Errorf
(
"[%v]leader should not have transitioned but did"
,
i
)
}
le
.
maybeReportTransition
()
wg
.
Wait
()
if
reportedLeader
!=
test
.
outHolder
{
t
.
Errorf
(
"[%v]reported leader was not the new leader. expected %q, got %q"
,
i
,
test
.
outHolder
,
reportedLeader
)
}
}
}
// Will test leader election using configmap as the resource
func
TestTryAcquireOrRenewConfigMap
(
t
*
testing
.
T
)
{
future
:=
time
.
Now
()
.
Add
(
1000
*
time
.
Hour
)
past
:=
time
.
Now
()
.
Add
(
-
1000
*
time
.
Hour
)
tests
:=
[]
struct
{
observedRecord
rl
.
LeaderElectionRecord
observedTime
time
.
Time
reactors
[]
struct
{
verb
string
reaction
core
.
ReactionFunc
}
expectSuccess
bool
transitionLeader
bool
outHolder
string
}{
// acquire from no onfigmap
{
reactors
:
[]
struct
{
verb
string
reaction
core
.
ReactionFunc
}{
{
verb
:
"get"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
nil
,
errors
.
NewNotFound
(
action
.
(
core
.
GetAction
)
.
GetResource
()
.
GroupResource
(),
action
.
(
core
.
GetAction
)
.
GetName
())
},
},
{
verb
:
"create"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
()
.
(
*
v1
.
ConfigMap
),
nil
},
},
},
expectSuccess
:
true
,
outHolder
:
"baz"
,
},
// acquire from unled configmap
{
reactors
:
[]
struct
{
verb
string
reaction
core
.
ReactionFunc
}{
{
verb
:
"get"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
&
v1
.
ConfigMap
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
action
.
GetNamespace
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
},
},
nil
},
},
{
verb
:
"update"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
()
.
(
*
v1
.
ConfigMap
),
nil
},
},
},
expectSuccess
:
true
,
transitionLeader
:
true
,
outHolder
:
"baz"
,
},
// acquire from led, unacked configmap
{
reactors
:
[]
struct
{
verb
string
reaction
core
.
ReactionFunc
}{
{
verb
:
"get"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
&
v1
.
ConfigMap
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
action
.
GetNamespace
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
Annotations
:
map
[
string
]
string
{
rl
.
LeaderElectionRecordAnnotationKey
:
`{"holderIdentity":"bing"}`
,
},
},
},
nil
},
},
{
verb
:
"update"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
()
.
(
*
v1
.
ConfigMap
),
nil
},
},
},
observedRecord
:
rl
.
LeaderElectionRecord
{
HolderIdentity
:
"bing"
},
observedTime
:
past
,
expectSuccess
:
true
,
transitionLeader
:
true
,
outHolder
:
"baz"
,
},
// don't acquire from led, acked configmap
{
reactors
:
[]
struct
{
verb
string
reaction
core
.
ReactionFunc
}{
{
verb
:
"get"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
&
v1
.
ConfigMap
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
action
.
GetNamespace
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
Annotations
:
map
[
string
]
string
{
rl
.
LeaderElectionRecordAnnotationKey
:
`{"holderIdentity":"bing"}`
,
},
},
},
nil
},
},
},
observedTime
:
future
,
expectSuccess
:
false
,
outHolder
:
"bing"
,
},
// renew already acquired configmap
{
reactors
:
[]
struct
{
verb
string
reaction
core
.
ReactionFunc
}{
{
verb
:
"get"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
&
v1
.
ConfigMap
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
action
.
GetNamespace
(),
Name
:
action
.
(
core
.
GetAction
)
.
GetName
(),
Annotations
:
map
[
string
]
string
{
rl
.
LeaderElectionRecordAnnotationKey
:
`{"holderIdentity":"baz"}`
,
},
},
},
nil
},
},
{
verb
:
"update"
,
reaction
:
func
(
action
core
.
Action
)
(
handled
bool
,
ret
runtime
.
Object
,
err
error
)
{
return
true
,
action
.
(
core
.
CreateAction
)
.
GetObject
()
.
(
*
v1
.
ConfigMap
),
nil
},
},
},
observedTime
:
future
,
observedRecord
:
rl
.
LeaderElectionRecord
{
HolderIdentity
:
"baz"
},
expectSuccess
:
true
,
outHolder
:
"baz"
,
},
}
for
i
,
test
:=
range
tests
{
// OnNewLeader is called async so we have to wait for it.
var
wg
sync
.
WaitGroup
wg
.
Add
(
1
)
var
reportedLeader
string
lock
:=
rl
.
ConfigMapLock
{
ConfigMapMeta
:
metav1
.
ObjectMeta
{
Namespace
:
"foo"
,
Name
:
"bar"
},
LockConfig
:
rl
.
ResourceLockConfig
{
Identity
:
"baz"
,
EventRecorder
:
&
record
.
FakeRecorder
{},
},
}
}
lec
:=
LeaderElectionConfig
{
lec
:=
LeaderElectionConfig
{
Lock
:
&
lock
,
Lock
:
lock
,
LeaseDuration
:
10
*
time
.
Second
,
LeaseDuration
:
10
*
time
.
Second
,
Callbacks
:
LeaderCallbacks
{
Callbacks
:
LeaderCallbacks
{
OnNewLeader
:
func
(
l
string
)
{
OnNewLeader
:
func
(
l
string
)
{
...
@@ -449,21 +253,11 @@ func TestTryAcquireOrRenewConfigMap(t *testing.T) {
...
@@ -449,21 +253,11 @@ func TestTryAcquireOrRenewConfigMap(t *testing.T) {
},
},
},
},
}
}
c
:=
&
fakeclientset
.
Clientset
{
Fake
:
core
.
Fake
{}}
for
_
,
reactor
:=
range
test
.
reactors
{
c
.
AddReactor
(
reactor
.
verb
,
"configmaps"
,
reactor
.
reaction
)
}
c
.
AddReactor
(
"*"
,
"*"
,
func
(
action
core
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
t
.
Errorf
(
"[%v] unreachable action. testclient called too many times: %+v"
,
i
,
action
)
return
true
,
nil
,
fmt
.
Errorf
(
"uncreachable action"
)
})
le
:=
&
LeaderElector
{
le
:=
&
LeaderElector
{
config
:
lec
,
config
:
lec
,
observedRecord
:
test
.
observedRecord
,
observedRecord
:
test
.
observedRecord
,
observedTime
:
test
.
observedTime
,
observedTime
:
test
.
observedTime
,
}
}
lock
.
Client
=
c
if
test
.
expectSuccess
!=
le
.
tryAcquireOrRenew
()
{
if
test
.
expectSuccess
!=
le
.
tryAcquireOrRenew
()
{
t
.
Errorf
(
"[%v]unexpected result of tryAcquireOrRenew: [succeded=%v]"
,
i
,
!
test
.
expectSuccess
)
t
.
Errorf
(
"[%v]unexpected result of tryAcquireOrRenew: [succeded=%v]"
,
i
,
!
test
.
expectSuccess
)
...
@@ -491,3 +285,8 @@ func TestTryAcquireOrRenewConfigMap(t *testing.T) {
...
@@ -491,3 +285,8 @@ func TestTryAcquireOrRenewConfigMap(t *testing.T) {
}
}
}
}
}
}
// Will test leader election using configmap as the resource
func
TestTryAcquireOrRenewConfigMaps
(
t
*
testing
.
T
)
{
testTryAcquireOrRenew
(
t
,
"configmaps"
)
}
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