github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/fn_use_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 TestUse(t *testing.T) {
    18  	case1 := map[string]string{
    19  		"a.p": "if true {use(\"b.p\")}",
    20  		"b.p": "add_key(b,1)",
    21  		"d.p": "use(\"c.p\")",
    22  		"c.p": "use(\"a.p\") use(\"d.p\") use(\"fcName.p\")",
    23  	}
    24  
    25  	ret := [2][]string{
    26  		{"a.p", "b.p"},
    27  		{"d.p", "c.p"},
    28  	}
    29  
    30  	timenow := time.Now()
    31  
    32  	ret1, ret2 := NewTestingRunner2(case1)
    33  	assert.Equal(t, len(ret[0]), len(ret1))
    34  	assert.Equal(t, len(ret[1]), len(ret2))
    35  
    36  	for _, v := range ret[0] {
    37  		if _, ok := ret1[v]; !ok {
    38  			t.Error(v)
    39  		}
    40  	}
    41  
    42  	for _, v := range ret[1] {
    43  		if _, ok := ret2[v]; !ok {
    44  			t.Error(v)
    45  		}
    46  	}
    47  
    48  	for _, name := range ret[0] {
    49  		pt := ptinput.NewPlPoint(
    50  			point.Network, "default", map[string]string{"ax": "1"}, nil, timenow)
    51  
    52  		errR := runScript(ret1[name], pt)
    53  
    54  		if errR != nil {
    55  			t.Fatal(errR)
    56  		}
    57  		assert.Equal(t, map[string]string{"ax": "1"}, pt.Tags())
    58  		assert.Equal(t, map[string]interface{}{"b": int64(1)}, pt.Fields())
    59  		assert.Equal(t, false, pt.Dropped())
    60  		assert.Equal(t, "default", pt.GetPtName())
    61  	}
    62  }