From c3fcf0f339792fa05492a623e69c7c4eb877f071 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Wed, 7 Jun 2017 11:12:10 -0700 Subject: [PATCH] fileutil: test some fallback functionality syscall.Flock fallback and preallocExtendTrunc --- pkg/fileutil/lock_linux_test.go | 29 +++++++++++++++++++++++++++++ pkg/fileutil/preallocate_test.go | 16 +++++++++++++--- 2 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 pkg/fileutil/lock_linux_test.go diff --git a/pkg/fileutil/lock_linux_test.go b/pkg/fileutil/lock_linux_test.go new file mode 100644 index 000000000..0f57d57a6 --- /dev/null +++ b/pkg/fileutil/lock_linux_test.go @@ -0,0 +1,29 @@ +// Copyright 2017 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// +build linux + +package fileutil + +import "testing" + +// TestLockAndUnlockSyscallFlock tests the fallback flock using the flock syscall. +func TestLockAndUnlockSyscallFlock(t *testing.T) { + oldTryLock, oldLock := linuxTryLockFile, linuxLockFile + defer func() { + linuxTryLockFile, linuxLockFile = oldTryLock, oldLock + }() + linuxTryLockFile, linuxLockFile = flockTryLockFile, flockLockFile + TestLockAndUnlock(t) +} diff --git a/pkg/fileutil/preallocate_test.go b/pkg/fileutil/preallocate_test.go index c6a357c59..c132b8510 100644 --- a/pkg/fileutil/preallocate_test.go +++ b/pkg/fileutil/preallocate_test.go @@ -20,10 +20,20 @@ import ( "testing" ) -func TestPreallocateExtend(t *testing.T) { runPreallocTest(t, testPreallocateExtend) } -func testPreallocateExtend(t *testing.T, f *os.File) { +func TestPreallocateExtend(t *testing.T) { + pf := func(f *os.File, sz int64) error { return Preallocate(f, sz, true) } + tf := func(t *testing.T, f *os.File) { testPreallocateExtend(t, f, pf) } + runPreallocTest(t, tf) +} + +func TestPreallocateExtendTrunc(t *testing.T) { + tf := func(t *testing.T, f *os.File) { testPreallocateExtend(t, f, preallocExtendTrunc) } + runPreallocTest(t, tf) +} + +func testPreallocateExtend(t *testing.T, f *os.File, pf func(*os.File, int64) error) { size := int64(64 * 1000) - if err := Preallocate(f, size, true); err != nil { + if err := pf(f, size); err != nil { t.Fatal(err) }