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  }