github.com/aavshr/aws-sdk-go@v1.41.3/aws/csm/enable_test.go (about) 1 package csm 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "net" 7 "testing" 8 ) 9 10 func startUDPServer(done chan struct{}, fn func([]byte)) (string, error) { 11 addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0") 12 if err != nil { 13 return "", err 14 } 15 16 conn, err := net.ListenUDP("udp", addr) 17 if err != nil { 18 return "", err 19 } 20 21 buf := make([]byte, 1024) 22 go func() { 23 defer conn.Close() 24 25 for { 26 select { 27 case <-done: 28 return 29 default: 30 } 31 32 n, _, err := conn.ReadFromUDP(buf) 33 fn(buf[:n]) 34 35 if err != nil { 36 panic(err) 37 } 38 } 39 }() 40 41 return conn.LocalAddr().String(), nil 42 } 43 44 func TestDifferentParams(t *testing.T) { 45 defer func() { 46 if r := recover(); r == nil { 47 t.Errorf("expected panic with different parameters") 48 } 49 }() 50 Start("clientID2", ":0") 51 } 52 53 var MetricsCh = make(chan map[string]interface{}, 1) 54 var Done = make(chan struct{}) 55 56 func init() { 57 url, err := startUDPServer(Done, func(b []byte) { 58 m := map[string]interface{}{} 59 if err := json.Unmarshal(b, &m); err != nil { 60 panic(fmt.Sprintf("expected no error, but received %v", err)) 61 } 62 63 MetricsCh <- m 64 }) 65 66 if err != nil { 67 panic(err) 68 } 69 70 _, err = Start("clientID", url) 71 if err != nil { 72 panic(err) 73 } 74 }