github.com/df-mc/goleveldb@v1.1.9/leveldb/storage/mem_storage_test.go (about) 1 // Copyright (c) 2013, Suryandaru Triandana <syndtr@gmail.com> 2 // All rights reserved. 3 // 4 // Use of this source code is governed by a BSD-style license that can be 5 // found in the LICENSE file. 6 7 package storage 8 9 import ( 10 "bytes" 11 "fmt" 12 "testing" 13 ) 14 15 func TestMemStorage(t *testing.T) { 16 m := NewMemStorage() 17 18 l, err := m.Lock() 19 if err != nil { 20 t.Fatal("storage lock failed(1): ", err) 21 } 22 _, err = m.Lock() 23 if err == nil { 24 t.Fatal("expect error for second storage lock attempt") 25 } else { 26 t.Logf("storage lock got error: %s (expected)", err) 27 } 28 l.Unlock() 29 _, err = m.Lock() 30 if err != nil { 31 t.Fatal("storage lock failed(2): ", err) 32 } 33 34 w, err := m.Create(FileDesc{TypeTable, 1}) 35 if err != nil { 36 t.Fatal("Storage.Create: ", err) 37 } 38 w.Write([]byte("abc")) 39 w.Close() 40 if fds, _ := m.List(TypeAll); len(fds) != 1 { 41 t.Fatal("invalid GetFiles len") 42 } 43 buf := new(bytes.Buffer) 44 r, err := m.Open(FileDesc{TypeTable, 1}) 45 if err != nil { 46 t.Fatal("Open: got error: ", err) 47 } 48 buf.ReadFrom(r) 49 r.Close() 50 if got := buf.String(); got != "abc" { 51 t.Fatalf("Read: invalid value, want=abc got=%s", got) 52 } 53 if _, err := m.Open(FileDesc{TypeTable, 1}); err != nil { 54 t.Fatal("Open: got error: ", err) 55 } 56 if _, err := m.Open(FileDesc{TypeTable, 1}); err == nil { 57 t.Fatal("expecting error") 58 } 59 m.Remove(FileDesc{TypeTable, 1}) 60 if fds, _ := m.List(TypeAll); len(fds) != 0 { 61 t.Fatal("invalid GetFiles len", len(fds)) 62 } 63 if _, err := m.Open(FileDesc{TypeTable, 1}); err == nil { 64 t.Fatal("expecting error") 65 } 66 } 67 68 func TestMemStorageRename(t *testing.T) { 69 fd1 := FileDesc{Type: TypeTable, Num: 1} 70 fd2 := FileDesc{Type: TypeTable, Num: 2} 71 72 m := NewMemStorage() 73 w, err := m.Create(fd1) 74 if err != nil { 75 t.Fatalf("Storage.Create: %v", err) 76 } 77 78 fmt.Fprintf(w, "abc") 79 w.Close() 80 81 rd, err := m.Open(fd1) 82 if err != nil { 83 t.Fatalf("Storage.Open(%v): %v", fd1, err) 84 } 85 rd.Close() 86 87 fds, err := m.List(TypeAll) 88 if err != nil { 89 t.Fatalf("Storage.List: %v", err) 90 } 91 for _, fd := range fds { 92 if !FileDescOk(fd) { 93 t.Errorf("Storage.List -> FileDescOk(%q)", fd) 94 } 95 } 96 97 err = m.Rename(fd1, fd2) 98 if err != nil { 99 t.Fatalf("Storage.Rename: %v", err) 100 } 101 102 rd, err = m.Open(fd2) 103 if err != nil { 104 t.Fatalf("Storage.Open(%v): %v", fd2, err) 105 } 106 rd.Close() 107 108 fds, err = m.List(TypeAll) 109 if err != nil { 110 t.Fatalf("Storage.List: %v", err) 111 } 112 for _, fd := range fds { 113 if !FileDescOk(fd) { 114 t.Errorf("Storage.List -> FileDescOk(%q)", fd) 115 } 116 } 117 }