1 package kmp
2
3 import (
4 "bytes"
5 _ "embed"
6 "testing"
7
8 "gotest.tools/v3/assert"
9
10 "edge-infra.dev/pkg/k8s/object"
11 "edge-infra.dev/pkg/k8s/runtime/inventory"
12 "edge-infra.dev/pkg/k8s/unstructured"
13 )
14
15
16 var (
17
18 deployBytes []byte
19
20 deploy2Bytes []byte
21
22 svcActBytes []byte
23
24 nsBytes []byte
25 )
26
27 func TestInventory(t *testing.T) {
28 t.Parallel()
29
30
31 var (
32 deploy, deploy2, svcAct, ns *unstructured.Unstructured
33 )
34
35
36 var err error
37 deploy, err = object.ReadObject(bytes.NewReader(deployBytes))
38 assert.NilError(t, err)
39 deploy2, err = object.ReadObject(bytes.NewReader(deploy2Bytes))
40 assert.NilError(t, err)
41 svcAct, err = object.ReadObject(bytes.NewReader(svcActBytes))
42 assert.NilError(t, err)
43 ns, err = object.ReadObject(bytes.NewReader(nsBytes))
44 assert.NilError(t, err)
45
46 invFrom := func(objs ...*unstructured.Unstructured) *inventory.ResourceInventory {
47 return inventory.New(inventory.FromUnstructured(objs...))
48 }
49
50 tcs := map[string]map[string]testCase{
51 "SameInventory": {
52 "same": {
53 SameInventory(invFrom(deploy2, svcAct, ns), invFrom(deploy2, svcAct, ns)),
54 true,
55 },
56 "empty is same": {
57 SameInventory(inventory.New(), inventory.New()),
58 true,
59 },
60 "nil isn't comparable same": {
61 SameInventory(nil, inventory.New()),
62 false,
63 },
64 "nil is not the same": {
65 SameInventory(nil, nil),
66 false,
67 },
68 "not": {
69 SameInventory(invFrom(deploy2, svcAct, ns), invFrom(deploy2, svcAct, deploy)),
70 false,
71 },
72 "not with different lengths": {
73 SameInventory(invFrom(deploy2, svcAct, ns), invFrom(deploy2, svcAct)),
74 false,
75 },
76 },
77 }
78
79 for fn, fnTestCases := range tcs {
80 fnTestCases := fnTestCases
81
82
83 t.Run(fn, func(t *testing.T) {
84 t.Parallel()
85 for name, tc := range fnTestCases {
86 t.Run(name, func(t *testing.T) {
87 run(t, tc)
88 })
89 }
90 })
91 }
92 }
93
View as plain text