github.com/observiq/carbon@v0.9.11-0.20200820160507-1b872e368a5e/operator/helper/labeler_test.go (about)

     1  package helper
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/observiq/carbon/entry"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestLabeler(t *testing.T) {
    12  	os.Setenv("TEST_METADATA_PLUGIN_ENV", "foo")
    13  	defer os.Unsetenv("TEST_METADATA_PLUGIN_ENV")
    14  
    15  	cases := []struct {
    16  		name     string
    17  		config   LabelerConfig
    18  		input    *entry.Entry
    19  		expected *entry.Entry
    20  	}{
    21  		{
    22  			"AddLabelLiteral",
    23  			func() LabelerConfig {
    24  				cfg := NewLabelerConfig()
    25  				cfg.Labels = map[string]ExprStringConfig{
    26  					"label1": "value1",
    27  				}
    28  				return cfg
    29  			}(),
    30  			entry.New(),
    31  			func() *entry.Entry {
    32  				e := entry.New()
    33  				e.Labels = map[string]string{
    34  					"label1": "value1",
    35  				}
    36  				return e
    37  			}(),
    38  		},
    39  		{
    40  			"AddLabelExpr",
    41  			func() LabelerConfig {
    42  				cfg := NewLabelerConfig()
    43  				cfg.Labels = map[string]ExprStringConfig{
    44  					"label1": `EXPR("start" + "end")`,
    45  				}
    46  				return cfg
    47  			}(),
    48  			entry.New(),
    49  			func() *entry.Entry {
    50  				e := entry.New()
    51  				e.Labels = map[string]string{
    52  					"label1": "startend",
    53  				}
    54  				return e
    55  			}(),
    56  		},
    57  		{
    58  			"AddLabelEnv",
    59  			func() LabelerConfig {
    60  				cfg := NewLabelerConfig()
    61  				cfg.Labels = map[string]ExprStringConfig{
    62  					"label1": `EXPR(env("TEST_METADATA_PLUGIN_ENV"))`,
    63  				}
    64  				return cfg
    65  			}(),
    66  			entry.New(),
    67  			func() *entry.Entry {
    68  				e := entry.New()
    69  				e.Labels = map[string]string{
    70  					"label1": "foo",
    71  				}
    72  				return e
    73  			}(),
    74  		},
    75  	}
    76  
    77  	for _, tc := range cases {
    78  		t.Run(tc.name, func(t *testing.T) {
    79  			labeler, err := tc.config.Build()
    80  			require.NoError(t, err)
    81  
    82  			err = labeler.Label(tc.input)
    83  			require.NoError(t, err)
    84  			require.Equal(t, tc.expected.Labels, tc.input.Labels)
    85  		})
    86  	}
    87  }