...
1 package memory
2
3 import (
4 "os"
5 "testing"
6
7 "github.com/google/go-containerregistry/pkg/name"
8 v1 "github.com/google/go-containerregistry/pkg/v1"
9 "github.com/google/go-containerregistry/pkg/v1/random"
10 "github.com/stretchr/testify/assert"
11 "github.com/stretchr/testify/require"
12
13 "edge-infra.dev/pkg/f8n/warehouse/oci"
14 "edge-infra.dev/test/fixtures"
15 )
16
17 var (
18 path *fixtures.Path
19 shoot oci.Artifact
20 redpanda oci.Artifact
21 )
22
23 func TestMain(m *testing.M) {
24 var err error
25
26 path, err = fixtures.Layout()
27 if err != nil {
28 panic(err)
29 }
30 shoot, err = path.Get(name.MustParseReference("shoot:latest"))
31 if err != nil {
32 panic(err)
33 }
34 redpanda, err = path.Get(name.MustParseReference("redpanda-system:latest"))
35 if err != nil {
36 panic(err)
37 }
38
39 os.Exit(m.Run())
40 }
41
42 func TestNew(t *testing.T) {
43 cache, err := New(250)
44 assert.NoError(t, err)
45 assert.NotEmpty(t, cache)
46 }
47
48 func TestCache(t *testing.T) {
49 cache, err := New(20)
50 require.NoError(t, err)
51 require.NotEmpty(t, cache)
52
53 var shootDigest, redpandaDigest v1.Hash
54 shootDigest, err = shoot.Digest()
55 require.NoError(t, err)
56 redpandaDigest, err = redpanda.Digest()
57 require.NoError(t, err)
58
59 cache.Add(shootDigest, shoot)
60 cache.Add(redpandaDigest, redpanda)
61
62 a, ok := cache.Get(shootDigest)
63 assert.Same(t, shoot, a)
64 assert.True(t, ok)
65 assert.True(t, cache.Exists(shootDigest))
66
67 a, ok = cache.Get(redpandaDigest)
68 assert.Same(t, redpanda, a)
69 assert.True(t, ok)
70 assert.True(t, cache.Exists(redpandaDigest))
71
72 img, err := random.Image(10381, 3)
73 require.NoError(t, err)
74 d, err := img.Digest()
75 require.NoError(t, err)
76
77 a, ok = cache.Get(d)
78 assert.Nil(t, a)
79 assert.False(t, ok)
80 assert.False(t, cache.Exists(d))
81 }
82
View as plain text