github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/daemon/logger/gelf/gelf_test.go (about) 1 //go:build linux 2 3 package gelf // import "github.com/Prakhar-Agarwal-byte/moby/daemon/logger/gelf" 4 5 import ( 6 "net" 7 "testing" 8 9 "github.com/Prakhar-Agarwal-byte/moby/daemon/logger" 10 ) 11 12 // Validate parseAddress 13 func TestParseAddress(t *testing.T) { 14 url, err := parseAddress("udp://127.0.0.1:12201") 15 if err != nil { 16 t.Fatal(err) 17 } 18 if url.String() != "udp://127.0.0.1:12201" { 19 t.Fatalf("Expected address udp://127.0.0.1:12201, got %s", url.String()) 20 } 21 22 _, err = parseAddress("127.0.0.1:12201") 23 if err == nil { 24 t.Fatal("Expected error requiring protocol") 25 } 26 27 _, err = parseAddress("http://127.0.0.1:12201") 28 if err == nil { 29 t.Fatal("Expected error restricting protocol") 30 } 31 } 32 33 // Validate TCP options 34 func TestTCPValidateLogOpt(t *testing.T) { 35 err := ValidateLogOpt(map[string]string{ 36 "gelf-address": "tcp://127.0.0.1:12201", 37 }) 38 if err != nil { 39 t.Fatal("Expected TCP to be supported") 40 } 41 42 err = ValidateLogOpt(map[string]string{ 43 "gelf-address": "tcp://127.0.0.1:12201", 44 "gelf-compression-level": "9", 45 }) 46 if err == nil { 47 t.Fatal("Expected TCP to reject compression level") 48 } 49 50 err = ValidateLogOpt(map[string]string{ 51 "gelf-address": "tcp://127.0.0.1:12201", 52 "gelf-compression-type": "gzip", 53 }) 54 if err == nil { 55 t.Fatal("Expected TCP to reject compression type") 56 } 57 58 err = ValidateLogOpt(map[string]string{ 59 "gelf-address": "tcp://127.0.0.1:12201", 60 "gelf-tcp-max-reconnect": "5", 61 "gelf-tcp-reconnect-delay": "10", 62 }) 63 if err != nil { 64 t.Fatal("Expected TCP reconnect to be a valid parameters") 65 } 66 67 err = ValidateLogOpt(map[string]string{ 68 "gelf-address": "tcp://127.0.0.1:12201", 69 "gelf-tcp-max-reconnect": "-1", 70 "gelf-tcp-reconnect-delay": "-3", 71 }) 72 if err == nil { 73 t.Fatal("Expected negative TCP reconnect to be rejected") 74 } 75 76 err = ValidateLogOpt(map[string]string{ 77 "gelf-address": "tcp://127.0.0.1:12201", 78 "gelf-tcp-max-reconnect": "invalid", 79 "gelf-tcp-reconnect-delay": "invalid", 80 }) 81 if err == nil { 82 t.Fatal("Expected TCP reconnect to be required to be an int") 83 } 84 85 err = ValidateLogOpt(map[string]string{ 86 "gelf-address": "udp://127.0.0.1:12201", 87 "gelf-tcp-max-reconnect": "1", 88 "gelf-tcp-reconnect-delay": "3", 89 }) 90 if err == nil { 91 t.Fatal("Expected TCP reconnect to be invalid for UDP") 92 } 93 } 94 95 // Validate UDP options 96 func TestUDPValidateLogOpt(t *testing.T) { 97 err := ValidateLogOpt(map[string]string{ 98 "gelf-address": "udp://127.0.0.1:12201", 99 "tag": "testtag", 100 "labels": "testlabel", 101 "labels-regex": "testlabel-regex", 102 "env": "testenv", 103 "env-regex": "testenv-regex", 104 "gelf-compression-level": "9", 105 "gelf-compression-type": "gzip", 106 }) 107 if err != nil { 108 t.Fatal(err) 109 } 110 111 err = ValidateLogOpt(map[string]string{ 112 "gelf-address": "udp://127.0.0.1:12201", 113 "gelf-compression-level": "ultra", 114 "gelf-compression-type": "zlib", 115 }) 116 if err == nil { 117 t.Fatal("Expected compression level error") 118 } 119 120 err = ValidateLogOpt(map[string]string{ 121 "gelf-address": "udp://127.0.0.1:12201", 122 "gelf-compression-type": "rar", 123 }) 124 if err == nil { 125 t.Fatal("Expected compression type error") 126 } 127 128 err = ValidateLogOpt(map[string]string{ 129 "invalid": "invalid", 130 }) 131 if err == nil { 132 t.Fatal("Expected unknown option error") 133 } 134 135 err = ValidateLogOpt(map[string]string{}) 136 if err == nil { 137 t.Fatal("Expected required parameter error") 138 } 139 } 140 141 // Validate newGELFTCPWriter 142 func TestNewGELFTCPWriter(t *testing.T) { 143 address := "127.0.0.1:0" 144 tcpAddr, err := net.ResolveTCPAddr("tcp", address) 145 if err != nil { 146 t.Fatal(err) 147 } 148 149 listener, err := net.ListenTCP("tcp", tcpAddr) 150 if err != nil { 151 t.Fatal(err) 152 } 153 154 url := "tcp://" + listener.Addr().String() 155 info := logger.Info{ 156 Config: map[string]string{ 157 "gelf-address": url, 158 "gelf-tcp-max-reconnect": "0", 159 "gelf-tcp-reconnect-delay": "0", 160 "tag": "{{.ID}}", 161 }, 162 ContainerID: "12345678901234567890", 163 } 164 165 writer, err := newGELFTCPWriter(listener.Addr().String(), info) 166 if err != nil { 167 t.Fatal(err) 168 } 169 170 err = writer.Close() 171 if err != nil { 172 t.Fatal(err) 173 } 174 175 err = listener.Close() 176 if err != nil { 177 t.Fatal(err) 178 } 179 } 180 181 // Validate newGELFUDPWriter 182 func TestNewGELFUDPWriter(t *testing.T) { 183 address := "127.0.0.1:0" 184 info := logger.Info{ 185 Config: map[string]string{ 186 "gelf-address": "udp://127.0.0.1:0", 187 "gelf-compression-level": "5", 188 "gelf-compression-type": "gzip", 189 }, 190 } 191 192 writer, err := newGELFUDPWriter(address, info) 193 if err != nil { 194 t.Fatal(err) 195 } 196 writer.Close() 197 if err != nil { 198 t.Fatal(err) 199 } 200 } 201 202 // Validate New for TCP 203 func TestNewTCP(t *testing.T) { 204 address := "127.0.0.1:0" 205 tcpAddr, err := net.ResolveTCPAddr("tcp", address) 206 if err != nil { 207 t.Fatal(err) 208 } 209 210 listener, err := net.ListenTCP("tcp", tcpAddr) 211 if err != nil { 212 t.Fatal(err) 213 } 214 215 url := "tcp://" + listener.Addr().String() 216 info := logger.Info{ 217 Config: map[string]string{ 218 "gelf-address": url, 219 "gelf-tcp-max-reconnect": "0", 220 "gelf-tcp-reconnect-delay": "0", 221 }, 222 ContainerID: "12345678901234567890", 223 } 224 225 gelfLogger, err := New(info) 226 if err != nil { 227 t.Fatal(err) 228 } 229 230 err = gelfLogger.Close() 231 if err != nil { 232 t.Fatal(err) 233 } 234 235 err = listener.Close() 236 if err != nil { 237 t.Fatal(err) 238 } 239 } 240 241 // Validate New for UDP 242 func TestNewUDP(t *testing.T) { 243 info := logger.Info{ 244 Config: map[string]string{ 245 "gelf-address": "udp://127.0.0.1:0", 246 "gelf-compression-level": "5", 247 "gelf-compression-type": "gzip", 248 }, 249 ContainerID: "12345678901234567890", 250 } 251 252 gelfLogger, err := New(info) 253 if err != nil { 254 t.Fatal(err) 255 } 256 257 err = gelfLogger.Close() 258 if err != nil { 259 t.Fatal(err) 260 } 261 }