github.com/Jeffail/benthos/v3@v3.65.0/public/service/config_processor_test.go (about)

     1  package service
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestConfigProcessor(t *testing.T) {
    12  	spec := NewConfigSpec().
    13  		Field(NewProcessorField("a"))
    14  
    15  	parsedConfig, err := spec.ParseYAML(`
    16  a:
    17    bloblang: 'root = content().uppercase()'
    18  `, nil)
    19  	require.NoError(t, err)
    20  
    21  	proc, err := parsedConfig.FieldProcessor("a")
    22  	require.NoError(t, err)
    23  
    24  	res, err := proc.Process(context.Background(), NewMessage([]byte("hello world")))
    25  	require.NoError(t, err)
    26  	require.Len(t, res, 1)
    27  
    28  	resBytes, err := res[0].AsBytes()
    29  	require.NoError(t, err)
    30  	assert.Equal(t, "HELLO WORLD", string(resBytes))
    31  
    32  	// Batch processing should work the same
    33  	resBatches, err := proc.ProcessBatch(context.Background(), MessageBatch{
    34  		NewMessage([]byte("hello world")),
    35  		NewMessage([]byte("hello world two")),
    36  	})
    37  	require.NoError(t, err)
    38  	require.Len(t, resBatches, 1)
    39  	require.Len(t, resBatches[0], 2)
    40  
    41  	resBytes, err = resBatches[0][0].AsBytes()
    42  	require.NoError(t, err)
    43  	assert.Equal(t, "HELLO WORLD", string(resBytes))
    44  
    45  	resBytes, err = resBatches[0][1].AsBytes()
    46  	require.NoError(t, err)
    47  	assert.Equal(t, "HELLO WORLD TWO", string(resBytes))
    48  
    49  	require.NoError(t, proc.Close(context.Background()))
    50  }
    51  
    52  func TestConfigProcessorList(t *testing.T) {
    53  	spec := NewConfigSpec().
    54  		Field(NewProcessorListField("a"))
    55  
    56  	parsedConfig, err := spec.ParseYAML(`
    57  a:
    58    - bloblang: 'root = content().uppercase()'
    59    - bloblang: 'root = "foo: " + content()'
    60  `, nil)
    61  	require.NoError(t, err)
    62  
    63  	procs, err := parsedConfig.FieldProcessorList("a")
    64  	require.NoError(t, err)
    65  	require.Len(t, procs, 2)
    66  
    67  	res, err := procs[0].Process(context.Background(), NewMessage([]byte("hello world")))
    68  	require.NoError(t, err)
    69  	require.Len(t, res, 1)
    70  
    71  	resBytes, err := res[0].AsBytes()
    72  	require.NoError(t, err)
    73  	assert.Equal(t, "HELLO WORLD", string(resBytes))
    74  
    75  	res, err = procs[1].Process(context.Background(), NewMessage([]byte("hello world")))
    76  	require.NoError(t, err)
    77  	require.Len(t, res, 1)
    78  
    79  	resBytes, err = res[0].AsBytes()
    80  	require.NoError(t, err)
    81  	assert.Equal(t, "foo: hello world", string(resBytes))
    82  
    83  	require.NoError(t, procs[0].Close(context.Background()))
    84  	require.NoError(t, procs[1].Close(context.Background()))
    85  }