func TestWAL_ClosedSegments(t *testing.T) { dir := MustTempDir() defer os.RemoveAll(dir) w := tsm1.NewWAL(dir) if err := w.Open(); err != nil { t.Fatalf("error opening WAL: %v", err) } files, err := w.ClosedSegments() if err != nil { t.Fatalf("error getting closed segments: %v", err) } if got, exp := len(files), 0; got != exp { t.Fatalf("close segment length mismatch: got %v, exp %v", got, exp) } if _, err := w.WritePoints(map[string][]tsm1.Value{ "cpu,host=A#!~#value": []tsm1.Value{ tsm1.NewValue(time.Unix(1, 0), 1.1), }, }); err != nil { t.Fatalf("error writing points: %v", err) } if err := w.Close(); err != nil { t.Fatalf("error closing wal: %v", err) } // Re-open the WAL w = tsm1.NewWAL(dir) defer w.Close() if err := w.Open(); err != nil { t.Fatalf("error opening WAL: %v", err) } files, err = w.ClosedSegments() if err != nil { t.Fatalf("error getting closed segments: %v", err) } if got, exp := len(files), 1; got != exp { t.Fatalf("close segment length mismatch: got %v, exp %v", got, exp) } }
func TestWAL_Delete(t *testing.T) { dir := MustTempDir() defer os.RemoveAll(dir) w := tsm1.NewWAL(dir) if err := w.Open(); err != nil { t.Fatalf("error opening WAL: %v", err) } files, err := w.ClosedSegments() if err != nil { t.Fatalf("error getting closed segments: %v", err) } if got, exp := len(files), 0; got != exp { t.Fatalf("close segment length mismatch: got %v, exp %v", got, exp) } if _, err := w.Delete([]string{"cpu"}); err != nil { t.Fatalf("error writing points: %v", err) } if err := w.Close(); err != nil { t.Fatalf("error closing wal: %v", err) } // Re-open the WAL w = tsm1.NewWAL(dir) defer w.Close() if err := w.Open(); err != nil { t.Fatalf("error opening WAL: %v", err) } files, err = w.ClosedSegments() if err != nil { t.Fatalf("error getting closed segments: %v", err) } if got, exp := len(files), 1; got != exp { t.Fatalf("close segment length mismatch: got %v, exp %v", got, exp) } }