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:
parent
2382a0f920
commit
92f94f06ae
4 changed files with 25 additions and 10 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
15
graphdriver/devmapper/sys.go
Normal file
15
graphdriver/devmapper/sys.go
Normal 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
|
||||||
|
)
|
Loading…
Add table
Reference in a new issue