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  }