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 /test | |
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
Diffstat (limited to 'test')
-rw-r--r-- | test/e2e/benchmarks_test.go | 79 |
1 files changed, 74 insertions, 5 deletions
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 // -------------------------------------------------------------------------- |