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
36c34af2
Commit
36c34af2
authored
Jul 01, 2016
by
Matt Liggett
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cluster type
parent
5f01e8d3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
29 deletions
+33
-29
federated-service.go
test/e2e/federated-service.go
+33
-29
No files found.
test/e2e/federated-service.go
View file @
36c34af2
...
...
@@ -62,9 +62,13 @@ var FederatedServiceLabels = map[string]string{
"foo"
:
"bar"
,
}
type
cluster
struct
{
*
release_1_3
.
Clientset
}
var
_
=
framework
.
KubeDescribe
(
"[Feature:Federation]"
,
func
()
{
f
:=
framework
.
NewDefaultFederatedFramework
(
"federated-service"
)
var
cluster
ClientSets
[]
*
release_1_3
.
Clientset
var
cluster
s
[]
cluster
var
clusterNamespaceCreated
[]
bool
// Did we need to create a new namespace in each of the above clusters? If so, we should delete it.
var
federationName
string
...
...
@@ -106,7 +110,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
}
framework
.
Logf
(
"%d clusters are Ready"
,
len
(
contexts
))
cluster
ClientSets
=
make
([]
*
release_1_3
.
Clientset
,
len
(
clusterList
.
Items
))
cluster
s
=
make
([]
cluster
,
len
(
clusterList
.
Items
))
for
i
,
cluster
:=
range
clusterList
.
Items
{
framework
.
Logf
(
"Creating a clientset for the cluster %s"
,
cluster
.
Name
)
...
...
@@ -126,19 +130,19 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
cfg
.
QPS
=
KubeAPIQPS
cfg
.
Burst
=
KubeAPIBurst
clset
:=
release_1_3
.
NewForConfigOrDie
(
restclient
.
AddUserAgent
(
cfg
,
UserAgentName
))
cluster
ClientSets
[
i
]
=
clset
cluster
s
[
i
]
.
Clientset
=
clset
}
clusterNamespaceCreated
=
make
([]
bool
,
len
(
cluster
ClientSet
s
))
for
i
,
c
s
:=
range
clusterClientSet
s
{
clusterNamespaceCreated
=
make
([]
bool
,
len
(
clusters
))
for
i
,
c
:=
range
cluster
s
{
// The e2e Framework created the required namespace in one of the clusters, but we need to create it in all the others, if it doesn't yet exist.
if
_
,
err
:=
c
s
.
Core
()
.
Namespaces
()
.
Get
(
f
.
Namespace
.
Name
);
errors
.
IsNotFound
(
err
)
{
if
_
,
err
:=
c
.
Clientset
.
Core
()
.
Namespaces
()
.
Get
(
f
.
Namespace
.
Name
);
errors
.
IsNotFound
(
err
)
{
ns
:=
&
v1
.
Namespace
{
ObjectMeta
:
v1
.
ObjectMeta
{
Name
:
f
.
Namespace
.
Name
,
},
}
_
,
err
:=
c
s
.
Core
()
.
Namespaces
()
.
Create
(
ns
)
_
,
err
:=
c
.
Clientset
.
Core
()
.
Namespaces
()
.
Create
(
ns
)
if
err
==
nil
{
clusterNamespaceCreated
[
i
]
=
true
}
...
...
@@ -151,10 +155,10 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
})
AfterEach
(
func
()
{
for
i
,
c
s
:=
range
clusterClientSet
s
{
for
i
,
c
:=
range
cluster
s
{
if
clusterNamespaceCreated
[
i
]
{
if
_
,
err
:=
c
s
.
Core
()
.
Namespaces
()
.
Get
(
f
.
Namespace
.
Name
);
!
errors
.
IsNotFound
(
err
)
{
err
:=
c
s
.
Core
()
.
Namespaces
()
.
Delete
(
f
.
Namespace
.
Name
,
&
api
.
DeleteOptions
{})
if
_
,
err
:=
c
.
Clientset
.
Core
()
.
Namespaces
()
.
Get
(
f
.
Namespace
.
Name
);
!
errors
.
IsNotFound
(
err
)
{
err
:=
c
.
Clientset
.
Core
()
.
Namespaces
()
.
Delete
(
f
.
Namespace
.
Name
,
&
api
.
DeleteOptions
{})
framework
.
ExpectNoError
(
err
,
"Couldn't delete the namespace %s in cluster [%d]: %v"
,
f
.
Namespace
.
Name
,
i
,
err
)
}
framework
.
Logf
(
"Namespace %s deleted in cluster [%d]"
,
f
.
Namespace
.
Name
,
i
)
...
...
@@ -199,7 +203,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
err
:=
f
.
FederationClientset_1_3
.
Services
(
f
.
Namespace
.
Name
)
.
Delete
(
service
.
Name
,
&
api
.
DeleteOptions
{})
framework
.
ExpectNoError
(
err
,
"Error deleting service %q in namespace %q"
,
service
.
Name
,
f
.
Namespace
.
Name
)
}()
waitForServiceShardsOrFail
(
f
.
Namespace
.
Name
,
service
,
cluster
ClientSet
s
,
nil
)
waitForServiceShardsOrFail
(
f
.
Namespace
.
Name
,
service
,
clusters
,
nil
)
})
})
...
...
@@ -212,15 +216,15 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
BeforeEach
(
func
()
{
framework
.
SkipUnlessFederated
(
f
.
Client
)
backendPods
=
createBackendPodsOrFail
(
cluster
ClientSet
s
,
f
.
Namespace
.
Name
,
FederatedServicePodName
)
backendPods
=
createBackendPodsOrFail
(
clusters
,
f
.
Namespace
.
Name
,
FederatedServicePodName
)
service
=
createServiceOrFail
(
f
.
FederationClientset_1_3
,
f
.
Namespace
.
Name
)
waitForServiceShardsOrFail
(
f
.
Namespace
.
Name
,
service
,
cluster
ClientSet
s
,
nil
)
waitForServiceShardsOrFail
(
f
.
Namespace
.
Name
,
service
,
clusters
,
nil
)
})
AfterEach
(
func
()
{
framework
.
SkipUnlessFederated
(
f
.
Client
)
if
backendPods
!=
nil
{
deleteBackendPodsOrFail
(
cluster
ClientSet
s
,
f
.
Namespace
.
Name
,
backendPods
)
deleteBackendPodsOrFail
(
clusters
,
f
.
Namespace
.
Name
,
backendPods
)
backendPods
=
nil
}
else
{
By
(
"No backend pods to delete. BackendPods is nil."
)
...
...
@@ -257,7 +261,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
framework
.
SkipUnlessFederated
(
f
.
Client
)
// Delete all the backend pods from the shard which is local to the discovery pod.
deleteBackendPodsOrFail
([]
*
release_1_3
.
Clientset
{
f
.
Clientset_1_3
},
f
.
Namespace
.
Name
,
[]
*
v1
.
Pod
{
backendPods
[
0
]})
deleteBackendPodsOrFail
([]
cluster
{{
f
.
Clientset_1_3
}
},
f
.
Namespace
.
Name
,
[]
*
v1
.
Pod
{
backendPods
[
0
]})
})
...
...
@@ -345,19 +349,19 @@ func waitForServiceOrFail(clientset *release_1_3.Clientset, namespace string, se
If presentInCluster[n] is true, then wait for service shard to exist in the cluster specifid in clientsets[n]
If presentInCluster[n] is false, then wait for service shard to not exist in the cluster specifid in clientsets[n]
*/
func
waitForServiceShardsOrFail
(
namespace
string
,
service
*
v1
.
Service
,
cl
ientsets
[]
*
release_1_3
.
Clientset
,
presentInCluster
[]
bool
)
{
func
waitForServiceShardsOrFail
(
namespace
string
,
service
*
v1
.
Service
,
cl
usters
[]
cluster
,
presentInCluster
[]
bool
)
{
if
presentInCluster
!=
nil
{
Expect
(
len
(
presentInCluster
))
.
To
(
Equal
(
len
(
cl
ientset
s
)),
"Internal error: Number of presence flags does not equal number of clients/clusters"
)
Expect
(
len
(
presentInCluster
))
.
To
(
Equal
(
len
(
cl
uster
s
)),
"Internal error: Number of presence flags does not equal number of clients/clusters"
)
}
framework
.
Logf
(
"Waiting for service %q in %d clusters"
,
service
.
Name
,
len
(
cl
ientset
s
))
for
i
,
c
lientset
:=
range
clientset
s
{
framework
.
Logf
(
"Waiting for service %q in %d clusters"
,
service
.
Name
,
len
(
cl
uster
s
))
for
i
,
c
:=
range
cluster
s
{
var
present
bool
// Should the service be present or absent in this cluster?
if
presentInCluster
==
nil
{
present
=
true
}
else
{
present
=
presentInCluster
[
i
]
}
waitForServiceOrFail
(
clientset
,
namespace
,
service
,
present
,
FederatedServiceTimeout
)
waitForServiceOrFail
(
c
.
C
lientset
,
namespace
,
service
,
present
,
FederatedServiceTimeout
)
}
}
...
...
@@ -484,7 +488,7 @@ func discoverService(f *framework.Framework, name string, exists bool, podName s
createBackendPodsOrFail creates one pod in each cluster, and returns the created pods (in the same order as clusterClientSets).
If creation of any pod fails, the test fails (possibly with a partially created set of pods). No retries are attempted.
*/
func
createBackendPodsOrFail
(
cluster
ClientSets
[]
*
release_1_3
.
Clientset
,
namespace
string
,
name
string
)
[]
*
v1
.
Pod
{
func
createBackendPodsOrFail
(
cluster
s
[]
cluster
,
namespace
string
,
name
string
)
[]
*
v1
.
Pod
{
pod
:=
&
v1
.
Pod
{
ObjectMeta
:
v1
.
ObjectMeta
{
Name
:
name
,
...
...
@@ -501,10 +505,10 @@ func createBackendPodsOrFail(clusterClientSets []*release_1_3.Clientset, namespa
RestartPolicy
:
v1
.
RestartPolicyAlways
,
},
}
pods
:=
make
([]
*
v1
.
Pod
,
len
(
cluster
ClientSet
s
))
for
i
,
c
lient
:=
range
clusterClientSet
s
{
pods
:=
make
([]
*
v1
.
Pod
,
len
(
clusters
))
for
i
,
c
:=
range
cluster
s
{
By
(
fmt
.
Sprintf
(
"Creating pod %q in namespace %q in cluster %d"
,
pod
.
Name
,
namespace
,
i
))
createdPod
,
err
:=
c
lien
t
.
Core
()
.
Pods
(
namespace
)
.
Create
(
pod
)
createdPod
,
err
:=
c
.
Clientse
t
.
Core
()
.
Pods
(
namespace
)
.
Create
(
pod
)
framework
.
ExpectNoError
(
err
,
"Creating pod %q in namespace %q in cluster %d"
,
name
,
namespace
,
i
)
By
(
fmt
.
Sprintf
(
"Successfully created pod %q in namespace %q in cluster %d: %v"
,
pod
.
Name
,
namespace
,
i
,
*
createdPod
))
pods
[
i
]
=
createdPod
...
...
@@ -516,13 +520,13 @@ func createBackendPodsOrFail(clusterClientSets []*release_1_3.Clientset, namespa
deleteBackendPodsOrFail deletes one pod from each cluster (unless pods[n] is nil for that cluster)
If deletion of any pod fails, the test fails (possibly with a partially deleted set of pods). No retries are attempted.
*/
func
deleteBackendPodsOrFail
(
cluster
ClientSets
[]
*
release_1_3
.
Clientset
,
namespace
string
,
pods
[]
*
v1
.
Pod
)
{
if
len
(
cluster
ClientSet
s
)
!=
len
(
pods
)
{
Fail
(
fmt
.
Sprintf
(
"Internal error: number of clients (%d) does not equal number of pods (%d). One pod per client please."
,
len
(
cluster
ClientSet
s
),
len
(
pods
)))
func
deleteBackendPodsOrFail
(
cluster
s
[]
cluster
,
namespace
string
,
pods
[]
*
v1
.
Pod
)
{
if
len
(
clusters
)
!=
len
(
pods
)
{
Fail
(
fmt
.
Sprintf
(
"Internal error: number of clients (%d) does not equal number of pods (%d). One pod per client please."
,
len
(
clusters
),
len
(
pods
)))
}
for
i
,
c
lient
:=
range
clusterClientSet
s
{
for
i
,
c
:=
range
cluster
s
{
if
pods
[
i
]
!=
nil
{
err
:=
c
lien
t
.
Core
()
.
Pods
(
namespace
)
.
Delete
(
pods
[
i
]
.
Name
,
api
.
NewDeleteOptions
(
0
))
err
:=
c
.
Clientse
t
.
Core
()
.
Pods
(
namespace
)
.
Delete
(
pods
[
i
]
.
Name
,
api
.
NewDeleteOptions
(
0
))
if
errors
.
IsNotFound
(
err
)
{
By
(
fmt
.
Sprintf
(
"Pod %q in namespace %q in cluster %d does not exist. No need to delete it."
,
pods
[
i
]
.
Name
,
namespace
,
i
))
}
else
{
...
...
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