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 }