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  }