package test import ( "git.sxidc.com/service-supports/dapr_api/state" "git.sxidc.com/service-supports/dapr_api/utils" "github.com/stretchr/testify/assert" "testing" "time" ) const ( httpPort = 10080 stateStoreName = "dapr_api" ) func TestState(t *testing.T) { api := state.NewAPI(httpPort, 10*time.Second) defer state.DestroyAPI(api) key1 := utils.SimpleUUID() value1 := utils.SimpleUUID() key2 := utils.SimpleUUID() value2 := utils.SimpleUUID() err := api.SaveState(stateStoreName, []state.SaveStateRequest{ { Key: key1, Value: value1, }, { Key: key2, Value: value2, }, }) if err != nil { t.Fatal(err) } var getValue string etag, err := api.GetState(stateStoreName, key1, nil, &getValue) if err != nil { t.Fatal(err) } assert.NotEmpty(t, etag, "etag为空") assert.Equal(t, value1, getValue, "value不一致") getStateBulkItems, err := api.GetStateBulk(stateStoreName, nil, state.GetStateBulkRequest{ Keys: []string{key1, key2}, Parallelism: 1, }) if err != nil { t.Fatal(err) } assert.Equal(t, 2, len(getStateBulkItems), "获取到的state数量不正确") for _, getStateBulkItem := range getStateBulkItems { assert.NotEmpty(t, getStateBulkItem.Etag, "etag为空") if getStateBulkItem.Key != key1 && getStateBulkItem.Key != key2 { t.Fatal("批量获取到的key错误") } if getStateBulkItem.Key == key1 { assert.Equal(t, value1, getStateBulkItem.Data, "value不一致") } if getStateBulkItem.Key == key2 { assert.Equal(t, value2, getStateBulkItem.Data, "value不一致") } } err = api.DeleteState(stateStoreName, key2, nil) if err != nil { t.Fatal(err) } err = api.DeleteState(stateStoreName, key1, nil) if err != nil { t.Fatal(err) } getStateBulkItems, err = api.GetStateBulk(stateStoreName, nil, state.GetStateBulkRequest{ Keys: []string{key1, key2}, Parallelism: 1, }) if err != nil { t.Fatal(err) } for _, getStateBulkItem := range getStateBulkItems { assert.Empty(t, getStateBulkItem.Etag, "获取到的etag不为空") assert.Empty(t, getStateBulkItem.Data, "获取到的data不为空") } }