tinyrelayfile
tinyrelay/internal/storage/bench_test.go/

internal/storage/bench_test.go raw
1package storage
2
3import (
4 "context"
5 "fmt"
6 "testing"
7
8 "github.com/FelineStateMachine/tinyrelay/internal/event"
9)
10
11func BenchmarkSave(b *testing.B) {
12 store := benchmarkStore(b)
13 ctx := context.Background()
14 b.ResetTimer()
15 for i := 0; i < b.N; i++ {
16 if _, err := store.Save(ctx, benchmarkEvent(i, "benchmark"), SaveOptions{Now: int64(i + 1), SearchMode: "full"}); err != nil {
17 b.Fatal(err)
18 }
19 }
20}
21
22func BenchmarkQuery(b *testing.B) {
23 store := benchmarkStore(b)
24 seedEvents(b, store, 1000)
25 filter := event.Filter{Kinds: []int{1}}
26 b.ResetTimer()
27 for i := 0; i < b.N; i++ {
28 if _, err := store.Query(context.Background(), filter, QueryOptions{Now: 2_000, Limit: 100}); err != nil {
29 b.Fatal(err)
30 }
31 }
32}
33
34func BenchmarkTextSearch(b *testing.B) {
35 store := benchmarkStore(b)
36 seedEvents(b, store, 1000)
37 filter := event.Filter{Search: "needle"}
38 b.ResetTimer()
39 for i := 0; i < b.N; i++ {
40 if _, err := store.Query(context.Background(), filter, QueryOptions{Now: 2_000, Limit: 100}); err != nil {
41 b.Fatal(err)
42 }
43 }
44}
45
46func benchmarkStore(b *testing.B) *Store {
47 b.Helper()
48 store, err := Open(context.Background(), b.TempDir()+"/bench.db")
49 if err != nil {
50 b.Fatal(err)
51 }
52 b.Cleanup(func() { _ = store.Close() })
53 return store
54}
55
56func seedEvents(b *testing.B, store *Store, count int) {
57 b.Helper()
58 for i := 0; i < count; i++ {
59 if _, err := store.Save(context.Background(), benchmarkEvent(i, "seed needle text"), SaveOptions{Now: int64(i + 1), SearchMode: "full"}); err != nil {
60 b.Fatal(err)
61 }
62 }
63}
64
65func benchmarkEvent(index int, content string) event.Event {
66 return event.Event{ID: fmt.Sprintf("%064x", index+1), PubKey: fmt.Sprintf("%064x", 1), CreatedAt: int64(index + 1), Kind: 1, Tags: [][]string{}, Content: content, Sig: fmt.Sprintf("%0128x", index+1)}
67}

About

ownerc01503e8035f
visibilitypublic
headd730679639bf

Maintainers

  • c01503e8035f owner
  • ba1b5beed5b5 agent hermes

Clone

  • https://012.run/npub1cq2s86qrtadf36eqq3epm38wmhdynrrcwxf84eldk3f94dkv7ttsrulrz5/tinyrelay.git

Refs