1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Mock calls to system functions to facilitate unit testing

This commit is contained in:
Solomon Hykes 2013-11-20 20:05:10 +00:00
parent 2382a0f920
commit 92f94f06ae
4 changed files with 25 additions and 10 deletions

View file

@ -344,7 +344,7 @@ func setCloseOnExec(name string) {
if link == name { if link == name {
fd, err := strconv.Atoi(i.Name()) fd, err := strconv.Atoi(i.Name())
if err == nil { if err == nil {
syscall.CloseOnExec(fd) SyscallCloseOnExec(fd)
} }
} }
} }
@ -716,7 +716,7 @@ func (devices *DeviceSet) Shutdown() error {
for path, count := range devices.activeMounts { for path, count := range devices.activeMounts {
for i := count; i > 0; i-- { for i := count; i > 0; i-- {
if err := syscall.Unmount(path, 0); err != nil { if err := SyscallUnmount(path, 0); err != nil {
utils.Debugf("Shutdown unmounting %s, error: %s\n", path, err) utils.Debugf("Shutdown unmounting %s, error: %s\n", path, err)
} }
} }
@ -758,9 +758,9 @@ func (devices *DeviceSet) MountDevice(hash, path string, readOnly bool) error {
flags = flags | syscall.MS_RDONLY flags = flags | syscall.MS_RDONLY
} }
err := syscall.Mount(info.DevName(), path, "ext4", flags, "discard") err := SyscallMount(info.DevName(), path, "ext4", flags, "discard")
if err != nil && err == syscall.EINVAL { if err != nil && err == syscall.EINVAL {
err = syscall.Mount(info.DevName(), path, "ext4", flags, "") err = SyscallMount(info.DevName(), path, "ext4", flags, "")
} }
if err != nil { if err != nil {
return fmt.Errorf("Error mounting '%s' on '%s': %s", info.DevName(), path, err) return fmt.Errorf("Error mounting '%s' on '%s': %s", info.DevName(), path, err)
@ -779,7 +779,7 @@ func (devices *DeviceSet) UnmountDevice(hash, path string, deactivate bool) erro
defer devices.Unlock() defer devices.Unlock()
utils.Debugf("[devmapper] Unmount(%s)", path) utils.Debugf("[devmapper] Unmount(%s)", path)
if err := syscall.Unmount(path, 0); err != nil { if err := SyscallUnmount(path, 0); err != nil {
utils.Debugf("\n--->Err: %s\n", err) utils.Debugf("\n--->Err: %s\n", err)
return err return err
} }

View file

@ -216,7 +216,7 @@ func FindLoopDeviceFor(file *os.File) *os.File {
for i := 0; true; i++ { for i := 0; true; i++ {
path := fmt.Sprintf("/dev/loop%d", i) path := fmt.Sprintf("/dev/loop%d", i)
file, err := os.OpenFile(path, os.O_RDWR, 0) file, err := OSOpenFile(path, os.O_RDWR, 0)
if err != nil { if err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {
return nil return nil

View file

@ -241,19 +241,19 @@ func dmTaskAddTargetFct(task *CDmTask,
func dmGetLoopbackBackingFile(fd uintptr) (uint64, uint64, syscall.Errno) { func dmGetLoopbackBackingFile(fd uintptr) (uint64, uint64, syscall.Errno) {
var lo64 C.struct_loop_info64 var lo64 C.struct_loop_info64
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, C.LOOP_GET_STATUS64, _, _, err := SyscallSyscall(syscall.SYS_IOCTL, fd, C.LOOP_GET_STATUS64,
uintptr(unsafe.Pointer(&lo64))) uintptr(unsafe.Pointer(&lo64)))
return uint64(lo64.lo_device), uint64(lo64.lo_inode), err return uint64(lo64.lo_device), uint64(lo64.lo_inode), err
} }
func dmLoopbackSetCapacity(fd uintptr) syscall.Errno { func dmLoopbackSetCapacity(fd uintptr) syscall.Errno {
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, C.LOOP_SET_CAPACITY, 0) _, _, err := SyscallSyscall(syscall.SYS_IOCTL, fd, C.LOOP_SET_CAPACITY, 0)
return err return err
} }
func dmGetBlockSizeFct(fd uintptr) (int64, syscall.Errno) { func dmGetBlockSizeFct(fd uintptr) (int64, syscall.Errno) {
var size int64 var size int64
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, C.BLKGETSIZE64, _, _, err := SyscallSyscall(syscall.SYS_IOCTL, fd, C.BLKGETSIZE64,
uintptr(unsafe.Pointer(&size))) uintptr(unsafe.Pointer(&size)))
return size, err return size, err
} }
@ -308,7 +308,7 @@ func dmAttachLoopDeviceFct(filename string, fd *int) string {
} }
func getBlockSizeFct(fd uintptr, size *uint64) syscall.Errno { func getBlockSizeFct(fd uintptr, size *uint64) syscall.Errno {
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, C.BLKGETSIZE64, _, _, err := SyscallSyscall(syscall.SYS_IOCTL, fd, C.BLKGETSIZE64,
uintptr(unsafe.Pointer(&size))) uintptr(unsafe.Pointer(&size)))
return err return err
} }

View file

@ -0,0 +1,15 @@
package devmapper
import (
"syscall"
)
var (
SyscallMount = syscall.Mount
SyscallUnmount = syscall.Unmount
SyscallCloseOnExec = syscall.CloseOnExec
SyscallSyscall = syscall.Syscall
OSOpenFile = os.OpenFile
)