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 })