10 cmn "github.com/tendermint/tmlibs/common"
13 func TestSIGHUP(t *testing.T) {
15 // First, create an AutoFile writing to a tempfile dir
16 file, name := cmn.Tempfile("sighup_test")
17 if err := file.Close(); err != nil {
18 t.Fatalf("Error creating tempfile: %v", err)
20 // Here is the actual AutoFile
21 af, err := OpenAutoFile(name)
23 t.Fatalf("Error creating autofile: %v", err)
27 _, err = af.Write([]byte("Line 1\n"))
29 t.Fatalf("Error writing to autofile: %v", err)
31 _, err = af.Write([]byte("Line 2\n"))
33 t.Fatalf("Error writing to autofile: %v", err)
37 err = os.Rename(name, name+"_old")
39 t.Fatalf("Error moving autofile: %v", err)
42 // Send SIGHUP to self.
43 oldSighupCounter := atomic.LoadInt32(&sighupCounter)
44 syscall.Kill(syscall.Getpid(), syscall.SIGHUP)
46 // Wait a bit... signals are not handled synchronously.
47 for atomic.LoadInt32(&sighupCounter) == oldSighupCounter {
48 time.Sleep(time.Millisecond * 10)
51 // Write more to the file.
52 _, err = af.Write([]byte("Line 3\n"))
54 t.Fatalf("Error writing to autofile: %v", err)
56 _, err = af.Write([]byte("Line 4\n"))
58 t.Fatalf("Error writing to autofile: %v", err)
60 if err := af.Close(); err != nil {
61 t.Fatalf("Error closing autofile")
64 // Both files should exist
65 if body := cmn.MustReadFile(name + "_old"); string(body) != "Line 1\nLine 2\n" {
66 t.Errorf("Unexpected body %s", body)
68 if body := cmn.MustReadFile(name); string(body) != "Line 3\nLine 4\n" {
69 t.Errorf("Unexpected body %s", body)