add removal test
This commit is contained in:
parent
48711af1d9
commit
9ce35aeb45
2 changed files with 55 additions and 3 deletions
22
cayley.go
22
cayley.go
|
|
@ -191,6 +191,28 @@ func main() {
|
|||
}
|
||||
|
||||
func load(qw graph.QuadWriter, cfg *config.Config, path, typ string) error {
|
||||
return decompressAndLoad(qw, cfg, path, typ, db.Load)
|
||||
}
|
||||
|
||||
func removeAll(qw graph.QuadWriter, cfg *config.Config, path, typ string) error {
|
||||
return decompressAndLoad(qw, cfg, path, typ, remove)
|
||||
}
|
||||
|
||||
func remove(qw graph.QuadWriter, cfg *config.Config, dec quad.Unmarshaler) error {
|
||||
for {
|
||||
t, err := dec.Unmarshal()
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
return err
|
||||
}
|
||||
qw.RemoveQuad(t)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func decompressAndLoad(qw graph.QuadWriter, cfg *config.Config, path, typ string, loadFn func(graph.QuadWriter, *config.Config, quad.Unmarshaler) error) error {
|
||||
var r io.Reader
|
||||
|
||||
if path == "" {
|
||||
|
|
|
|||
|
|
@ -296,8 +296,9 @@ var m2_actors = movie2.Save("name","movie2").Follow(filmToActor)
|
|||
`
|
||||
|
||||
var (
|
||||
once sync.Once
|
||||
cfg = &config.Config{
|
||||
create sync.Once
|
||||
deleteAndRecreate sync.Once
|
||||
cfg = &config.Config{
|
||||
DatabasePath: "30kmoviedata.nq.gz",
|
||||
DatabaseType: "memstore",
|
||||
ReplicationType: "single",
|
||||
|
|
@ -309,7 +310,7 @@ var (
|
|||
|
||||
func prepare(t testing.TB) {
|
||||
var err error
|
||||
once.Do(func() {
|
||||
create.Do(func() {
|
||||
handle, err = db.Open(cfg)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to open %q: %v", cfg.DatabasePath, err)
|
||||
|
|
@ -324,8 +325,37 @@ func prepare(t testing.TB) {
|
|||
})
|
||||
}
|
||||
|
||||
func deletePrepare(t testing.TB) {
|
||||
var err error
|
||||
deleteAndRecreate.Do(func() {
|
||||
prepare(t)
|
||||
if !graph.IsPersistent(cfg.DatabaseType) {
|
||||
err = removeAll(handle.QuadWriter, cfg, "", "cquad")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to remove %q: %v", cfg.DatabasePath, err)
|
||||
}
|
||||
err = load(handle.QuadWriter, cfg, "", "cquad")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to load %q: %v", cfg.DatabasePath, err)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestQueries(t *testing.T) {
|
||||
prepare(t)
|
||||
checkQueries(t)
|
||||
}
|
||||
|
||||
func TestDeletedAndRecreatedQueries(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip()
|
||||
}
|
||||
deletePrepare(t)
|
||||
checkQueries(t)
|
||||
}
|
||||
|
||||
func checkQueries(t *testing.T) {
|
||||
for _, test := range benchmarkQueries {
|
||||
if testing.Short() && test.long {
|
||||
continue
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue