github.com/etecs-ru/gnomock@v0.13.2/preset/memcached/preset_test.go (about)

     1  package memcached_test
     2  
     3  import (
     4  	"encoding/binary"
     5  	"strconv"
     6  	"testing"
     7  
     8  	memcachedclient "github.com/bradfitz/gomemcache/memcache"
     9  	"github.com/etecs-ru/gnomock"
    10  	"github.com/etecs-ru/gnomock/preset/memcached"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestPreset(t *testing.T) {
    15  	t.Parallel()
    16  
    17  	// Byte Values
    18  	bvs := make(map[string][]byte)
    19  
    20  	// String
    21  	bvs["a"] = []byte("foo")
    22  	// Number as byte slice
    23  	bvsB := make([]byte, 4)
    24  	binary.LittleEndian.PutUint32(bvsB, 42)
    25  	bvs["b"] = bvsB
    26  	// Number as string
    27  	bvs["c"] = []byte(strconv.FormatInt(42, 10))
    28  
    29  	// Values (string)
    30  	vs := make(map[string]string)
    31  
    32  	vs["d"] = "foo"
    33  
    34  	p := memcached.Preset(
    35  		memcached.WithByteValues(bvs),
    36  		memcached.WithValues(vs),
    37  		memcached.WithVersion("1.6.9"),
    38  	)
    39  	container, err := gnomock.Start(p)
    40  
    41  	defer func() { require.NoError(t, gnomock.Stop(container)) }()
    42  
    43  	require.NoError(t, err)
    44  
    45  	addr := container.DefaultAddress()
    46  	client := memcachedclient.New(addr)
    47  
    48  	itemA, err := client.Get("a")
    49  	require.NoError(t, err)
    50  	require.Equal(t, "foo", string(itemA.Value))
    51  
    52  	itemB, err := client.Get("b")
    53  	require.NoError(t, err)
    54  	require.Equal(t, 42, int(binary.LittleEndian.Uint32(itemB.Value)))
    55  
    56  	itemC, err := client.Get("c")
    57  	require.NoError(t, err)
    58  	valueC, err := strconv.ParseInt(string(itemC.Value), 10, 32)
    59  	require.NoError(t, err)
    60  	require.Equal(t, 42, int(valueC))
    61  
    62  	itemD, err := client.Get("d")
    63  	require.NoError(t, err)
    64  	require.Equal(t, "foo", string(itemD.Value))
    65  }
    66  
    67  func TestPreset_withDefaults(t *testing.T) {
    68  	t.Parallel()
    69  
    70  	p := memcached.Preset()
    71  	container, err := gnomock.Start(p)
    72  
    73  	defer func() { require.NoError(t, gnomock.Stop(container)) }()
    74  
    75  	require.NoError(t, err)
    76  
    77  	addr := container.DefaultAddress()
    78  	client := memcachedclient.New(addr)
    79  	require.NoError(t, client.Ping())
    80  }