...

Source file src/edge-infra.dev/pkg/f8n/warehouse/oci/cache/cache_benchmark_test.go

Documentation: edge-infra.dev/pkg/f8n/warehouse/oci/cache

     1  package cache
     2  
     3  import (
     4  	_ "embed"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/google/go-containerregistry/pkg/name"
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"edge-infra.dev/pkg/f8n/warehouse/cluster"
    13  	"edge-infra.dev/pkg/f8n/warehouse/lift/unpack"
    14  	"edge-infra.dev/pkg/f8n/warehouse/oci/layer"
    15  	"edge-infra.dev/pkg/f8n/warehouse/oci/remote"
    16  	"edge-infra.dev/pkg/f8n/warehouse/pallet"
    17  )
    18  
    19  func benchmarkCache(b *testing.B, providers ...cluster.Provider) {
    20  	d, err := store.Digest()
    21  	require.NoError(b, err)
    22  	ref, err := name.NewDigest(fmt.Sprintf("%s/%s/%s@%s", rURL.Host, "benchmark-cache", "store", d))
    23  	require.NoError(b, err)
    24  
    25  	cache, err := New(
    26  		WithMemoryCacheSize(500),
    27  	)
    28  	require.NoError(b, err)
    29  	require.NoError(b, remote.Write(store, ref))
    30  
    31  	if len(providers) == 0 {
    32  		p, err := pallet.New(store)
    33  		require.NoError(b, err)
    34  		providers = p.Providers()
    35  	}
    36  
    37  	b.ResetTimer()
    38  
    39  	b.RunParallel(func(pb *testing.PB) {
    40  		for pb.Next() {
    41  			cached, err := cache.Get(ref)
    42  			require.NoError(b, err)
    43  
    44  			fn := func(pallet.Pallet, []layer.Layer) error { return nil }
    45  			for _, provider := range providers {
    46  				assert.NoError(b, unpack.Walk(cached, fn, unpack.ForProvider(provider)))
    47  			}
    48  		}
    49  	})
    50  
    51  	b.ReportAllocs()
    52  }
    53  
    54  func BenchmarkCache_AllProviders(b *testing.B)   { benchmarkCache(b) }
    55  func BenchmarkCache_SingleProvider(b *testing.B) { benchmarkCache(b, cluster.Generic) }
    56  

View as plain text