github.com/ncodes/nomad@v0.5.7-0.20170403112158-97adf4a74fb3/client/driver/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  
    12  func TestSyslogServer_Start_Shutdown(t *testing.T) {
    13  	dir, err := ioutil.TempDir("", "sock")
    14  	if err != nil {
    15  		t.Fatalf("Failed to create temporary direcotry: %v", err)
    16  	}
    17  
    18  	sock := path.Join(dir, "socket")
    19  	defer os.Remove(sock)
    20  
    21  	l, err := net.Listen("unix", sock)
    22  	if err != nil {
    23  		t.Fatalf("Failed to listen unix socket: %v", err)
    24  	}
    25  
    26  	s := NewSyslogServer(l, make(chan *SyslogMessage, 2048), nil)
    27  
    28  	go s.Start()
    29  	if s.done {
    30  		t.Fatalf("expected running SyslogServer, but not running")
    31  	}
    32  
    33  	received := false
    34  	go func() {
    35  		for _ = range s.messages {
    36  			received = true
    37  		}
    38  	}()
    39  
    40  	conn, err := net.Dial("unix", sock)
    41  	if err != nil {
    42  		t.Fatalf("expected access to SyslogServer, but %v", err)
    43  	}
    44  
    45  	_, err = conn.Write([]byte("syslog server test\n"))
    46  	if err != nil {
    47  		t.Fatalf("expected send data to SyslogServer but: %v", err)
    48  	}
    49  
    50  	// Need to wait until SyslogServer received the data certainly
    51  	time.Sleep(1000 * time.Millisecond)
    52  
    53  	if !received {
    54  		t.Fatalf("expected SyslogServer received data, but not received")
    55  	}
    56  
    57  	defer conn.Close()
    58  
    59  	s.Shutdown()
    60  	if !s.done {
    61  		t.Fatalf("expected SyslogServer done, but running")
    62  	}
    63  }