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