github.com/scottcagno/storage@v1.8.0/pkg/lsmt/sstable/ss-table_test.go (about) 1 package sstable 2 3 import ( 4 "fmt" 5 "github.com/scottcagno/storage/pkg/lsmt/binary" 6 "testing" 7 ) 8 9 func TestSSTableAndSSTIndex(t *testing.T) { 10 11 // create new sstable 12 sst, err := OpenSSTable("data", 1) 13 if err != nil { 14 t.Fatalf("creating sst: %v\n", err) 15 } 16 17 // create and test batch 18 batch := binary.NewBatch() 19 batch.Write("key-01", []byte("value-01")) 20 batch.Write("key-02", []byte("value-02")) 21 batch.Write("key-03", []byte("value-03")) 22 err = sst.WriteBatch(batch) 23 if err != nil { 24 t.Fatalf("writing (batch) to sst: %v\n", err) 25 } 26 27 // write some entries 28 err = sst.Write(&binary.Entry{ 29 Key: []byte("abc"), 30 Value: []byte("ABC"), 31 }) 32 if err != nil { 33 t.Fatalf("writing to sst: %v\n", err) 34 } 35 err = sst.Write(&binary.Entry{ 36 Key: []byte("def"), 37 Value: []byte("DEF"), 38 }) 39 if err != nil { 40 t.Fatalf("writing to sst: %v\n", err) 41 } 42 err = sst.Write(&binary.Entry{ 43 Key: []byte("ghi"), 44 Value: []byte("GHI"), 45 }) 46 if err != nil { 47 t.Fatalf("writing to sst: %v\n", err) 48 } 49 // close sst 50 err = sst.Close() 51 if err != nil { 52 t.Fatalf("closing sst: %v\n", err) 53 } 54 55 // open gindex 56 ssi, err := OpenSSTIndex("data", 1) 57 if err != nil { 58 t.Fatalf("opening ssi: %v\n", err) 59 } 60 61 key := "def" 62 i, err := ssi.Find(key) 63 if err != nil { 64 t.Fatalf("finding key: %v\n", err) 65 } 66 fmt.Printf("ssi.Find(%q)=%s\n", key, i) 67 }