Add interface test for create and open failures.
This commit adds an interface test to ensure that failures which occur while creating or opening a database are properly handled.
This commit is contained in:
parent
53ea2cf0ba
commit
d4c1214496
1 changed files with 42 additions and 0 deletions
|
@ -93,3 +93,45 @@ func TestAddDuplicateDriver(t *testing.T) {
|
|||
}
|
||||
teardown()
|
||||
}
|
||||
|
||||
// TestCreateOpenFail ensures that errors which occur while opening or closing
|
||||
// a database are handled properly.
|
||||
func TestCreateOpenFail(t *testing.T) {
|
||||
// bogusCreateDB is a function which acts as a bogus create and open
|
||||
// driver function that intentionally returns a failure which can be
|
||||
// detected.
|
||||
dbType := "createopenfail"
|
||||
openError := fmt.Errorf("failed to create or open database for "+
|
||||
"database type [%v]", dbType)
|
||||
bogusCreateDB := func(string) (btcdb.Db, error) {
|
||||
return nil, openError
|
||||
}
|
||||
|
||||
// Create and add driver that intentionally fails when created or opened
|
||||
// to ensure errors on database open and create are handled properly.
|
||||
driver := btcdb.DriverDB{
|
||||
DbType: dbType,
|
||||
Create: bogusCreateDB,
|
||||
Open: bogusCreateDB,
|
||||
}
|
||||
btcdb.AddDBDriver(driver)
|
||||
|
||||
// Ensure creating a database with the new type fails with the expected
|
||||
// error.
|
||||
_, err := btcdb.CreateDB(dbType, "createfailtest")
|
||||
if err != openError {
|
||||
t.Errorf("TestCreateOpenFail: expected error not received - "+
|
||||
"got: %v, want %v", err, openError)
|
||||
return
|
||||
}
|
||||
|
||||
// Ensure opening a database with the new type fails with the expected
|
||||
// error.
|
||||
_, err = btcdb.OpenDB(dbType, "openfailtest")
|
||||
if err != openError {
|
||||
t.Errorf("TestCreateOpenFail: expected error not received - "+
|
||||
"got: %v, want %v", err, openError)
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue