github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/fn_pt_name_test.go (about) 1 // Unless explicitly stated otherwise all files in this repository are licensed 2 // under the MIT License. 3 // This product includes software developed at Guance Cloud (https://www.guance.com/). 4 // Copyright 2021-present Guance, Inc. 5 6 package funcs 7 8 import ( 9 "testing" 10 "time" 11 12 "github.com/GuanceCloud/cliutils/pipeline/ptinput" 13 "github.com/GuanceCloud/cliutils/point" 14 "github.com/stretchr/testify/assert" 15 ) 16 17 func TestPtName(t *testing.T) { 18 defatultPtName := "default" 19 20 cases := []struct { 21 name, pl, in string 22 out string 23 expect string 24 fail bool 25 }{ 26 { 27 name: "pt_name_set_and_get", 28 in: `162.62.81.1 - - [29/Nov/2021:07:30:50 +0000] "123 /?signature=b8d8ea×tamp=1638171049 HTTP/1.1" 200 413 "-" "Mozilla/4.0"`, 29 pl: ` 30 set_tag(client_ip) 31 grok(_, "%{IPORHOST:client_ip} %{NOTSPACE} %{NOTSPACE} \\[%{HTTPDATE:time}\\] \"%{DATA:data} %{GREEDYDATA} HTTP/%{NUMBER}\" %{INT:status_code} %{INT:bytes}") 32 cast(data, "int") 33 add_key("pt_name",pt_name(client_ip)) 34 35 `, 36 out: "pt_name", 37 expect: "162.62.81.1", 38 fail: false, 39 }, 40 { 41 name: "pt_name_set_str_and_get", 42 in: `162.62.81.1 - - [29/Nov/2021:07:30:50 +0000] "123 /?signature=b8d8ea×tamp=1638171049 HTTP/1.1" 200 413 "-" "Mozilla/4.0"`, 43 pl: ` 44 set_tag(client_ip) 45 grok(_, "%{IPORHOST:client_ip} %{NOTSPACE} %{NOTSPACE} \\[%{HTTPDATE:time}\\] \"%{DATA:data} %{GREEDYDATA} HTTP/%{NUMBER}\" %{INT:status_code} %{INT:bytes}") 46 cast(data, "int") 47 add_key("pt_name", pt_name("aa")) 48 49 `, 50 out: "pt_name", 51 expect: "aa", 52 fail: false, 53 }, 54 { 55 name: "pt_name_set_int_1_and_get", 56 in: `162.62.81.1 - - [29/Nov/2021:07:30:50 +0000] "123 /?signature=b8d8ea×tamp=1638171049 HTTP/1.1" 200 413 "-" "Mozilla/4.0"`, 57 pl: ` 58 set_tag(client_ip) 59 grok(_, "%{IPORHOST:client_ip} %{NOTSPACE} %{NOTSPACE} \\[%{HTTPDATE:time}\\] \"%{DATA:data} %{GREEDYDATA} HTTP/%{NUMBER}\" %{INT:status_code} %{INT:bytes}") 60 cast(data, "int") 61 add_key("pt_name",pt_name(1)) 62 63 `, 64 out: "pt_name", 65 expect: defatultPtName, 66 fail: false, 67 }, 68 { 69 name: "pt_name_set_int_var_and_get", 70 in: `162.62.81.1 - - [29/Nov/2021:07:30:50 +0000] "123 /?signature=b8d8ea×tamp=1638171049 HTTP/1.1" 200 413 "-" "Mozilla/4.0"`, 71 pl: ` 72 set_tag(client_ip) 73 grok(_, "%{IPORHOST:client_ip} %{NOTSPACE} %{NOTSPACE} \\[%{HTTPDATE:time}\\] \"%{DATA:data} %{GREEDYDATA} HTTP/%{NUMBER}\" %{INT:status_code} %{INT:bytes}") 74 cast(data, "int") 75 a=1 76 add_key("pt_name",pt_name(aa)) 77 `, 78 out: "pt_name", 79 expect: defatultPtName, 80 fail: false, 81 }, 82 { 83 name: "pt_name_get", 84 in: `162.62.81.1 - - [29/Nov/2021:07:30:50 +0000] "123 /?signature=b8d8ea×tamp=1638171049 HTTP/1.1" 200 413 "-" "Mozilla/4.0"`, 85 pl: ` 86 grok(_, "%{IPORHOST:client_ip} %{NOTSPACE} %{NOTSPACE} \\[%{HTTPDATE:time}\\] \"%{DATA:data} %{GREEDYDATA} HTTP/%{NUMBER}\" %{INT:status_code} %{INT:bytes}") 87 set_tag(client_ip) 88 cast(data, "int") 89 add_key("pt_name", pt_name()) 90 `, 91 out: "pt_name", 92 expect: defatultPtName, 93 fail: false, 94 }, 95 } 96 97 for idx, tc := range cases { 98 t.Run(tc.name, func(t *testing.T) { 99 runner, err := NewTestingRunner(tc.pl) 100 if err != nil { 101 if tc.fail { 102 t.Logf("[%d]expect error: %s", idx, err) 103 } else { 104 t.Errorf("[%d] failed: %s", idx, err) 105 } 106 return 107 } 108 pt := ptinput.NewPlPoint( 109 point.Logging, defatultPtName, nil, map[string]any{"message": tc.in}, time.Now()) 110 errR := runScript(runner, pt) 111 112 if errR != nil { 113 t.Fatal(errR.Error()) 114 } 115 116 _, _, e := pt.Get(tc.out) 117 assert.NoError(t, e) 118 assert.Equal(t, tc.expect, pt.GetPtName()) 119 t.Logf("[%d] PASS", idx) 120 }) 121 } 122 }