porting all github actions from bluesky-social/indigo to tangled CI
at ci 1.8 kB view raw
1package repomgr 2 3import ( 4 "context" 5 "fmt" 6 "os" 7 "path/filepath" 8 "testing" 9 10 bsky "github.com/bluesky-social/indigo/api/bsky" 11 "github.com/bluesky-social/indigo/carstore" 12 "github.com/bluesky-social/indigo/util" 13 "gorm.io/driver/sqlite" 14 "gorm.io/gorm" 15) 16 17func setupDb(t testing.TB, p string) *gorm.DB { 18 t.Helper() 19 20 db, err := gorm.Open(sqlite.Open(p)) 21 if err != nil { 22 t.Fatal(err) 23 } 24 25 if err := db.Exec("PRAGMA journal_mode=WAL;").Error; err != nil { 26 t.Fatal(err) 27 } 28 29 if err := db.Exec("PRAGMA synchronous=normal;").Error; err != nil { 30 t.Fatal(err) 31 } 32 33 if err := db.Exec("PRAGMA temp_store=memory;").Error; err != nil { 34 t.Fatal(err) 35 } 36 37 if err := db.Exec("PRAGMA mmap_size=3000000000;").Error; err != nil { 38 t.Fatal(err) 39 } 40 41 return db 42} 43 44func BenchmarkRepoMgrCreates(b *testing.B) { 45 dir, err := os.MkdirTemp("", "integtest") 46 if err != nil { 47 b.Fatal(err) 48 } 49 50 cardb := setupDb(b, filepath.Join(dir, "car.sqlite")) 51 52 cspath := filepath.Join(dir, "carstore") 53 if err := os.Mkdir(cspath, 0775); err != nil { 54 b.Fatal(err) 55 } 56 57 // TODO: constructor for 'either type' 58 /* 59 cs, err := carstore.NewCarStore(cardb, []string{cspath}) 60 if err != nil { 61 b.Fatal(err) 62 } 63 */ 64 cs, err := carstore.NewNonArchivalCarstore(cardb) 65 if err != nil { 66 b.Fatal(err) 67 } 68 69 repoman := NewRepoManager(cs, &util.FakeKeyManager{}) 70 repoman.noArchive = true 71 72 ctx := context.TODO() 73 if err := repoman.InitNewActor(ctx, 1, "hello.world", "did:foo:bar", "catdog", "", ""); err != nil { 74 b.Fatal(err) 75 } 76 77 b.ResetTimer() 78 for i := 0; i < b.N; i++ { 79 _, _, err = repoman.CreateRecord(ctx, 1, "app.bsky.feed.post", &bsky.FeedPost{ 80 Text: "cats", 81 }) 82 if err != nil { 83 b.Fatal(err) 84 } 85 } 86 87 fmt.Println(carstore.CacheHits, carstore.CacheMiss) 88}