github.com/smithx10/nomad@v0.9.1-rc1/client/logmon/logging/syslog_server_unix_test.go (about) 1 package logging 2 3 import ( 4 "io/ioutil" 5 "net" 6 "os" 7 "path" 8 "testing" 9 "time" 10 11 "github.com/hashicorp/nomad/helper/testlog" 12 ) 13 14 func TestSyslogServer_Start_Shutdown(t *testing.T) { 15 t.Parallel() 16 dir, err := ioutil.TempDir("", "sock") 17 if err != nil { 18 t.Fatalf("Failed to create temporary directory: %v", err) 19 } 20 21 sock := path.Join(dir, "socket") 22 defer os.Remove(sock) 23 24 l, err := net.Listen("unix", sock) 25 if err != nil { 26 t.Fatalf("Failed to listen unix socket: %v", err) 27 } 28 29 s := NewSyslogServer(l, make(chan *SyslogMessage, 2048), testlog.HCLogger(t)) 30 31 go s.Start() 32 if s.done { 33 t.Fatalf("expected running SyslogServer, but not running") 34 } 35 36 received := false 37 go func() { 38 for range s.messages { 39 received = true 40 } 41 }() 42 43 conn, err := net.Dial("unix", sock) 44 if err != nil { 45 t.Fatalf("expected access to SyslogServer, but %v", err) 46 } 47 48 _, err = conn.Write([]byte("syslog server test\n")) 49 if err != nil { 50 t.Fatalf("expected send data to SyslogServer but: %v", err) 51 } 52 53 // Need to wait until SyslogServer received the data certainly 54 time.Sleep(1000 * time.Millisecond) 55 56 if !received { 57 t.Fatalf("expected SyslogServer received data, but not received") 58 } 59 60 defer conn.Close() 61 62 s.Shutdown() 63 if !s.done { 64 t.Fatalf("expected SyslogServer done, but running") 65 } 66 }