MCPcopy
hub / github.com/containerd/containerd / FuzzImageStore

Function FuzzImageStore

contrib/fuzz/metadata_fuzz_test.go:53–110  ·  view source on GitHub ↗
(f *testing.F)

Source from the content-addressed store, hash-verified

51}
52
53func FuzzImageStore(f *testing.F) {
54 f.Fuzz(func(t *testing.T, data []byte) {
55 const (
56 opCreate = "Create"
57 opList = "List"
58 opUpdate = "Update"
59 opDelete = "Delete"
60 )
61 imageStoreOptions := []string{opCreate, opList, opUpdate, opDelete}
62
63 ctx, db, cancel, err := testEnv(t)
64 if err != nil {
65 return
66 }
67 defer cancel()
68 store := metadata.NewImageStore(metadata.NewDB(db, nil, nil))
69 f := fuzz.NewConsumer(data)
70 noOfOperations, err := f.GetInt()
71 if err != nil {
72 return
73 }
74 maxOperations := 50
75 for i := 0; i < noOfOperations%maxOperations; i++ {
76 opType, err := f.GetInt()
77 if err != nil {
78 return
79 }
80 switch imageStoreOptions[opType%len(imageStoreOptions)] {
81 case opCreate:
82 i := images.Image{}
83 err := f.GenerateStruct(&i)
84 if err != nil {
85 return
86 }
87 _, _ = store.Create(ctx, i)
88 case opList:
89 newFs, err := f.GetString()
90 if err != nil {
91 return
92 }
93 _, _ = store.List(ctx, newFs)
94 case opUpdate:
95 i := images.Image{}
96 err := f.GenerateStruct(&i)
97 if err != nil {
98 return
99 }
100 _, _ = store.Update(ctx, i)
101 case opDelete:
102 name, err := f.GetString()
103 if err != nil {
104 return
105 }
106 _ = store.Delete(ctx, name)
107 }
108 }
109 })
110}

Callers

nothing calls this directly

Calls 7

NewImageStoreFunction · 0.92
NewDBFunction · 0.92
testEnvFunction · 0.70
CreateMethod · 0.65
ListMethod · 0.65
UpdateMethod · 0.65
DeleteMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…