gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/store/postgresql/postgresql_test.go (about)

     1  package postgresql
     2  
     3  import (
     4  	"database/sql"
     5  	"fmt"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/kr/pretty"
    10  	"gitee.com/liuxuezhan/go-micro-v1.18.0/store"
    11  )
    12  
    13  func TestSQL(t *testing.T) {
    14  	connection := fmt.Sprintf(
    15  		"host=%s port=%d user=%s sslmode=disable dbname=%s",
    16  		"localhost",
    17  		5432,
    18  		"jake",
    19  		"test",
    20  	)
    21  	db, err := sql.Open("postgres", connection)
    22  	if err != nil {
    23  		t.Fatal(err)
    24  	}
    25  	if err := db.Ping(); err != nil {
    26  		t.Skip(err)
    27  	}
    28  	db.Close()
    29  
    30  	sqlStore, err := New(
    31  		store.Namespace("testsql"),
    32  		store.Nodes(connection),
    33  	)
    34  	if err != nil {
    35  		t.Fatal(err.Error())
    36  	}
    37  
    38  	records, err := sqlStore.List()
    39  	if err != nil {
    40  		t.Error(err)
    41  	} else {
    42  		t.Logf("%# v\n", pretty.Formatter(records))
    43  	}
    44  
    45  	err = sqlStore.Write(
    46  		&store.Record{
    47  			Key:   "test",
    48  			Value: []byte("foo"),
    49  		},
    50  		&store.Record{
    51  			Key:   "bar",
    52  			Value: []byte("baz"),
    53  		},
    54  		&store.Record{
    55  			Key:   "qux",
    56  			Value: []byte("aasad"),
    57  		},
    58  	)
    59  	if err != nil {
    60  		t.Error(err)
    61  	}
    62  	err = sqlStore.Delete("qux")
    63  	if err != nil {
    64  		t.Error(err)
    65  	}
    66  
    67  	err = sqlStore.Write(&store.Record{
    68  		Key:    "test",
    69  		Value:  []byte("bar"),
    70  		Expiry: time.Minute,
    71  	})
    72  	if err != nil {
    73  		t.Error(err)
    74  	}
    75  
    76  	records, err = sqlStore.Read("test")
    77  	if err != nil {
    78  		t.Error(err)
    79  	}
    80  	t.Logf("%# v\n", pretty.Formatter(records))
    81  	if string(records[0].Value) != "bar" {
    82  		t.Error("Expected bar, got ", string(records[0].Value))
    83  	}
    84  
    85  	time.Sleep(61 * time.Second)
    86  	_, err = sqlStore.Read("test")
    87  	switch err {
    88  	case nil:
    89  		t.Error("Key test should have expired")
    90  	default:
    91  		t.Error(err)
    92  	case store.ErrNotFound:
    93  		break
    94  	}
    95  }