Add benchmark for Kubernetes Report()

This commit is contained in:
Bryan Boreham
2018-07-16 19:12:44 +00:00
parent 9b224b1170
commit 86867d575f

View File

@@ -8,6 +8,7 @@ import (
"testing"
apiv1 "k8s.io/api/core/v1"
apiv1beta1 "k8s.io/api/extensions/v1beta1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
@@ -111,9 +112,10 @@ func newMockClient() *mockClient {
}
type mockClient struct {
pods []kubernetes.Pod
services []kubernetes.Service
logs map[string]io.ReadCloser
pods []kubernetes.Pod
services []kubernetes.Service
deployments []kubernetes.Deployment
logs map[string]io.ReadCloser
}
func (c *mockClient) Stop() {}
@@ -143,6 +145,11 @@ func (c *mockClient) WalkCronJobs(f func(kubernetes.CronJob) error) error {
return nil
}
func (c *mockClient) WalkDeployments(f func(kubernetes.Deployment) error) error {
for _, deployment := range c.deployments {
if err := f(deployment); err != nil {
return err
}
}
return nil
}
func (c *mockClient) WalkNamespaces(f func(kubernetes.NamespaceResource) error) error {
@@ -282,6 +289,39 @@ func TestReporter(t *testing.T) {
}
func BenchmarkReporter(b *testing.B) {
hr := controls.NewDefaultHandlerRegistry()
mockK8s := newMockClient()
// Add more dummy data
for i := 0; i < 50; i++ {
service := apiService1
service.ObjectMeta.UID = types.UID(fmt.Sprintf("service%d", i))
mockK8s.services = append(mockK8s.services, kubernetes.NewService(&service))
pod := apiPod1
pod.ObjectMeta.UID = types.UID(fmt.Sprintf("pod%d", i))
mockK8s.pods = append(mockK8s.pods, kubernetes.NewPod(&pod))
deployment := apiv1beta1.Deployment{
TypeMeta: metav1.TypeMeta{
Kind: "Deployment",
APIVersion: "v1beta1",
},
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("deployment%d", i),
UID: types.UID(fmt.Sprintf("deployment%d", i)),
Namespace: "ping",
CreationTimestamp: metav1.Now(),
},
}
mockK8s.deployments = append(mockK8s.deployments, kubernetes.NewDeployment(&deployment))
}
reporter := kubernetes.NewReporter(mockK8s, nil, "probe-id", "foo", nil, hr, nodeName, 0)
b.ResetTimer()
for i := 0; i < b.N; i++ {
reporter.Report()
}
}
func TestTagger(t *testing.T) {
rpt := report.MakeReport()
rpt.Container.AddNode(report.MakeNodeWith("container1",