github.com/scottcagno/storage@v1.8.0/pkg/lsmt/sstable/ss-table-manager_test.go (about) 1 package sstable 2 3 import ( 4 "fmt" 5 "github.com/scottcagno/storage/pkg/lsmt/binary" 6 "github.com/scottcagno/storage/pkg/util" 7 "os" 8 "testing" 9 "time" 10 ) 11 12 func TestSSTManager(t *testing.T) { 13 14 var count int 15 base := "sst-manager-testing" 16 17 // open ss-table-manager 18 sstm, err := OpenSSTManager(base) 19 if err != nil { 20 t.Errorf("opening ss-table-manager: %v\n", err) 21 } 22 23 ts1 := time.Now() 24 // add some data 25 for i := 1; i <= 5; i++ { 26 // get fresh batch to write to 27 batch := binary.NewBatch() 28 // write data to batch 29 stop := count + 59 30 for k := count; k < stop; k++ { 31 data := fmt.Sprintf("data-%04d", k) 32 batch.WriteEntry(&binary.Entry{Key: []byte(data), Value: []byte(data)}) 33 count++ 34 } 35 // write batch to ss-table 36 sstm.flushBatchToSSTable(batch) 37 if err != nil { 38 t.Errorf("flushing batch to ss-table: %v\n", err) 39 } 40 } 41 ts2 := time.Now() 42 fmt.Println(util.FormatTime("writing Entries", ts1, ts2)) 43 44 // list ss-tables 45 //fmt.Printf("listing ss-tables....\n") 46 //sstables := sstm.ListSSTables() 47 //for _, sst := range sstables { 48 // fmt.Printf("ss-table: %s\n", sst) 49 //} 50 51 // list ss-table-indexes 52 //fmt.Printf("\nlisting ss-table indexes....\n") 53 //sstidxs := sstm.ListSSTIndexes() 54 //for _, ssi := range sstidxs { 55 // fmt.Printf("ss-table-gindex: %s\n", ssi) 56 //} 57 58 /* 59 // view sparse gindex 60 fmt.Printf("\nviewing sparse gindex....\n") 61 kps := sstm.GetSparseIndex() 62 for _, kp := range kps { 63 fmt.Printf("%s\n", kp) 64 } 65 */ 66 67 // search sparse gindex 68 fmt.Printf("\nsearching sparse indexes....\n") 69 i, err := sstm.SearchSparseIndex("data-0000") 70 if err != nil { 71 t.Errorf("searching sparse gindex (%d): %v\n", 0, err) 72 } 73 fmt.Printf("searching sparse gindex for %d, got found in gindex: %d\n", 0, i) 74 75 i, err = sstm.SearchSparseIndex("data-0025") 76 if err != nil { 77 t.Errorf("searching sparse gindex (%d): %v\n", 25, err) 78 } 79 fmt.Printf("searching sparse gindex for %d, got found in gindex: %d\n", 25, i) 80 81 i, err = sstm.SearchSparseIndex("data-0150") 82 if err != nil { 83 t.Errorf("searching sparse gindex (%d): %v\n", 150, err) 84 } 85 fmt.Printf("searching sparse gindex for %d, got found in gindex: %d\n", 150, i) 86 87 i, err = sstm.SearchSparseIndex("data-0250") 88 if err != nil { 89 t.Errorf("searching sparse gindex (%d): %v\n", 250, err) 90 } 91 fmt.Printf("searching sparse gindex for %d, got found in gindex: %d\n", 250, i) 92 93 i, err = sstm.SearchSparseIndex("data-0500") 94 if err == nil { 95 t.Errorf("searching sparse gindex (%d): %v\n", 500, err) 96 } 97 fmt.Printf("searching sparse gindex for %d, got found in gindex: %d\n", 500, i) 98 99 // close ss-table-manager 100 err = sstm.Close() 101 if err != nil { 102 t.Errorf("closing ss-table-manager: %v\n", err) 103 } 104 105 doClean := false 106 if doClean { 107 err = os.RemoveAll(base) 108 if err != nil { 109 t.Errorf("removing all: %v\n", err) 110 } 111 /* 112 // remove ss-tables 113 for _, sst := range sstables { 114 err = os.Remove("testing/" + sst) 115 if err != nil { 116 t.Errorf("removing table %q: %v\n", sst, err) 117 } 118 } 119 120 // remove ss-table-indexes 121 for _, ssi := range sstidxs { 122 err = os.Remove("testing/" + ssi) 123 if err != nil { 124 t.Errorf("removing table gindex %q: %v\n", ssi, err) 125 } 126 } 127 */ 128 } 129 }