|
@@ -3,10 +3,13 @@
|
|
|
package gelf
|
|
|
|
|
|
import (
|
|
|
+ "net"
|
|
|
"testing"
|
|
|
+
|
|
|
+ "github.com/docker/docker/daemon/logger"
|
|
|
)
|
|
|
|
|
|
-//Validate parseAddress
|
|
|
+// Validate parseAddress
|
|
|
func TestParseAddress(t *testing.T) {
|
|
|
url, err := parseAddress("udp://127.0.0.1:12201")
|
|
|
if err != nil {
|
|
@@ -27,52 +30,7 @@ func TestParseAddress(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//Validate UDP options
|
|
|
-func TestUDPValidateLogOpt(t *testing.T) {
|
|
|
- err := ValidateLogOpt(map[string]string{
|
|
|
- "gelf-address": "udp://127.0.0.1:12201",
|
|
|
- "tag": "testtag",
|
|
|
- "labels": "testlabel",
|
|
|
- "env": "testenv",
|
|
|
- "env-regex": "testenv-regex",
|
|
|
- "gelf-compression-level": "9",
|
|
|
- "gelf-compression-type": "gzip",
|
|
|
- })
|
|
|
- if err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- err = ValidateLogOpt(map[string]string{
|
|
|
- "gelf-address": "udp://127.0.0.1:12201",
|
|
|
- "gelf-compression-level": "ultra",
|
|
|
- "gelf-compression-type": "zlib",
|
|
|
- })
|
|
|
- if err == nil {
|
|
|
- t.Fatal("Expected compression level error")
|
|
|
- }
|
|
|
-
|
|
|
- err = ValidateLogOpt(map[string]string{
|
|
|
- "gelf-address": "udp://127.0.0.1:12201",
|
|
|
- "gelf-compression-type": "rar",
|
|
|
- })
|
|
|
- if err == nil {
|
|
|
- t.Fatal("Expected compression type error")
|
|
|
- }
|
|
|
-
|
|
|
- err = ValidateLogOpt(map[string]string{
|
|
|
- "invalid": "invalid",
|
|
|
- })
|
|
|
- if err == nil {
|
|
|
- t.Fatal("Expected unknown option error")
|
|
|
- }
|
|
|
-
|
|
|
- err = ValidateLogOpt(map[string]string{})
|
|
|
- if err == nil {
|
|
|
- t.Fatal("Expected required parameter error")
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-//Validate TCP options
|
|
|
+// Validate TCP options
|
|
|
func TestTCPValidateLogOpt(t *testing.T) {
|
|
|
err := ValidateLogOpt(map[string]string{
|
|
|
"gelf-address": "tcp://127.0.0.1:12201",
|
|
@@ -133,3 +91,170 @@ func TestTCPValidateLogOpt(t *testing.T) {
|
|
|
t.Fatal("Expected TCP reconnect to be invalid for UDP")
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+// Validate UDP options
|
|
|
+func TestUDPValidateLogOpt(t *testing.T) {
|
|
|
+ err := ValidateLogOpt(map[string]string{
|
|
|
+ "gelf-address": "udp://127.0.0.1:12201",
|
|
|
+ "tag": "testtag",
|
|
|
+ "labels": "testlabel",
|
|
|
+ "env": "testenv",
|
|
|
+ "env-regex": "testenv-regex",
|
|
|
+ "gelf-compression-level": "9",
|
|
|
+ "gelf-compression-type": "gzip",
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = ValidateLogOpt(map[string]string{
|
|
|
+ "gelf-address": "udp://127.0.0.1:12201",
|
|
|
+ "gelf-compression-level": "ultra",
|
|
|
+ "gelf-compression-type": "zlib",
|
|
|
+ })
|
|
|
+ if err == nil {
|
|
|
+ t.Fatal("Expected compression level error")
|
|
|
+ }
|
|
|
+
|
|
|
+ err = ValidateLogOpt(map[string]string{
|
|
|
+ "gelf-address": "udp://127.0.0.1:12201",
|
|
|
+ "gelf-compression-type": "rar",
|
|
|
+ })
|
|
|
+ if err == nil {
|
|
|
+ t.Fatal("Expected compression type error")
|
|
|
+ }
|
|
|
+
|
|
|
+ err = ValidateLogOpt(map[string]string{
|
|
|
+ "invalid": "invalid",
|
|
|
+ })
|
|
|
+ if err == nil {
|
|
|
+ t.Fatal("Expected unknown option error")
|
|
|
+ }
|
|
|
+
|
|
|
+ err = ValidateLogOpt(map[string]string{})
|
|
|
+ if err == nil {
|
|
|
+ t.Fatal("Expected required parameter error")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Validate newGELFTCPWriter
|
|
|
+func TestNewGELFTCPWriter(t *testing.T) {
|
|
|
+ address := "127.0.0.1:0"
|
|
|
+ tcpAddr, err := net.ResolveTCPAddr("tcp", address)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ listener, err := net.ListenTCP("tcp", tcpAddr)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ url := "tcp://" + listener.Addr().String()
|
|
|
+ info := logger.Info{
|
|
|
+ Config: map[string]string{
|
|
|
+ "gelf-address": url,
|
|
|
+ "gelf-tcp-max-reconnect": "0",
|
|
|
+ "gelf-tcp-reconnect-delay": "0",
|
|
|
+ "tag": "{{.ID}}",
|
|
|
+ },
|
|
|
+ ContainerID: "12345678901234567890",
|
|
|
+ }
|
|
|
+
|
|
|
+ writer, err := newGELFTCPWriter(listener.Addr().String(), info)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = writer.Close()
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = listener.Close()
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Validate newGELFUDPWriter
|
|
|
+func TestNewGELFUDPWriter(t *testing.T) {
|
|
|
+ address := "127.0.0.1:0"
|
|
|
+ info := logger.Info{
|
|
|
+ Config: map[string]string{
|
|
|
+ "gelf-address": "udp://127.0.0.1:0",
|
|
|
+ "gelf-compression-level": "5",
|
|
|
+ "gelf-compression-type": "gzip",
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ writer, err := newGELFUDPWriter(address, info)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ writer.Close()
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Validate New for TCP
|
|
|
+func TestNewTCP(t *testing.T) {
|
|
|
+ address := "127.0.0.1:0"
|
|
|
+ tcpAddr, err := net.ResolveTCPAddr("tcp", address)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ listener, err := net.ListenTCP("tcp", tcpAddr)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ url := "tcp://" + listener.Addr().String()
|
|
|
+ info := logger.Info{
|
|
|
+ Config: map[string]string{
|
|
|
+ "gelf-address": url,
|
|
|
+ "gelf-tcp-max-reconnect": "0",
|
|
|
+ "gelf-tcp-reconnect-delay": "0",
|
|
|
+ },
|
|
|
+ ContainerID: "12345678901234567890",
|
|
|
+ }
|
|
|
+
|
|
|
+ logger, err := New(info)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = logger.Close()
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = listener.Close()
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Validate New for UDP
|
|
|
+func TestNewUDP(t *testing.T) {
|
|
|
+ info := logger.Info{
|
|
|
+ Config: map[string]string{
|
|
|
+ "gelf-address": "udp://127.0.0.1:0",
|
|
|
+ "gelf-compression-level": "5",
|
|
|
+ "gelf-compression-type": "gzip",
|
|
|
+ },
|
|
|
+ ContainerID: "12345678901234567890",
|
|
|
+ }
|
|
|
+
|
|
|
+ logger, err := New(info)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = logger.Close()
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+}
|