persist_test.go (2604B)
1 package engine 2 3 import ( 4 "bytes" 5 "context" 6 "testing" 7 8 "git.defalsify.org/vise.git/cache" 9 memdb "git.defalsify.org/vise.git/db/mem" 10 "git.defalsify.org/vise.git/persist" 11 "git.defalsify.org/vise.git/state" 12 ) 13 14 func TestPersistNewAcrossEngine(t *testing.T) { 15 var err error 16 var cfg Config 17 generateTestData(t) 18 st := state.NewState(1) 19 ca := cache.NewCache() 20 rs := newTestWrapper(dataDir, st) 21 ctx := context.Background() 22 store := memdb.NewMemDb() 23 store.Connect(ctx, "") 24 pe := persist.NewPersister(store) 25 en := NewEngine(cfg, rs) 26 en = en.WithState(st) 27 en = en.WithMemory(ca) 28 en = en.WithPersister(pe) 29 cont, err := en.Exec(ctx, []byte{}) 30 if err != nil { 31 t.Fatal(err) 32 } 33 if !cont { 34 t.Errorf("expected cont") 35 } 36 37 r := bytes.NewBuffer(nil) 38 _, err = en.Flush(ctx, r) 39 if err != nil { 40 t.Fatal(err) 41 } 42 43 cont, err = en.Exec(ctx, []byte("1")) 44 if err != nil { 45 t.Fatal(err) 46 } 47 if !cont { 48 t.Errorf("expected cont") 49 } 50 r = bytes.NewBuffer(nil) 51 _, err = en.Flush(ctx, r) 52 if err != nil { 53 t.Fatal(err) 54 } 55 56 err = en.Finish(ctx) 57 if err != nil { 58 t.Fatal(err) 59 } 60 61 cfg.FlagCount = 1 62 pe = persist.NewPersister(store) 63 en = NewEngine(cfg, rs) 64 en = en.WithPersister(pe) 65 cont, err = en.Exec(ctx, []byte{}) 66 if err != nil { 67 t.Fatal(err) 68 } 69 if !cont { 70 t.Errorf("expected cont") 71 } 72 location, _ := st.Where() 73 if location != "foo" { 74 t.Errorf("expected location 'foo', got '%s", location) 75 } 76 } 77 78 func TestPersistSameAcrossEngine(t *testing.T) { 79 var err error 80 var cfg Config 81 generateTestData(t) 82 st := state.NewState(1) 83 ca := cache.NewCache() 84 rs := newTestWrapper(dataDir, st) 85 ctx := context.Background() 86 store := memdb.NewMemDb() 87 store.Connect(ctx, "") 88 pe := persist.NewPersister(store) 89 pe = pe.WithFlush() 90 en := NewEngine(cfg, rs) 91 en = en.WithState(st) 92 en = en.WithMemory(ca) 93 en = en.WithPersister(pe) 94 cont, err := en.Exec(ctx, []byte{}) 95 if err != nil { 96 t.Fatal(err) 97 } 98 if !cont { 99 t.Errorf("expected cont") 100 } 101 102 r := bytes.NewBuffer(nil) 103 _, err = en.Flush(ctx, r) 104 if err != nil { 105 t.Fatal(err) 106 } 107 108 cont, err = en.Exec(ctx, []byte("1")) 109 if err != nil { 110 t.Fatal(err) 111 } 112 if !cont { 113 t.Errorf("expected cont") 114 } 115 r = bytes.NewBuffer(nil) 116 _, err = en.Flush(ctx, r) 117 if err != nil { 118 t.Fatal(err) 119 } 120 121 err = en.Finish(ctx) 122 if err != nil { 123 t.Fatal(err) 124 } 125 126 cfg.FlagCount = 1 127 en = NewEngine(cfg, rs) 128 en = en.WithPersister(pe) 129 cont, err = en.Exec(ctx, []byte{}) 130 if err != nil { 131 t.Fatal(err) 132 } 133 if !cont { 134 t.Errorf("expected cont") 135 } 136 location, _ := st.Where() 137 if location != "foo" { 138 t.Errorf("expected location 'foo', got '%s", location) 139 } 140 }