github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/fn_rename_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 TestRename(t *testing.T) { 18 cases := []struct { 19 name, pl, in string 20 expected interface{} 21 fail bool 22 outkey string 23 }{ 24 { 25 name: "normal", 26 pl: ` 27 add_pattern("_second", "(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)") 28 add_pattern("_minute", "(?:[0-5][0-9])") 29 add_pattern("_hour", "(?:2[0123]|[01]?[0-9])") 30 add_pattern("time", "([^0-9]?)%{_hour:hour}:%{_minute:minute}(?::%{_second:second})([^0-9]?)") 31 grok(_, "%{time}") 32 rename(newhour, hour) 33 `, 34 in: "12:34:15", 35 expected: "12", 36 outkey: "newhour", 37 }, 38 { 39 name: "normal", 40 pl: ` 41 add_pattern("_second", "(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)") 42 add_pattern("_minute", "(?:[0-5][0-9])") 43 add_pattern("_hour", "(?:2[0123]|[01]?[0-9])") 44 add_pattern("time", "([^0-9]?)%{_hour:hour}:%{_minute:minute}(?::%{_second:second})([^0-9]?)") 45 grok(_, "%{time}") 46 rename(newsecond, second) 47 `, 48 in: "12:34:15", 49 expected: "15", 50 outkey: "newsecond", 51 }, 52 { 53 name: "normal", 54 pl: ` 55 add_pattern("_second", "(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)") 56 add_pattern("_minute", "(?:[0-5][0-9])") 57 add_pattern("_hour", "(?:2[0123]|[01]?[0-9])") 58 add_pattern("time", "([^0-9]?)%{_hour:hour}:%{_minute:minute}(?::%{_second:second})([^0-9]?)") 59 grok(_, "%{time}") 60 rename(newminute, minute) 61 `, 62 in: "12:34:15", 63 expected: "34", 64 outkey: "newminute", 65 }, 66 { 67 name: "normal", 68 pl: ` 69 add_pattern("_second", "(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)") 70 add_pattern("_minute", "(?:[0-5][0-9])") 71 add_pattern("_hour", "(?:2[0123]|[01]?[0-9])") 72 add_pattern("time", "([^0-9]?)%{_hour:hour}:%{_minute:minute}(?::%{_second:second})([^0-9]?)") 73 grok(_, "%{time}") 74 rename(minute, newminute) 75 `, 76 in: "12:34:15", 77 expected: "34", 78 outkey: "minute", 79 }, 80 } 81 for idx, tc := range cases { 82 t.Run(tc.name, func(t *testing.T) { 83 runner, err := NewTestingRunner(tc.pl) 84 if err != nil { 85 if tc.fail { 86 t.Logf("[%d]expect error: %s", idx, err) 87 } else { 88 t.Errorf("[%d] failed: %s", idx, err) 89 } 90 return 91 } 92 93 pt := ptinput.NewPlPoint( 94 point.Logging, "test", nil, map[string]any{"message": tc.in}, time.Now()) 95 errR := runScript(runner, pt) 96 97 if errR != nil { 98 t.Fatal(errR.Error()) 99 } 100 101 v, _, e := pt.Get(tc.outkey) 102 assert.NoError(t, e) 103 assert.Equal(t, tc.expected, v) 104 t.Logf("[%d] PASS", idx) 105 }) 106 } 107 }