github.com/Jeffail/benthos/v3@v3.65.0/lib/test/integration/cache/memcached_test.go (about)

     1  package cache
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/Jeffail/benthos/v3/internal/integration"
     9  	"github.com/Jeffail/benthos/v3/lib/cache"
    10  	"github.com/Jeffail/benthos/v3/lib/log"
    11  	"github.com/Jeffail/benthos/v3/lib/metrics"
    12  	"github.com/ory/dockertest/v3"
    13  	"github.com/stretchr/testify/assert"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  var _ = registerIntegrationTest("memcached", func(t *testing.T) {
    18  	t.Parallel()
    19  
    20  	pool, err := dockertest.NewPool("")
    21  	require.NoError(t, err)
    22  
    23  	pool.MaxWait = time.Second * 30
    24  
    25  	resource, err := pool.Run("memcached", "latest", nil)
    26  	require.NoError(t, err)
    27  	t.Cleanup(func() {
    28  		assert.NoError(t, pool.Purge(resource))
    29  	})
    30  
    31  	resource.Expire(900)
    32  	require.NoError(t, pool.Retry(func() error {
    33  		addrs := []string{fmt.Sprintf("localhost:%v", resource.GetPort("11211/tcp"))}
    34  
    35  		conf := cache.NewConfig()
    36  		conf.Memcached.Addresses = addrs
    37  
    38  		mCache, cErr := cache.NewMemcached(conf, nil, log.Noop(), metrics.Noop())
    39  		if cErr != nil {
    40  			return cErr
    41  		}
    42  
    43  		if cErr = mCache.Set("testkey", []byte("testvalue")); cErr != nil {
    44  			return cErr
    45  		}
    46  		if _, cErr = mCache.Get("testkey"); cErr != nil {
    47  			return cErr
    48  		}
    49  		return nil
    50  	}))
    51  
    52  	template := `
    53  cache_resources:
    54    - label: testcache
    55      memcached:
    56        addresses: [ localhost:$PORT ]
    57        prefix: $ID
    58  `
    59  	suite := integration.CacheTests(
    60  		integration.CacheTestOpenClose(),
    61  		integration.CacheTestMissingKey(),
    62  		integration.CacheTestDoubleAdd(),
    63  		integration.CacheTestDelete(),
    64  		integration.CacheTestGetAndSet(50),
    65  	)
    66  	suite.Run(
    67  		t, template,
    68  		integration.CacheTestOptPort(resource.GetPort("11211/tcp")),
    69  	)
    70  })