mirror of https://github.com/dapr/go-sdk.git
93 lines
2.6 KiB
Go
93 lines
2.6 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
"sync/atomic"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
const (
|
|
valueSuffix = "_value"
|
|
)
|
|
|
|
func TestGetConfigurationItem(t *testing.T) {
|
|
ctx := context.Background()
|
|
|
|
t.Run("get configuration item", func(t *testing.T) {
|
|
resp, err := testClient.GetConfigurationItem(ctx, "example-config", "mykey")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "mykey"+valueSuffix, resp.Value)
|
|
})
|
|
|
|
t.Run("get configuration item with invalid storeName", func(t *testing.T) {
|
|
_, err := testClient.GetConfigurationItem(ctx, "", "mykey")
|
|
require.Error(t, err)
|
|
})
|
|
}
|
|
|
|
func TestGetConfigurationItems(t *testing.T) {
|
|
ctx := context.Background()
|
|
|
|
keys := []string{"mykey1", "mykey2", "mykey3"}
|
|
t.Run("Test get configuration items", func(t *testing.T) {
|
|
resp, err := testClient.GetConfigurationItems(ctx, "example-config", keys)
|
|
require.NoError(t, err)
|
|
for _, k := range keys {
|
|
assert.Equal(t, k+valueSuffix, resp[k].Value)
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestSubscribeConfigurationItems(t *testing.T) {
|
|
ctx := context.Background()
|
|
|
|
var counter, totalCounter uint32
|
|
counter = 0
|
|
totalCounter = 0
|
|
keys := []string{"mykey1", "mykey2", "mykey3"}
|
|
t.Run("Test subscribe configuration items", func(t *testing.T) {
|
|
_, err := testClient.SubscribeConfigurationItems(ctx, "example-config",
|
|
keys, func(s string, items map[string]*ConfigurationItem) {
|
|
atomic.AddUint32(&counter, 1)
|
|
for _, k := range keys {
|
|
assert.Equal(t, k+valueSuffix, items[k].Value)
|
|
atomic.AddUint32(&totalCounter, 1)
|
|
}
|
|
})
|
|
require.NoError(t, err)
|
|
})
|
|
time.Sleep(time.Second*5 + time.Millisecond*500)
|
|
assert.Equal(t, uint32(5), atomic.LoadUint32(&counter))
|
|
assert.Equal(t, uint32(15), atomic.LoadUint32(&totalCounter))
|
|
}
|
|
|
|
func TestUnSubscribeConfigurationItems(t *testing.T) {
|
|
ctx := context.Background()
|
|
|
|
var counter, totalCounter uint32
|
|
t.Run("Test unsubscribe configuration items", func(t *testing.T) {
|
|
keys := []string{"mykey1", "mykey2", "mykey3"}
|
|
subscribeID, err := testClient.SubscribeConfigurationItems(ctx, "example-config",
|
|
keys, func(id string, items map[string]*ConfigurationItem) {
|
|
atomic.AddUint32(&counter, 1)
|
|
for _, k := range keys {
|
|
assert.Equal(t, k+valueSuffix, items[k].Value)
|
|
atomic.AddUint32(&totalCounter, 1)
|
|
}
|
|
})
|
|
require.NoError(t, err)
|
|
time.Sleep(time.Second * 2)
|
|
time.Sleep(time.Millisecond * 500)
|
|
err = testClient.UnsubscribeConfigurationItems(ctx, "example-config", subscribeID)
|
|
require.NoError(t, err)
|
|
})
|
|
time.Sleep(time.Second * 5)
|
|
assert.Equal(t, uint32(3), atomic.LoadUint32(&counter))
|
|
assert.Equal(t, uint32(9), atomic.LoadUint32(&totalCounter))
|
|
}
|