diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2022-04-26 14:36:30 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-26 14:36:30 -0400 |
commit | 5ac00a7287e4a9e6292f4a6ca5dfa9a02e5ca907 (patch) | |
tree | f1b0d8018be8e57d8a01ed43b623add31e847979 | |
parent | d504c3cf85852bdda57c819df0df1d99db59bc19 (diff) | |
parent | facc009ca070085bb1c32f146f77c2a0a62090b0 (diff) | |
download | podman-5ac00a7287e4a9e6292f4a6ca5dfa9a02e5ca907.tar.gz podman-5ac00a7287e4a9e6292f4a6ca5dfa9a02e5ca907.tar.bz2 podman-5ac00a7287e4a9e6292f4a6ca5dfa9a02e5ca907.zip |
Merge pull request #14009 from vrothberg/add-benchmarks
benchmarks: add more image benchmarks
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | hack/podman-registry-go/registry.go | 24 | ||||
-rw-r--r-- | test/e2e/benchmarks_test.go | 79 |
3 files changed, 87 insertions, 18 deletions
@@ -134,7 +134,7 @@ ifeq ($(GOBIN),) GOBIN := $(FIRST_GOPATH)/bin endif -export PATH := $(PATH):$(GOBIN) +export PATH := $(PATH):$(GOBIN):$(CURDIR)/hack GOMD2MAN ?= $(shell command -v go-md2man || echo '$(GOBIN)/go-md2man') diff --git a/hack/podman-registry-go/registry.go b/hack/podman-registry-go/registry.go index 143a83fa1..095f6fb18 100644 --- a/hack/podman-registry-go/registry.go +++ b/hack/podman-registry-go/registry.go @@ -9,10 +9,10 @@ import ( ) const ( - imageKey = "PODMAN_REGISTRY_IMAGE" - userKey = "PODMAN_REGISTRY_USER" - passKey = "PODMAN_REGISTRY_PASS" - portKey = "PODMAN_REGISTRY_PORT" + ImageKey = "PODMAN_REGISTRY_IMAGE" + UserKey = "PODMAN_REGISTRY_USER" + PassKey = "PODMAN_REGISTRY_PASS" + PortKey = "PODMAN_REGISTRY_PORT" ) var binary = "podman-registry" @@ -52,13 +52,13 @@ func Start() (*Registry, error) { key := spl[0] val := strings.TrimSuffix(strings.TrimPrefix(spl[1], "\""), "\"") switch key { - case imageKey: + case ImageKey: registry.Image = val - case userKey: + case UserKey: registry.User = val - case passKey: + case PassKey: registry.Password = val - case portKey: + case PortKey: registry.Port = val default: logrus.Errorf("Unexpected podman-registry output: %q", s) @@ -67,16 +67,16 @@ func Start() (*Registry, error) { // Extra sanity check. if registry.Image == "" { - return nil, errors.Errorf("unexpected output %q: %q missing", out, imageKey) + return nil, errors.Errorf("unexpected output %q: %q missing", out, ImageKey) } if registry.User == "" { - return nil, errors.Errorf("unexpected output %q: %q missing", out, userKey) + return nil, errors.Errorf("unexpected output %q: %q missing", out, UserKey) } if registry.Password == "" { - return nil, errors.Errorf("unexpected output %q: %q missing", out, passKey) + return nil, errors.Errorf("unexpected output %q: %q missing", out, PassKey) } if registry.Port == "" { - return nil, errors.Errorf("unexpected output %q: %q missing", out, portKey) + return nil, errors.Errorf("unexpected output %q: %q missing", out, PortKey) } registry.running = true diff --git a/test/e2e/benchmarks_test.go b/test/e2e/benchmarks_test.go index c631b06ee..9653cee3b 100644 --- a/test/e2e/benchmarks_test.go +++ b/test/e2e/benchmarks_test.go @@ -11,10 +11,12 @@ import ( "strconv" "strings" + podmanRegistry "github.com/containers/podman/v4/hack/podman-registry-go" . "github.com/containers/podman/v4/test/utils" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" . "github.com/onsi/gomega/gexec" + "github.com/sirupsen/logrus" ) var ( @@ -30,21 +32,23 @@ type benchmark struct { name string // The function to execute. main func() - // Function is run before `main`. - init func() + // Allows for extending a benchmark. + options newBenchmarkOptions } // Allows for customizing the benchnmark in an easy to extend way. type newBenchmarkOptions struct { // Sets the benchmark's init function. init func() + // Run a local registry for this benchmark. + needsRegistry bool } // Queue a new benchmark. func newBenchmark(name string, main func(), options *newBenchmarkOptions) { bm := benchmark{name: name, main: main} if options != nil { - bm.init = options.init + bm.options = *options } allBenchmarks = append(allBenchmarks, bm) } @@ -109,8 +113,23 @@ var _ = Describe("Podman Benchmark Suite", func() { for i := range allBenchmarks { setup() bm := allBenchmarks[i] - if bm.init != nil { - bm.init() + + // Start a local registry if requested. + var registry *podmanRegistry.Registry + if bm.options.needsRegistry { + reg, err := podmanRegistry.Start() + if err != nil { + logrus.Errorf("Error starting registry: %v", err) + os.Exit(1) + } + registry = reg + os.Setenv(podmanRegistry.UserKey, reg.User) + os.Setenv(podmanRegistry.PassKey, reg.Password) + os.Setenv(podmanRegistry.PortKey, reg.Port) + } + + if bm.options.init != nil { + bm.options.init() } // Set the time dir only for the main() function. @@ -120,6 +139,18 @@ var _ = Describe("Podman Benchmark Suite", func() { mem := totalMemoryInKb() b.RecordValueWithPrecision("[MEM] "+bm.name, float64(mem), "KB", 1) + + // Stop the local registry. + if bm.options.needsRegistry { + os.Unsetenv(podmanRegistry.UserKey) + os.Unsetenv(podmanRegistry.PassKey) + os.Unsetenv(podmanRegistry.PortKey) + if err := registry.Stop(); err != nil { + logrus.Errorf("Error stopping registry: %v", err) + os.Exit(1) + } + } + cleanup() } }, numBenchmarkSamples) @@ -142,6 +173,44 @@ var _ = Describe("Podman Benchmark Suite", func() { Expect(session).Should(Exit(0)) }, nil) + newBenchmark("podman load [docker]", func() { + session := podmanTest.Podman([]string{"load", "-i", "./testdata/docker-two-images.tar.xz"}) + session.WaitWithDefaultTimeout() + Expect(session).Should(Exit(0)) + }, nil) + + newBenchmark("podman load [oci]", func() { + session := podmanTest.Podman([]string{"load", "-i", "./testdata/oci-registry-name.tar.gz"}) + session.WaitWithDefaultTimeout() + Expect(session).Should(Exit(0)) + }, nil) + + newBenchmark("podman save", func() { + session := podmanTest.Podman([]string{"save", ALPINE, "-o", path.Join(podmanTest.TempDir, "alpine.tar")}) + session.WaitWithDefaultTimeout() + Expect(session).Should(Exit(0)) + }, nil) + + newBenchmark("podman image inspect", func() { + session := podmanTest.Podman([]string{"inspect", ALPINE}) + session.WaitWithDefaultTimeout() + Expect(session).Should(Exit(0)) + }, nil) + + newBenchmark("podman login + logout", func() { + user := os.Getenv(podmanRegistry.UserKey) + pass := os.Getenv(podmanRegistry.PassKey) + port := os.Getenv(podmanRegistry.PortKey) + + session := podmanTest.Podman([]string{"login", "-u", user, "-p", pass, "--tls-verify=false", "localhost:" + port}) + session.WaitWithDefaultTimeout() + Expect(session).Should(Exit(0)) + + session = podmanTest.Podman([]string{"logout", "localhost:" + port}) + session.WaitWithDefaultTimeout() + Expect(session).Should(Exit(0)) + }, &newBenchmarkOptions{needsRegistry: true}) + // -------------------------------------------------------------------------- // CONTAINER BENCHMARKS // -------------------------------------------------------------------------- |