github.com/criteo/command-launcher@v0.0.0-20230407142452-fb616f546e98/internal/repository/json-repo-index_test.go (about) 1 package repository 2 3 import ( 4 "fmt" 5 "os" 6 "path/filepath" 7 "testing" 8 "time" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestStore(t *testing.T) { 14 path := filepath.Join(t.TempDir(), "test-reg.json") 15 reg, err := newJsonRepoIndex("dropin", path) 16 assert.Nil(t, err) 17 err = generateTestRepoIndex(reg, 1, 1) 18 assert.Nil(t, err) 19 20 exeCmds := reg.ExecutableCommands() 21 assert.Equal(t, 1, len(exeCmds), "there must be 1 executable cmds") 22 23 groupCmds := reg.GroupCommands() 24 assert.Equal(t, 0, len(groupCmds), "there should be no group cmds") 25 26 _, err = os.Stat(path) 27 assert.Nil(t, err) 28 assert.False(t, os.IsNotExist(err)) 29 } 30 31 func TestLoad(t *testing.T) { 32 path := filepath.Join(t.TempDir(), "test-reg.json") 33 reg, err := newJsonRepoIndex("dropin", path) 34 assert.Nil(t, err) 35 err = generateTestRepoIndex(reg, 1, 1) 36 assert.Nil(t, err) 37 38 exeCmds := reg.ExecutableCommands() 39 assert.Equal(t, 1, len(exeCmds), "there should be 1 executable cmds") 40 } 41 42 func TestAddRemove(t *testing.T) { 43 path := filepath.Join(t.TempDir(), "test-reg.json") 44 reg, err := newJsonRepoIndex("dropin", path) 45 assert.Nil(t, err) 46 err = generateTestRepoIndex(reg, 1, 1) 47 assert.Nil(t, err) 48 49 exeCmds := reg.ExecutableCommands() 50 assert.Equal(t, 1, len(exeCmds), "there should be 1 executable cmd") 51 52 fmt.Println(exeCmds[0]) 53 54 // c, err := reg.Command("test-group", "test-0-0") 55 // assert.Nil(t, err) 56 // assert.Equal(t, "test-0-0", c.Name()) 57 // assert.Equal(t, "Short Description", c.ShortDescription()) 58 // 59 err = reg.Remove("test-0", "") 60 assert.Nil(t, err) 61 62 exeCmds = reg.ExecutableCommands() 63 assert.Equal(t, 0, len(exeCmds)) 64 } 65 66 func BenchmarkLoadLargeRepoIndex(t *testing.B) { 67 numOfPkg := 1000 68 numOfCmd := 10 69 70 path := filepath.Join(t.TempDir(), "test-reg.json") 71 reg, err := newJsonRepoIndex("dropin", path) 72 assert.Nil(t, err) 73 err = generateTestRepoIndex(reg, numOfPkg, numOfCmd) 74 assert.Nil(t, err) 75 76 exeCmds := reg.ExecutableCommands() 77 assert.Equal(t, numOfCmd*numOfPkg, len(exeCmds), "there should be right number of executable cmd") 78 79 start := time.Now() 80 loadedReg, err := newJsonRepoIndex("dropin", path) 81 elapsed := time.Since(start) 82 fmt.Println(elapsed) 83 assert.Nil(t, err) 84 loadedExeCmds := loadedReg.ExecutableCommands() 85 assert.Equal(t, len(exeCmds), len(loadedExeCmds), "should have same number of executable cmd") 86 }