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 }