MCPcopy
hub / github.com/dropbox/godropbox / TestSimple

Method TestSimple

sys/filelock/filelock_test.go:23–57  ·  view source on GitHub ↗
(c *C)

Source from the content-addressed store, hash-verified

21var _ = Suite(&FileLockSuite{})
22
23func (s *FileLockSuite) TestSimple(c *C) {
24 lockName := "testflock0"
25
26 fl1 := New(lockName)
27 fl2 := New(lockName)
28
29 c.Assert(fl1.Lock(), IsNil)
30 err := fl2.TryLock()
31 c.Assert(err, NotNil)
32 c.Assert(IsHeldElsewhere(err), IsTrue)
33
34 // unlock it now and try again.
35 c.Assert(fl1.Unlock(), IsNil)
36 err = fl2.TryLock()
37 c.Assert(err, IsNil)
38 c.Assert(IsHeldElsewhere(err), IsFalse)
39
40 // now perform blocking Lock in Go Routine
41 doneChan := make(chan struct{}, 0)
42 go func() {
43 c.Assert(fl1.Lock(), IsNil)
44 close(doneChan)
45 }()
46
47 select {
48 case <-doneChan:
49 c.Fatal("Locking block didn't actually block!")
50 case <-time.After(10 * time.Millisecond):
51 }
52
53 c.Assert(fl2.Unlock(), IsNil)
54
55 <-doneChan
56 c.Assert(fl1.Unlock(), IsNil)
57}
58
59func (s *FileLockSuite) TestSharedSimple(c *C) {
60 lockName := "testflock1"

Callers

nothing calls this directly

Calls 6

IsHeldElsewhereFunction · 0.85
NewFunction · 0.70
LockMethod · 0.65
TryLockMethod · 0.65
UnlockMethod · 0.65
AfterMethod · 0.65

Tested by

no test coverage detected