github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/swarm/shed/db_test.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:44</date> 10 //</624450117503553536> 11 12 13 package shed 14 15 import ( 16 "io/ioutil" 17 "os" 18 "testing" 19 ) 20 21 //testnewdb构造新的db 22 //并验证架构是否正确初始化。 23 func TestNewDB(t *testing.T) { 24 db, cleanupFunc := newTestDB(t) 25 defer cleanupFunc() 26 27 s, err := db.getSchema() 28 if err != nil { 29 t.Fatal(err) 30 } 31 if s.Fields == nil { 32 t.Error("schema fields are empty") 33 } 34 if len(s.Fields) != 0 { 35 t.Errorf("got schema fields length %v, want %v", len(s.Fields), 0) 36 } 37 if s.Indexes == nil { 38 t.Error("schema indexes are empty") 39 } 40 if len(s.Indexes) != 0 { 41 t.Errorf("got schema indexes length %v, want %v", len(s.Indexes), 0) 42 } 43 } 44 45 //testdb_persistence创建一个db,保存一个字段并关闭该db。 46 //然后,它构造另一个数据库并trues来检索保存的值。 47 func TestDB_persistence(t *testing.T) { 48 dir, err := ioutil.TempDir("", "shed-test-persistence") 49 if err != nil { 50 t.Fatal(err) 51 } 52 defer os.RemoveAll(dir) 53 54 db, err := NewDB(dir, "") 55 if err != nil { 56 t.Fatal(err) 57 } 58 stringField, err := db.NewStringField("preserve-me") 59 if err != nil { 60 t.Fatal(err) 61 } 62 want := "persistent value" 63 err = stringField.Put(want) 64 if err != nil { 65 t.Fatal(err) 66 } 67 err = db.Close() 68 if err != nil { 69 t.Fatal(err) 70 } 71 72 db2, err := NewDB(dir, "") 73 if err != nil { 74 t.Fatal(err) 75 } 76 stringField2, err := db2.NewStringField("preserve-me") 77 if err != nil { 78 t.Fatal(err) 79 } 80 got, err := stringField2.Get() 81 if err != nil { 82 t.Fatal(err) 83 } 84 if got != want { 85 t.Errorf("got string %q, want %q", got, want) 86 } 87 } 88 89 //newtestdb是构造 90 //临时数据库并返回一个清理函数,该函数必须 91 //调用以删除数据。 92 func newTestDB(t *testing.T) (db *DB, cleanupFunc func()) { 93 t.Helper() 94 95 dir, err := ioutil.TempDir("", "shed-test") 96 if err != nil { 97 t.Fatal(err) 98 } 99 cleanupFunc = func() { os.RemoveAll(dir) } 100 db, err = NewDB(dir, "") 101 if err != nil { 102 cleanupFunc() 103 t.Fatal(err) 104 } 105 return db, cleanupFunc 106 } 107