mirror of https://github.com/docker/docs.git
devmapper: Properly restore mocked functions after test
Currently the tests that mocks or denies functions leave this state around for the next test. This is no good if we want to actually test the devicemapper code in later tests. Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
This commit is contained in:
parent
79dc316a86
commit
47c79870ea
|
@ -20,8 +20,16 @@ func init() {
|
||||||
DefaultBaseFsSize = 300 * 1024 * 1024
|
DefaultBaseFsSize = 300 * 1024 * 1024
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We use assignment here to get the right type
|
||||||
|
var (
|
||||||
|
oldMounted = Mounted
|
||||||
|
oldExecRun = execRun
|
||||||
|
)
|
||||||
|
|
||||||
// denyAllDevmapper mocks all calls to libdevmapper in the unit tests, and denies them by default
|
// denyAllDevmapper mocks all calls to libdevmapper in the unit tests, and denies them by default
|
||||||
func denyAllDevmapper() {
|
func denyAllDevmapper() {
|
||||||
|
oldExecRun = execRun
|
||||||
|
|
||||||
// Hijack all calls to libdevmapper with default panics.
|
// Hijack all calls to libdevmapper with default panics.
|
||||||
// Authorized calls are selectively hijacked in each tests.
|
// Authorized calls are selectively hijacked in each tests.
|
||||||
DmTaskCreate = func(t int) *CDmTask {
|
DmTaskCreate = func(t int) *CDmTask {
|
||||||
|
@ -77,7 +85,29 @@ func denyAllDevmapper() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func restoreAllDevmapper() {
|
||||||
|
DmGetLibraryVersion = dmGetLibraryVersionFct
|
||||||
|
DmGetNextTarget = dmGetNextTargetFct
|
||||||
|
DmLogInitVerbose = dmLogInitVerboseFct
|
||||||
|
DmSetDevDir = dmSetDevDirFct
|
||||||
|
DmTaskAddTarget = dmTaskAddTargetFct
|
||||||
|
DmTaskCreate = dmTaskCreateFct
|
||||||
|
DmTaskDestroy = dmTaskDestroyFct
|
||||||
|
DmTaskGetInfo = dmTaskGetInfoFct
|
||||||
|
DmTaskRun = dmTaskRunFct
|
||||||
|
DmTaskSetAddNode = dmTaskSetAddNodeFct
|
||||||
|
DmTaskSetCookie = dmTaskSetCookieFct
|
||||||
|
DmTaskSetMessage = dmTaskSetMessageFct
|
||||||
|
DmTaskSetName = dmTaskSetNameFct
|
||||||
|
DmTaskSetRo = dmTaskSetRoFct
|
||||||
|
DmTaskSetSector = dmTaskSetSectorFct
|
||||||
|
DmUdevWait = dmUdevWaitFct
|
||||||
|
LogWithErrnoInit = logWithErrnoInitFct
|
||||||
|
execRun = oldExecRun
|
||||||
|
}
|
||||||
|
|
||||||
func denyAllSyscall() {
|
func denyAllSyscall() {
|
||||||
|
oldMounted = Mounted
|
||||||
sysMount = func(source, target, fstype string, flags uintptr, data string) (err error) {
|
sysMount = func(source, target, fstype string, flags uintptr, data string) (err error) {
|
||||||
panic("sysMount: this method should not be called here")
|
panic("sysMount: this method should not be called here")
|
||||||
}
|
}
|
||||||
|
@ -110,6 +140,14 @@ func denyAllSyscall() {
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func restoreAllSyscall() {
|
||||||
|
sysMount = syscall.Mount
|
||||||
|
sysUnmount = syscall.Unmount
|
||||||
|
sysCloseOnExec = syscall.CloseOnExec
|
||||||
|
sysSyscall = syscall.Syscall
|
||||||
|
Mounted = oldMounted
|
||||||
|
}
|
||||||
|
|
||||||
func mkTestDirectory(t *testing.T) string {
|
func mkTestDirectory(t *testing.T) string {
|
||||||
dir, err := ioutil.TempDir("", "docker-test-devmapper-")
|
dir, err := ioutil.TempDir("", "docker-test-devmapper-")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -160,8 +198,10 @@ func TestInit(t *testing.T) {
|
||||||
)
|
)
|
||||||
defer osRemoveAll(home)
|
defer osRemoveAll(home)
|
||||||
|
|
||||||
|
denyAllDevmapper()
|
||||||
|
defer restoreAllDevmapper()
|
||||||
|
|
||||||
func() {
|
func() {
|
||||||
denyAllDevmapper()
|
|
||||||
DmSetDevDir = func(dir string) int {
|
DmSetDevDir = func(dir string) int {
|
||||||
calls["DmSetDevDir"] = true
|
calls["DmSetDevDir"] = true
|
||||||
expectedDir := "/dev"
|
expectedDir := "/dev"
|
||||||
|
@ -398,7 +438,7 @@ func mockAllDevmapper(calls Set) {
|
||||||
|
|
||||||
func TestDriverName(t *testing.T) {
|
func TestDriverName(t *testing.T) {
|
||||||
denyAllDevmapper()
|
denyAllDevmapper()
|
||||||
defer denyAllDevmapper()
|
defer restoreAllDevmapper()
|
||||||
|
|
||||||
oldInit := fakeInit()
|
oldInit := fakeInit()
|
||||||
defer restoreInit(oldInit)
|
defer restoreInit(oldInit)
|
||||||
|
@ -412,8 +452,8 @@ func TestDriverName(t *testing.T) {
|
||||||
func TestDriverCreate(t *testing.T) {
|
func TestDriverCreate(t *testing.T) {
|
||||||
denyAllDevmapper()
|
denyAllDevmapper()
|
||||||
denyAllSyscall()
|
denyAllSyscall()
|
||||||
defer denyAllSyscall()
|
defer restoreAllSyscall()
|
||||||
defer denyAllDevmapper()
|
defer restoreAllDevmapper()
|
||||||
|
|
||||||
calls := make(Set)
|
calls := make(Set)
|
||||||
mockAllDevmapper(calls)
|
mockAllDevmapper(calls)
|
||||||
|
@ -524,8 +564,8 @@ func TestDriverCreate(t *testing.T) {
|
||||||
func TestDriverRemove(t *testing.T) {
|
func TestDriverRemove(t *testing.T) {
|
||||||
denyAllDevmapper()
|
denyAllDevmapper()
|
||||||
denyAllSyscall()
|
denyAllSyscall()
|
||||||
defer denyAllSyscall()
|
defer restoreAllSyscall()
|
||||||
defer denyAllDevmapper()
|
defer restoreAllDevmapper()
|
||||||
|
|
||||||
calls := make(Set)
|
calls := make(Set)
|
||||||
mockAllDevmapper(calls)
|
mockAllDevmapper(calls)
|
||||||
|
|
Loading…
Reference in New Issue