1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
5 // +build !windows,!plan9
21 func runSyslog(c net.PacketConn, done chan<- string) {
25 c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
26 n, _, err := c.ReadFrom(buf[:])
27 rcvd += string(buf[:n])
35 func startServer(done chan<- string) {
36 c, e := net.ListenPacket("udp", "127.0.0.1:0")
38 log.Fatalf("net.ListenPacket failed udp :0 %v", e)
40 serverAddr = c.LocalAddr().String()
44 func skipNetTest(t *testing.T) bool {
46 // Depends on syslog daemon running, and sometimes it's not.
47 t.Logf("skipping syslog test during -short")
53 func TestNew(t *testing.T) {
54 if LOG_LOCAL7 != 23<<3 {
55 t.Fatalf("LOG_LOCAL7 has wrong value")
61 s, err := New(LOG_INFO|LOG_USER, "")
63 t.Fatalf("New() failed: %s", err)
65 // Don't send any messages.
69 func TestNewLogger(t *testing.T) {
73 f, err := NewLogger(LOG_USER|LOG_INFO, 0)
79 func TestDial(t *testing.T) {
83 f, err := Dial("", "", (LOG_LOCAL7|LOG_DEBUG)+1, "syslog_test")
85 t.Fatalf("Should have trapped bad priority")
87 f, err = Dial("", "", -1, "syslog_test")
89 t.Fatalf("Should have trapped bad priority")
91 l, err := Dial("", "", LOG_USER|LOG_ERR, "syslog_test")
93 t.Fatalf("Dial() failed: %s", err)
98 func TestUDPDial(t *testing.T) {
99 done := make(chan string)
101 l, err := Dial("udp", serverAddr, LOG_USER|LOG_INFO, "syslog_test")
103 t.Fatalf("syslog.Dial() failed: %s", err)
107 expected := fmt.Sprintf("<%d>1 ", LOG_USER+LOG_INFO) + "%s %s syslog_test[%d]: udp test\n"
109 var parsedHostname, timestamp string
111 if hostname, err := os.Hostname(); err != nil {
112 t.Fatalf("Error retrieving hostname")
114 if n, err := fmt.Sscanf(rcvd, expected, ×tamp, &parsedHostname, &pid); n != 3 ||
115 err != nil || hostname != parsedHostname {
116 t.Fatalf("s.Info() = '%q', didn't match '%q'", rcvd, expected)
121 func TestWrite(t *testing.T) {
128 {LOG_USER | LOG_ERR, "syslog_test", "", "%s %s syslog_test[%d]: \n"},
129 {LOG_USER | LOG_ERR, "syslog_test", "write test", "%s %s syslog_test[%d]: write test\n"},
130 // Write should not add \n if there already is one
131 {LOG_USER | LOG_ERR, "syslog_test", "write test 2\n", "%s %s syslog_test[%d]: write test 2\n"},
134 if hostname, err := os.Hostname(); err != nil {
135 t.Fatalf("Error retrieving hostname")
137 for _, test := range tests {
138 done := make(chan string)
140 l, err := Dial("udp", serverAddr, test.pri, test.pre)
142 t.Fatalf("syslog.Dial() failed: %s", err)
144 _, err = io.WriteString(l, test.msg)
146 t.Fatalf("WriteString() failed: %s", err)
149 test.exp = fmt.Sprintf("<%d>1 ", test.pri) + test.exp
150 var parsedHostname, timestamp string
152 if n, err := fmt.Sscanf(rcvd, test.exp, ×tamp, &parsedHostname, &pid); n != 3 ||
153 err != nil || hostname != parsedHostname {
154 t.Fatalf("s.Info() = '%q', didn't match '%q'", rcvd, test.exp)