func TestBackendFactoryError(t *testing.T) { cnf := config.Config{ ResultBackend: "BOGUS", } conn, err := machinery.BackendFactory(&cnf) if assert.Error(t, err) { assert.Nil(t, conn) assert.Equal(t, "Factory failed with result backend: BOGUS", err.Error()) } if conn != nil { t.Errorf("conn = %v, should be nil", conn) } }
func TestBackendFactory(t *testing.T) { var cnf config.Config // 1) AMQP backend test cnf = config.Config{ResultBackend: "amqp://*****:*****@localhost:5672/"} actual, err := machinery.BackendFactory(&cnf) if assert.NoError(t, err) { expected := backends.NewAMQPBackend(&cnf) assert.True( t, reflect.DeepEqual(actual, expected), fmt.Sprintf("conn = %v, want %v", actual, expected), ) } // 2) Memcache backend test cnf = config.Config{ ResultBackend: "memcache://10.0.0.1:11211,10.0.0.2:11211", } actual, err = machinery.BackendFactory(&cnf) if assert.NoError(t, err) { servers := []string{"10.0.0.1:11211", "10.0.0.2:11211"} expected := backends.NewMemcacheBackend(&cnf, servers) assert.True( t, reflect.DeepEqual(actual, expected), fmt.Sprintf("conn = %v, want %v", actual, expected), ) } // 2) Redis backend test // with password cnf = config.Config{ ResultBackend: "redis://password@localhost:6379", } actual, err = machinery.BackendFactory(&cnf) if assert.NoError(t, err) { expected := backends.NewRedisBackend(&cnf, "localhost:6379", "password", "", 0) assert.True( t, reflect.DeepEqual(actual, expected), fmt.Sprintf("conn = %v, want %v", actual, expected), ) } // without password cnf = config.Config{ ResultBackend: "redis://localhost:6379", } actual, err = machinery.BackendFactory(&cnf) if assert.NoError(t, err) { expected := backends.NewRedisBackend(&cnf, "localhost:6379", "", "", 0) assert.True( t, reflect.DeepEqual(actual, expected), fmt.Sprintf("conn = %v, want %v", actual, expected), ) } // using a socket file cnf = config.Config{ ResultBackend: "redis+socket:///tmp/redis.sock", } actual, err = machinery.BackendFactory(&cnf) if assert.NoError(t, err) { expected := backends.NewRedisBackend(&cnf, "", "", "/tmp/redis.sock", 0) assert.True( t, reflect.DeepEqual(actual, expected), fmt.Sprintf("conn = %v, want %v", actual, expected), ) } // 4) MongoDB backend test cnf = config.Config{ ResultBackend: "mongodb://localhost:27017/tasks", } actual, err = machinery.BackendFactory(&cnf) if assert.NoError(t, err) { assert.NotNil(t, actual) } }