github.com/avenga/couper@v1.12.2/utils/server_timing_test.go (about)

     1  package utils_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/avenga/couper/utils"
     7  	"github.com/google/go-cmp/cmp"
     8  )
     9  
    10  func TestUtils_CollectMetricNames(t *testing.T) {
    11  	type testCase struct {
    12  		header string
    13  		exp    utils.ServerTimings
    14  	}
    15  
    16  	for _, tc := range []testCase{
    17  		{
    18  			`miss`, utils.ServerTimings{`miss`: ``},
    19  		},
    20  		{
    21  			`miss, db;dur=1`, utils.ServerTimings{`miss`: ``, `db`: ``},
    22  		},
    23  		{
    24  			`=`, utils.ServerTimings{},
    25  		},
    26  		{
    27  			`;, X`, utils.ServerTimings{`X`: ``},
    28  		},
    29  		{
    30  			"X" + string([]byte{4}), utils.ServerTimings{`X`: ``},
    31  		},
    32  		{
    33  			`miss;desc="...", X;DB=1`, utils.ServerTimings{`miss`: ``, `X`: ``},
    34  		},
    35  		{
    36  			`miss;desc=".,.", X;DB=1`, utils.ServerTimings{`miss`: ``, `X`: ``},
    37  		},
    38  		{
    39  			`miss;desc="`, utils.ServerTimings{`miss`: ``},
    40  		},
    41  	} {
    42  		serverTimings := make(utils.ServerTimings)
    43  
    44  		utils.CollectMetricNames(tc.header, serverTimings)
    45  
    46  		if !cmp.Equal(tc.exp, serverTimings) {
    47  			t.Errorf(cmp.Diff(tc.exp, serverTimings))
    48  		}
    49  	}
    50  }
    51  
    52  func TestUtils_MergeMetrics(t *testing.T) {
    53  	type testCase struct {
    54  		src  utils.ServerTimings
    55  		dest utils.ServerTimings
    56  		exp  int
    57  	}
    58  
    59  	for _, tc := range []testCase{
    60  		{
    61  			utils.ServerTimings{`db`: ``},
    62  			utils.ServerTimings{`db`: ``},
    63  			2,
    64  		},
    65  	} {
    66  		utils.MergeMetrics(tc.src, tc.dest)
    67  
    68  		if tc.exp != len(tc.dest) {
    69  			t.Errorf("%#v", tc.dest)
    70  		}
    71  
    72  		var newSrc = make(utils.ServerTimings)
    73  		for k, v := range tc.dest {
    74  			newSrc[k] = v
    75  		}
    76  
    77  		utils.MergeMetrics(newSrc, tc.dest)
    78  
    79  		if tc.exp != len(tc.dest)/2 {
    80  			t.Errorf("%#v", tc.dest)
    81  		}
    82  	}
    83  }