mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-16 03:49:52 +00:00
Add benchmark for Kubernetes Report()
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user