go-vise

Constrained Size Output Virtual Machine
Info | Log | Files | Refs | README | LICENSE

fs_test.go (3529B)


      1 package fs
      2 
      3 import (
      4 	"bytes"
      5 	"context"
      6 	"io/ioutil"
      7 	"os"
      8 	"path"
      9 	"testing"
     10 
     11 	"git.defalsify.org/vise.git/db"
     12 	"git.defalsify.org/vise.git/db/dbtest"
     13 )
     14 
     15 func TestCasesFs(t *testing.T) {
     16 	ctx := context.Background()
     17 
     18 	store := NewFsDb()
     19 	d, err := ioutil.TempDir("", "vise-db-fs-*")
     20 	if err != nil {
     21 		t.Fatal(err)
     22 	}
     23 	err = store.Connect(ctx, d)
     24 	if err != nil {
     25 		t.Fatal(err)
     26 	}
     27 
     28 	err = dbtest.RunTests(t, ctx, store)
     29 	if err != nil {
     30 		t.Fatal(err)
     31 	}
     32 }
     33 
     34 func TestPutGetFs(t *testing.T) {
     35 	var dbi db.Db
     36 	ctx := context.Background()
     37 	sid := "ses"
     38 	d, err := ioutil.TempDir("", "vise-db-*")
     39 	if err != nil {
     40 		t.Fatal(err)
     41 	}
     42 	store := NewFsDb()
     43 	store.SetPrefix(db.DATATYPE_USERDATA)
     44 	store.SetSession(sid)
     45 
     46 	dbi = store
     47 	_ = dbi
     48 
     49 	err = store.Connect(ctx, d)
     50 	if err != nil {
     51 		t.Fatal(err)
     52 	}
     53 	err = store.Put(ctx, []byte("foo"), []byte("bar"))
     54 	if err != nil {
     55 		t.Fatal(err)
     56 	}
     57 	v, err := store.Get(ctx, []byte("foo"))
     58 	if err != nil {
     59 		t.Fatal(err)
     60 	}
     61 	if !bytes.Equal(v, []byte("bar")) {
     62 		t.Fatalf("expected value 'bar', found '%s'", v)
     63 	}
     64 	_, err = store.Get(ctx, []byte("bar"))
     65 	if err == nil {
     66 		t.Fatal("expected get error for key 'bar'")
     67 	}
     68 }
     69 
     70 func TestPutGetFsAlt(t *testing.T) {
     71 	ctx := context.Background()
     72 	sid := "zezion"
     73 	d, err := ioutil.TempDir("", "vise-db-*")
     74 	if err != nil {
     75 		t.Fatal(err)
     76 	}
     77 	store := NewFsDb()
     78 	store.SetPrefix(db.DATATYPE_TEMPLATE)
     79 	store.SetSession(sid)
     80 
     81 	fp := path.Join(d, sid)
     82 	err = os.MkdirAll(fp, 0700)
     83 	if err != nil {
     84 		t.Fatal(err)
     85 	}
     86 	store.Connect(ctx, fp)
     87 	fp = path.Join(fp, "inky")
     88 
     89 	b := []byte("pinky blinky clyde")
     90 	err = ioutil.WriteFile(fp, b, 0700)
     91 	if err != nil {
     92 		t.Fatal(err)
     93 	}
     94 	
     95 	v, err := store.Get(ctx, []byte("inky"))
     96 	if err != nil {
     97 		t.Fatal(err)
     98 	}
     99 	if !bytes.Equal(v, b) {
    100 		t.Fatalf("expected %x, got %x", b, v)
    101 	}
    102 }
    103 
    104 func TestConnect(t *testing.T) {
    105 	ctx := context.Background()
    106 	store := NewFsDb()
    107 	err := store.Connect(ctx, "")
    108 	if err == nil {
    109 		t.Fatal("expected error")
    110 	}
    111 	err = store.SetLock(db.DATATYPE_USERDATA, true)
    112 	if err != nil {
    113 		t.Fatal(err)
    114 	}
    115 	store.SetPrefix(db.DATATYPE_USERDATA)
    116 	if store.CheckPut() {
    117 		t.Fatal("expected checkput false")
    118 	}
    119 	err = store.Put(ctx, []byte("foo"), []byte("bar"))
    120 	if err == nil {
    121 		t.Fatal("expected error")
    122 	}
    123 	if store.CheckPut() {
    124 		t.Fatal("expected checkput false")
    125 	}
    126 	err = store.SetLock(db.DATATYPE_USERDATA, false)
    127 	if err != nil {
    128 		t.Fatal(err)
    129 	}
    130 	if !store.CheckPut() {
    131 		t.Fatal("expected checkput false")
    132 	}
    133 }
    134 
    135 func TestReopen(t *testing.T) {
    136 	ctx := context.Background()
    137 	store := NewFsDb()
    138 	d, err := ioutil.TempDir("", "vise-db-fs-*")
    139 	if err != nil {
    140 		t.Fatal(err)
    141 	}
    142 	err = store.Connect(ctx, d)
    143 	if err != nil {
    144 		t.Fatal(err)
    145 	}
    146 	err = store.Connect(ctx, d)
    147 	if err != nil {
    148 		t.Fatal(err)
    149 	}
    150 	store.SetPrefix(db.DATATYPE_USERDATA)
    151 	err = store.Put(ctx, []byte("foo"), []byte("bar"))
    152 	if err != nil {
    153 		t.Fatal(err)
    154 	}
    155 	err = store.Close()
    156 	if err != nil {
    157 		t.Fatal(err)
    158 	}
    159 
    160 	store = NewFsDb()
    161 	err = store.Connect(ctx, d)
    162 	if err != nil {
    163 		t.Fatal(err)
    164 	}
    165 	store.SetPrefix(db.DATATYPE_USERDATA)
    166 	v, err := store.Get(ctx, []byte("foo"))
    167 	if err != nil {
    168 		t.Fatal(err)
    169 	}
    170 	if !bytes.Equal(v, []byte("bar")) {
    171 		t.Fatalf("expected 'bar', got: '%s'", v)
    172 	}
    173 }
    174 
    175 func TestNoKey(t *testing.T) {
    176 	ctx := context.Background()
    177 	store := NewFsDb()
    178 	d, err := ioutil.TempDir("", "vise-db-fs-*")
    179 	if err != nil {
    180 		t.Fatal(err)
    181 	}
    182 	err = store.Connect(ctx, d)
    183 	if err != nil {
    184 		t.Fatal(err)
    185 	}
    186 	_, err = store.Get(ctx, []byte("xyzzy"))
    187 	if err == nil {
    188 		t.Fatal(err)
    189 	}
    190 }