state_test.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package test
  2. import (
  3. "git.sxidc.com/service-supports/dapr_api/state"
  4. "git.sxidc.com/service-supports/dapr_api/utils"
  5. "github.com/stretchr/testify/assert"
  6. "testing"
  7. "time"
  8. )
  9. const (
  10. httpPort = 10080
  11. stateStoreName = "dapr_api"
  12. )
  13. func TestState(t *testing.T) {
  14. api := state.NewAPI(httpPort, 10*time.Second)
  15. defer state.DestroyAPI(api)
  16. key1 := utils.SimpleUUID()
  17. value1 := utils.SimpleUUID()
  18. key2 := utils.SimpleUUID()
  19. value2 := utils.SimpleUUID()
  20. err := api.SaveState(stateStoreName, []state.SaveStateRequest{
  21. {
  22. Key: key1,
  23. Value: value1,
  24. },
  25. {
  26. Key: key2,
  27. Value: value2,
  28. },
  29. })
  30. if err != nil {
  31. t.Fatal(err)
  32. }
  33. var getValue string
  34. etag, err := api.GetState(stateStoreName, key1, nil, &getValue)
  35. if err != nil {
  36. t.Fatal(err)
  37. }
  38. assert.NotEmpty(t, etag, "etag为空")
  39. assert.Equal(t, value1, getValue, "value不一致")
  40. getStateBulkItems, err := api.GetStateBulk(stateStoreName, nil, state.GetStateBulkRequest{
  41. Keys: []string{key1, key2},
  42. Parallelism: 1,
  43. })
  44. if err != nil {
  45. t.Fatal(err)
  46. }
  47. assert.Equal(t, 2, len(getStateBulkItems), "获取到的state数量不正确")
  48. for _, getStateBulkItem := range getStateBulkItems {
  49. assert.NotEmpty(t, getStateBulkItem.Etag, "etag为空")
  50. if getStateBulkItem.Key != key1 && getStateBulkItem.Key != key2 {
  51. t.Fatal("批量获取到的key错误")
  52. }
  53. if getStateBulkItem.Key == key1 {
  54. assert.Equal(t, value1, getStateBulkItem.Data, "value不一致")
  55. }
  56. if getStateBulkItem.Key == key2 {
  57. assert.Equal(t, value2, getStateBulkItem.Data, "value不一致")
  58. }
  59. }
  60. err = api.DeleteState(stateStoreName, key2, nil)
  61. if err != nil {
  62. t.Fatal(err)
  63. }
  64. err = api.DeleteState(stateStoreName, key1, nil)
  65. if err != nil {
  66. t.Fatal(err)
  67. }
  68. getStateBulkItems, err = api.GetStateBulk(stateStoreName, nil, state.GetStateBulkRequest{
  69. Keys: []string{key1, key2},
  70. Parallelism: 1,
  71. })
  72. if err != nil {
  73. t.Fatal(err)
  74. }
  75. for _, getStateBulkItem := range getStateBulkItems {
  76. assert.Empty(t, getStateBulkItem.Etag, "获取到的etag不为空")
  77. assert.Empty(t, getStateBulkItem.Data, "获取到的data不为空")
  78. }
  79. }