bd3b44be3e
The fsync package provides Mutex and RWMutex types which aim to provide the same semantics as their namesakes in the sync package, extending that locking across processes by using file locks and randomly-generated identifiers to allow processes to determine whether or not they were the last to modify a resource that's protected by the lock. Signed-off-by: Nalin Dahyabhai <nalin@redhat.com> (github: nalind)
29 lines
418 B
Go
29 lines
418 B
Go
package fsync
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestLock(t *testing.T) {
|
|
m, err := Get("lockfile")
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
m.RLock()
|
|
m.RUnlock()
|
|
m.Lock()
|
|
if !m.Updated() {
|
|
t.Errorf("lock appears to have been updated by us?")
|
|
return
|
|
}
|
|
m.Touch()
|
|
if m.Updated() {
|
|
t.Errorf("lock appears to have been updated by someone else")
|
|
return
|
|
}
|
|
m.Unlock()
|
|
r := m.RLocker()
|
|
r.Lock()
|
|
r.Unlock()
|
|
}
|