github.com/tendermint/tmlibs@v0.9.0/db/remotedb/grpcdb/example_test.go (about)

     1  package grpcdb_test
     2  
     3  import (
     4  	"bytes"
     5  	"context"
     6  	"log"
     7  
     8  	grpcdb "github.com/tendermint/tmlibs/db/remotedb/grpcdb"
     9  	protodb "github.com/tendermint/tmlibs/db/remotedb/proto"
    10  )
    11  
    12  func Example() {
    13  	addr := ":8998"
    14  	cert := "server.crt"
    15  	key := "server.key"
    16  	go func() {
    17  		if err := grpcdb.ListenAndServe(addr, cert, key); err != nil {
    18  			log.Fatalf("BindServer: %v", err)
    19  		}
    20  	}()
    21  
    22  	client, err := grpcdb.NewClient(addr, cert)
    23  	if err != nil {
    24  		log.Fatalf("Failed to create grpcDB client: %v", err)
    25  	}
    26  
    27  	ctx := context.Background()
    28  	// 1. Initialize the DB
    29  	in := &protodb.Init{
    30  		Type: "leveldb",
    31  		Name: "grpc-uno-test",
    32  		Dir:  ".",
    33  	}
    34  	if _, err := client.Init(ctx, in); err != nil {
    35  		log.Fatalf("Init error: %v", err)
    36  	}
    37  
    38  	// 2. Now it can be used!
    39  	query1 := &protodb.Entity{Key: []byte("Project"), Value: []byte("Tmlibs-on-gRPC")}
    40  	if _, err := client.SetSync(ctx, query1); err != nil {
    41  		log.Fatalf("SetSync err: %v", err)
    42  	}
    43  
    44  	query2 := &protodb.Entity{Key: []byte("Project")}
    45  	read, err := client.Get(ctx, query2)
    46  	if err != nil {
    47  		log.Fatalf("Get err: %v", err)
    48  	}
    49  	if g, w := read.Value, []byte("Tmlibs-on-gRPC"); !bytes.Equal(g, w) {
    50  		log.Fatalf("got= (%q ==> % X)\nwant=(%q ==> % X)", g, g, w, w)
    51  	}
    52  }