Added a random delays feature for #8.

geesefs-0-30-9
Aaron Jacobs 2015-04-02 11:19:56 +11:00
parent 6305cb930b
commit 02d14a685e
1 changed files with 15 additions and 0 deletions

View File

@ -15,12 +15,19 @@
package fuseutil
import (
"flag"
"io"
"math/rand"
"time"
"github.com/jacobsa/fuse"
"github.com/jacobsa/fuse/fuseops"
)
var fRandDelays = flag.Bool(
"fuseutil.rand_delays", false,
"If set, randomly delay each op received, to help expose concurrency issues.")
// An interface with a method for each op type in the fuseops package. This can
// be used in conjunction with NewFileSystemServer to avoid writing a "dispatch
// loop" that switches on op types, instead receiving typed method calls
@ -109,6 +116,14 @@ func (s fileSystemServer) ServeOps(c *fuse.Connection) {
}
func (s fileSystemServer) handleOp(op fuseops.Op) {
// Delay if requested.
if *fRandDelays {
const delayLimit = 100 * time.Microsecond
delay := time.Duration(rand.Int63n(int64(delayLimit)))
time.Sleep(delay)
}
// Dispatch to the appropriate method.
switch typed := op.(type) {
default:
op.Respond(fuse.ENOSYS)