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 {
|
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
|
var r io.Reader
|
||||||
|
|
||||||
if path == "" {
|
if path == "" {
|
||||||
|
|
|
||||||
|
|
@ -296,7 +296,8 @@ var m2_actors = movie2.Save("name","movie2").Follow(filmToActor)
|
||||||
`
|
`
|
||||||
|
|
||||||
var (
|
var (
|
||||||
once sync.Once
|
create sync.Once
|
||||||
|
deleteAndRecreate sync.Once
|
||||||
cfg = &config.Config{
|
cfg = &config.Config{
|
||||||
DatabasePath: "30kmoviedata.nq.gz",
|
DatabasePath: "30kmoviedata.nq.gz",
|
||||||
DatabaseType: "memstore",
|
DatabaseType: "memstore",
|
||||||
|
|
@ -309,7 +310,7 @@ var (
|
||||||
|
|
||||||
func prepare(t testing.TB) {
|
func prepare(t testing.TB) {
|
||||||
var err error
|
var err error
|
||||||
once.Do(func() {
|
create.Do(func() {
|
||||||
handle, err = db.Open(cfg)
|
handle, err = db.Open(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to open %q: %v", cfg.DatabasePath, err)
|
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) {
|
func TestQueries(t *testing.T) {
|
||||||
prepare(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 {
|
for _, test := range benchmarkQueries {
|
||||||
if testing.Short() && test.long {
|
if testing.Short() && test.long {
|
||||||
continue
|
continue
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue