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
afcfe96f
Commit
afcfe96f
authored
Feb 06, 2015
by
Zach Loafman
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4223 from rrati/e2e-events-4220
E2e events 4220
parents
e9f74de6
50133752
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
94 additions
and
95 deletions
+94
-95
events.go
test/e2e/events.go
+94
-95
No files found.
test/e2e/
kubelet_sends_
events.go
→
test/e2e/events.go
View file @
afcfe96f
...
...
@@ -17,6 +17,7 @@ limitations under the License.
package
e2e
import
(
"fmt"
"strconv"
"time"
...
...
@@ -24,108 +25,106 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels"
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
"github.com/golang/glog"
.
"github.com/onsi/ginkgo"
.
"github.com/onsi/gomega"
)
// TestKubeletSendsEvent checks that kubelets and scheduler send events about pods scheduling and running.
func
TestKubeletSendsEvent
(
c
*
client
.
Client
)
bool
{
provider
:=
testContext
.
provider
if
len
(
provider
)
>
0
&&
provider
!=
"gce"
&&
provider
!=
"gke"
&&
provider
!=
"aws"
{
glog
.
Infof
(
"skipping TestKubeletSendsEvent on cloud provider %s"
,
provider
)
return
true
}
podClient
:=
c
.
Pods
(
api
.
NamespaceDefault
)
name
:=
"send-events-"
+
string
(
util
.
NewUUID
())
value
:=
strconv
.
Itoa
(
time
.
Now
()
.
Nanosecond
())
pod
:=
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
name
,
Labels
:
map
[
string
]
string
{
"name"
:
"foo"
,
"time"
:
value
,
var
_
=
Describe
(
"Events"
,
func
()
{
var
c
*
client
.
Client
BeforeEach
(
func
()
{
c
=
loadClientOrDie
()
})
It
(
"should be sent by kubelets and the scheduler about pods scheduling and running"
,
func
()
{
provider
:=
testContext
.
provider
if
len
(
provider
)
>
0
&&
provider
!=
"gce"
&&
provider
!=
"gke"
&&
provider
!=
"aws"
{
By
(
fmt
.
Sprintf
(
"skipping TestKubeletSendsEvent on cloud provider %s"
,
provider
))
return
}
podClient
:=
c
.
Pods
(
api
.
NamespaceDefault
)
By
(
"creating the pod"
)
name
:=
"send-events-"
+
string
(
util
.
NewUUID
())
value
:=
strconv
.
Itoa
(
time
.
Now
()
.
Nanosecond
())
pod
:=
&
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
name
,
Labels
:
map
[
string
]
string
{
"name"
:
"foo"
,
"time"
:
value
,
},
},
},
Spec
:
api
.
PodSpec
{
Containers
:
[]
api
.
Container
{
{
Name
:
"p
"
,
Image
:
"kubernetes/serve_hostname"
,
Ports
:
[]
api
.
Port
{{
ContainerPort
:
80
,
HostPort
:
8080
}
},
Spec
:
api
.
PodSpec
{
Containers
:
[]
api
.
Container
{
{
Name
:
"p"
,
Image
:
"kubernetes/serve_hostname
"
,
Ports
:
[]
api
.
Port
{{
ContainerPort
:
80
,
HostPort
:
8080
}}
,
},
},
},
},
}
_
,
err
:=
podClient
.
Create
(
pod
)
if
err
!=
nil
{
glog
.
Errorf
(
"Failed to create pod: %v"
,
err
)
return
false
}
defer
podClient
.
Delete
(
pod
.
Name
)
waitForPodRunning
(
c
,
pod
.
Name
)
pods
,
err
:=
podClient
.
List
(
labels
.
SelectorFromSet
(
labels
.
Set
(
map
[
string
]
string
{
"time"
:
value
})))
if
len
(
pods
.
Items
)
!=
1
{
glog
.
Errorf
(
"Failed to find the correct pod"
)
return
false
}
podWithUid
,
err
:=
podClient
.
Get
(
pod
.
Name
)
if
err
!=
nil
{
glog
.
Errorf
(
"Failed to get pod: %v"
,
err
)
return
false
}
// Check for scheduler event about the pod.
glog
.
Infof
(
"%+v"
,
podWithUid
)
events
,
err
:=
c
.
Events
(
api
.
NamespaceDefault
)
.
List
(
labels
.
Everything
(),
labels
.
Set
{
"involvedObject.kind"
:
"Pod"
,
"involvedObject.uid"
:
string
(
podWithUid
.
UID
),
"involvedObject.namespace"
:
api
.
NamespaceDefault
,
"source"
:
"scheduler"
,
}
.
AsSelector
(),
)
if
err
!=
nil
{
glog
.
Error
(
"Error while listing events:"
,
err
)
return
false
}
if
len
(
events
.
Items
)
==
0
{
glog
.
Error
(
"Didn't see any scheduler events even though pod was running."
)
return
false
}
glog
.
Info
(
"Saw scheduler event for our pod."
)
// Check for kubelet event about the pod.
events
,
err
=
c
.
Events
(
api
.
NamespaceDefault
)
.
List
(
labels
.
Everything
(),
labels
.
Set
{
"involvedObject.uid"
:
string
(
podWithUid
.
UID
),
"involvedObject.kind"
:
"BoundPod"
,
"involvedObject.namespace"
:
api
.
NamespaceDefault
,
"source"
:
"kubelet"
,
}
.
AsSelector
(),
)
if
err
!=
nil
{
glog
.
Error
(
"Error while listing events:"
,
err
)
return
false
}
if
len
(
events
.
Items
)
==
0
{
glog
.
Error
(
"Didn't see any kubelet events even though pod was running."
)
return
false
}
glog
.
Info
(
"Saw kubelet event for our pod."
)
return
true
}
var
_
=
Describe
(
"TestKubeletSendsEvent"
,
func
()
{
It
(
"should pass"
,
func
()
{
// TODO: Instead of OrDie, client should Fail the test if there's a problem.
// In general tests should Fail() instead of glog.Fatalf().
Expect
(
TestKubeletSendsEvent
(
loadClientOrDie
()))
.
To
(
BeTrue
())
}
By
(
"submitting the pod to kubernetes"
)
_
,
err
:=
podClient
.
Create
(
pod
)
if
err
!=
nil
{
Fail
(
fmt
.
Sprintf
(
"Failed to create pod: %v"
,
err
))
}
defer
func
()
{
By
(
"deleting the pod"
)
defer
GinkgoRecover
()
podClient
.
Delete
(
pod
.
Name
)
}()
By
(
"waiting for the pod to start running"
)
waitForPodRunning
(
c
,
pod
.
Name
)
By
(
"verifying the pod is in kubernetes"
)
pods
,
err
:=
podClient
.
List
(
labels
.
SelectorFromSet
(
labels
.
Set
(
map
[
string
]
string
{
"time"
:
value
})))
Expect
(
len
(
pods
.
Items
))
.
To
(
Equal
(
1
))
By
(
"retrieving the pod"
)
podWithUid
,
err
:=
podClient
.
Get
(
pod
.
Name
)
if
err
!=
nil
{
Fail
(
fmt
.
Sprintf
(
"Failed to get pod: %v"
,
err
))
}
fmt
.
Printf
(
"%+v
\n
"
,
podWithUid
)
// Check for scheduler event about the pod.
By
(
"checking for scheduler event about the pod"
)
events
,
err
:=
c
.
Events
(
api
.
NamespaceDefault
)
.
List
(
labels
.
Everything
(),
labels
.
Set
{
"involvedObject.kind"
:
"Pod"
,
"involvedObject.uid"
:
string
(
podWithUid
.
UID
),
"involvedObject.namespace"
:
api
.
NamespaceDefault
,
"source"
:
"scheduler"
,
}
.
AsSelector
(),
)
if
err
!=
nil
{
Fail
(
fmt
.
Sprintf
(
"Error while listing events:"
,
err
))
}
Expect
(
len
(
events
.
Items
))
.
ToNot
(
BeZero
(),
"scheduler events from running pod"
)
fmt
.
Println
(
"Saw scheduler event for our pod."
)
// Check for kubelet event about the pod.
By
(
"checking for kubelet event about the pod"
)
events
,
err
=
c
.
Events
(
api
.
NamespaceDefault
)
.
List
(
labels
.
Everything
(),
labels
.
Set
{
"involvedObject.uid"
:
string
(
podWithUid
.
UID
),
"involvedObject.kind"
:
"BoundPod"
,
"involvedObject.namespace"
:
api
.
NamespaceDefault
,
"source"
:
"kubelet"
,
}
.
AsSelector
(),
)
if
err
!=
nil
{
Fail
(
fmt
.
Sprintf
(
"Error while listing events:"
,
err
))
}
Expect
(
len
(
events
.
Items
))
.
ToNot
(
BeZero
(),
"kubelet events from running pod"
)
fmt
.
Println
(
"Saw kubelet event for our pod."
)
})
})
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