From b00020884c4a6283b29f9540064af61c5f0320dd Mon Sep 17 00:00:00 2001 From: Wojciech Tyczynski Date: Mon, 11 May 2015 15:01:13 +0200 Subject: [PATCH] DeepCopy benchmarks --- pkg/{conversion => api}/conversion_test.go | 20 ++-- pkg/api/deep_copy_test.go | 94 +++++++++++++++++++ pkg/{conversion => api}/node_example.json | 0 pkg/{conversion => api}/pod_example.json | 0 .../replication_controller_example.json | 0 5 files changed, 104 insertions(+), 10 deletions(-) rename pkg/{conversion => api}/conversion_test.go (85%) create mode 100644 pkg/api/deep_copy_test.go rename pkg/{conversion => api}/node_example.json (100%) rename pkg/{conversion => api}/pod_example.json (100%) rename pkg/{conversion => api}/replication_controller_example.json (100%) diff --git a/pkg/conversion/conversion_test.go b/pkg/api/conversion_test.go similarity index 85% rename from pkg/conversion/conversion_test.go rename to pkg/api/conversion_test.go index a06612b3d89..7b89de8366d 100644 --- a/pkg/conversion/conversion_test.go +++ b/pkg/api/conversion_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package conversion_test +package api_test import ( "io/ioutil" @@ -30,11 +30,11 @@ import ( func BenchmarkPodConversion(b *testing.B) { data, err := ioutil.ReadFile("pod_example.json") if err != nil { - b.Fatalf("unexpected error while reading file: %v", err) + b.Fatalf("Unexpected error while reading file: %v", err) } var pod api.Pod if err := api.Scheme.DecodeInto(data, &pod); err != nil { - b.Fatalf("unexpected error decoding pod: %v", err) + b.Fatalf("Unexpected error decoding pod: %v", err) } scheme := api.Scheme.Raw() @@ -51,18 +51,18 @@ func BenchmarkPodConversion(b *testing.B) { result = obj.(*api.Pod) } if !api.Semantic.DeepDerivative(pod, *result) { - b.Fatalf("Incorrect conversion: expected %v, got %v", pod, result) + b.Fatalf("Incorrect conversion: expected %v, got %v", pod, *result) } } func BenchmarkNodeConversion(b *testing.B) { data, err := ioutil.ReadFile("node_example.json") if err != nil { - b.Fatalf("unexpected error while reading file: %v", err) + b.Fatalf("Unexpected error while reading file: %v", err) } var node api.Node if err := api.Scheme.DecodeInto(data, &node); err != nil { - b.Fatalf("unexpected error decoding node: %v", err) + b.Fatalf("Unexpected error decoding node: %v", err) } scheme := api.Scheme.Raw() @@ -79,18 +79,18 @@ func BenchmarkNodeConversion(b *testing.B) { result = obj.(*api.Node) } if !api.Semantic.DeepDerivative(node, *result) { - b.Fatalf("Incorrect conversion: expected %v, got %v", node, result) + b.Fatalf("Incorrect conversion: expected %v, got %v", node, *result) } } func BenchmarkReplicationControllerConversion(b *testing.B) { data, err := ioutil.ReadFile("replication_controller_example.json") if err != nil { - b.Fatalf("unexpected error while reading file: %v", err) + b.Fatalf("Unexpected error while reading file: %v", err) } var replicationController api.ReplicationController if err := api.Scheme.DecodeInto(data, &replicationController); err != nil { - b.Fatalf("unexpected error decoding node: %v", err) + b.Fatalf("Unexpected error decoding node: %v", err) } scheme := api.Scheme.Raw() @@ -107,6 +107,6 @@ func BenchmarkReplicationControllerConversion(b *testing.B) { result = obj.(*api.ReplicationController) } if !api.Semantic.DeepDerivative(replicationController, *result) { - b.Fatalf("Incorrect conversion: expected %v, got %v", replicationController, result) + b.Fatalf("Incorrect conversion: expected %v, got %v", replicationController, *result) } } diff --git a/pkg/api/deep_copy_test.go b/pkg/api/deep_copy_test.go new file mode 100644 index 00000000000..ca2b62eff55 --- /dev/null +++ b/pkg/api/deep_copy_test.go @@ -0,0 +1,94 @@ +/* +Copyright 2015 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api_test + +import ( + "io/ioutil" + "testing" + + "github.com/GoogleCloudPlatform/kubernetes/pkg/api" + "github.com/GoogleCloudPlatform/kubernetes/pkg/conversion" +) + +func BenchmarkPodCopy(b *testing.B) { + data, err := ioutil.ReadFile("pod_example.json") + if err != nil { + b.Fatalf("Unexpected error while reading file: %v", err) + } + var pod api.Pod + if err := api.Scheme.DecodeInto(data, &pod); err != nil { + b.Fatalf("Unexpected error decoding pod: %v", err) + } + + var result *api.Pod + for i := 0; i < b.N; i++ { + obj, err := conversion.DeepCopy(&pod) + if err != nil { + b.Fatalf("Unexpected error copying pod: %v", err) + } + result = obj.(*api.Pod) + } + if !api.Semantic.DeepEqual(pod, *result) { + b.Fatalf("Incorrect copy: expected %v, got %v", pod, *result) + } +} + +func BenchmarkNodeCopy(b *testing.B) { + data, err := ioutil.ReadFile("node_example.json") + if err != nil { + b.Fatalf("Unexpected error while reading file: %v", err) + } + var node api.Node + if err := api.Scheme.DecodeInto(data, &node); err != nil { + b.Fatalf("Unexpected error decoding node: %v", err) + } + + var result *api.Node + for i := 0; i < b.N; i++ { + obj, err := conversion.DeepCopy(&node) + if err != nil { + b.Fatalf("Unexpected error copying node: %v", err) + } + result = obj.(*api.Node) + } + if !api.Semantic.DeepEqual(node, *result) { + b.Fatalf("Incorrect copy: expected %v, got %v", node, *result) + } +} + +func BenchmarkReplicationControllerCopy(b *testing.B) { + data, err := ioutil.ReadFile("replication_controller_example.json") + if err != nil { + b.Fatalf("Unexpected error while reading file: %v", err) + } + var replicationController api.ReplicationController + if err := api.Scheme.DecodeInto(data, &replicationController); err != nil { + b.Fatalf("Unexpected error decoding node: %v", err) + } + + var result *api.ReplicationController + for i := 0; i < b.N; i++ { + obj, err := conversion.DeepCopy(&replicationController) + if err != nil { + b.Fatalf("Unexpected error copying replication controller: %v", err) + } + result = obj.(*api.ReplicationController) + } + if !api.Semantic.DeepEqual(replicationController, *result) { + b.Fatalf("Incorrect copy: expected %v, got %v", replicationController, *result) + } +} diff --git a/pkg/conversion/node_example.json b/pkg/api/node_example.json similarity index 100% rename from pkg/conversion/node_example.json rename to pkg/api/node_example.json diff --git a/pkg/conversion/pod_example.json b/pkg/api/pod_example.json similarity index 100% rename from pkg/conversion/pod_example.json rename to pkg/api/pod_example.json diff --git a/pkg/conversion/replication_controller_example.json b/pkg/api/replication_controller_example.json similarity index 100% rename from pkg/conversion/replication_controller_example.json rename to pkg/api/replication_controller_example.json