| package fuzzcache |
| |
| import ( |
| "os" |
| "reflect" |
| "testing" |
| |
| "go.skia.org/infra/fuzzer/go/data" |
| "go.skia.org/infra/fuzzer/go/frontend/fuzzpool" |
| "go.skia.org/infra/go/testutils" |
| ) |
| |
| const TEST_DB_PATH = "/tmp/test-db" |
| |
| func TestBoltDBStoreAndRetrieve(t *testing.T) { |
| testutils.MediumTest(t) |
| deleteBeforeTest(t) |
| db, err := New(TEST_DB_PATH) |
| if err != nil { |
| t.Fatalf("Could not open test db: %s", err) |
| } |
| defer testutils.AssertCloses(t, db) |
| if err := db.StorePool(expectedFuzzPool, "deadbeef"); err != nil { |
| t.Errorf("Could not store pool to test db:%s ", err) |
| } |
| if err := db.StoreFuzzNames(expectedFuzzNames, "deadbeef"); err != nil { |
| t.Errorf("Could not store api tree to test db:%s ", err) |
| } |
| |
| pool := fuzzpool.New() |
| if err = db.LoadPool(pool, "deadbeef"); err != nil { |
| t.Fatalf("Error while loading pool: %s", err) |
| } |
| if !reflect.DeepEqual(expectedFuzzPool, pool) { |
| t.Errorf("Expected: %#v\n, but was: %#v", expectedFuzzPool, pool) |
| } |
| names, err := db.LoadFuzzNames("deadbeef") |
| |
| if !reflect.DeepEqual(expectedFuzzNames, names) { |
| t.Errorf("Expected: %#v\n, but was: %#v", expectedFuzzNames, names) |
| } |
| } |
| |
| func TestBoltDBDoesNotExist(t *testing.T) { |
| testutils.MediumTest(t) |
| deleteBeforeTest(t) |
| db, err := New(TEST_DB_PATH) |
| if err != nil { |
| t.Fatalf("Could not open test db: %s", err) |
| } |
| defer testutils.AssertCloses(t, db) |
| if _, err := db.LoadFuzzNames("deadbeef"); err == nil { |
| t.Errorf("Should have seen error, but did not") |
| } |
| pool := fuzzpool.New() |
| if err := db.LoadPool(pool, "deadbeef"); err == nil { |
| t.Errorf("Should have seen error, but did not") |
| } |
| } |
| |
| func deleteBeforeTest(t *testing.T) { |
| if err := os.Remove(TEST_DB_PATH); err != nil && !os.IsNotExist(err) { |
| t.Fatalf("Could not delete %s: %s", TEST_DB_PATH, err) |
| } |
| } |
| |
| var expectedFuzzNames = []string{"aaaa", "bbbb", "cccc", "dddd", "eeee", "ffff", "gggg"} |
| |
| var expectedFuzzPool = fuzzpool.NewForTests([]data.FuzzReport{data.MockReport("skpicture", "aaaa"), data.MockReport("skpicture", "bbbb"), data.MockReport("skpicture", "cccc"), data.MockReport("skpicture", "dddd"), data.MockReport("skpicture", "eeee"), data.MockReport("skpicture", "ffff"), data.MockReport("skpicture", "gggg")}) |