func TestGetStateAMQP(t *testing.T) { amqpURL := os.Getenv("AMQP_URL") if amqpURL == "" { return } signature := &signatures.TaskSignature{ UUID: "testTaskUUID", GroupUUID: "testGroupUUID", } go func() { backend := backends.NewAMQPBackend(amqpConfig) backend.SetStatePending(signature) <-time.After(2 * time.Millisecond) backend.SetStateReceived(signature) <-time.After(2 * time.Millisecond) backend.SetStateStarted(signature) <-time.After(2 * time.Millisecond) taskResult := &backends.TaskResult{ Type: "float64", Value: 2, } backend.SetStateSuccess(signature, taskResult) }() backend := backends.NewAMQPBackend(amqpConfig) var ( taskState *backends.TaskState err error ) for { taskState, err = backend.GetState(signature.UUID) if taskState == nil { assert.Equal(t, "No state ready", err.Error()) continue } assert.NoError(t, err) if taskState.IsCompleted() { break } } }
func TestGetStateRedis(t *testing.T) { redisURL := os.Getenv("REDIS_URL") redisPassword := os.Getenv("REDIS_PASSWORD") if redisURL == "" { return } signature := &signatures.TaskSignature{ UUID: "testTaskUUID", GroupUUID: "testGroupUUID", } backend := backends.NewRedisBackend(new(config.Config), redisURL, redisPassword, "", 0) go func() { backend.SetStatePending(signature) <-time.After(2 * time.Millisecond) backend.SetStateReceived(signature) <-time.After(2 * time.Millisecond) backend.SetStateStarted(signature) <-time.After(2 * time.Millisecond) taskResult := &backends.TaskResult{ Type: "float64", Value: 2, } backend.SetStateSuccess(signature, taskResult) }() var ( taskState *backends.TaskState err error ) for { taskState, err = backend.GetState(signature.UUID) if taskState == nil { assert.Equal(t, "redigo: nil returned", err.Error()) continue } assert.NoError(t, err) if taskState.IsCompleted() { break } } }
func TestGetStateMemcache(t *testing.T) { memcacheURL := os.Getenv("MEMCACHE_URL") if memcacheURL == "" { return } signature := &signatures.TaskSignature{ UUID: "testTaskUUID", GroupUUID: "testGroupUUID", } backend := backends.NewMemcacheBackend(new(config.Config), []string{memcacheURL}) go func() { backend.SetStatePending(signature) <-time.After(2 * time.Millisecond) backend.SetStateReceived(signature) <-time.After(2 * time.Millisecond) backend.SetStateStarted(signature) <-time.After(2 * time.Millisecond) taskResult := &backends.TaskResult{ Type: "float64", Value: 2, } backend.SetStateSuccess(signature, taskResult) }() var ( taskState *backends.TaskState err error ) for { taskState, err = backend.GetState(signature.UUID) if taskState == nil { assert.Equal(t, "memcache: cache miss", err.Error()) continue } assert.NoError(t, err) if taskState.IsCompleted() { break } } }