func TestWatchControllers(t *testing.T) { fakeWatcher := watch.NewFake() manager := MakeReplicationManager(nil) manager.watchMaker = func() (watch.Interface, error) { return fakeWatcher, nil } var testControllerSpec api.ReplicationController received := make(chan struct{}) manager.syncHandler = func(controllerSpec api.ReplicationController) error { if !reflect.DeepEqual(controllerSpec, testControllerSpec) { t.Errorf("Expected %#v, but got %#v", testControllerSpec, controllerSpec) } close(received) return nil } go manager.watchControllers() // Test normal case testControllerSpec.ID = "foo" fakeWatcher.Add(&testControllerSpec) select { case <-received: case <-time.After(10 * time.Millisecond): t.Errorf("Expected 1 call but got 0") } }
func TestWatchControllers(t *testing.T) { client := FakeWatcher{watch.NewFake(), &client.Fake{}} manager := NewReplicationManager(client) var testControllerSpec api.ReplicationController received := make(chan struct{}) manager.syncHandler = func(controllerSpec api.ReplicationController) error { if !reflect.DeepEqual(controllerSpec, testControllerSpec) { t.Errorf("Expected %#v, but got %#v", testControllerSpec, controllerSpec) } close(received) return nil } resourceVersion := uint64(0) go manager.watchControllers(&resourceVersion) // Test normal case testControllerSpec.ID = "foo" client.w.Add(&testControllerSpec) select { case <-received: case <-time.After(10 * time.Millisecond): t.Errorf("Expected 1 call but got 0") } }
func TestWatchControllers(t *testing.T) { defer beginTimeout(20 * time.Second).done() fakeEtcd := tools.MakeFakeEtcdClient(t) manager := MakeReplicationManager(fakeEtcd, nil) var testControllerSpec api.ReplicationController received := make(chan bool) manager.syncHandler = func(controllerSpec api.ReplicationController) error { if !reflect.DeepEqual(controllerSpec, testControllerSpec) { t.Errorf("Expected %#v, but got %#v", testControllerSpec, controllerSpec) } close(received) return nil } go manager.watchControllers() fakeEtcd.WaitForWatchCompletion() // Test normal case testControllerSpec.ID = "foo" fakeEtcd.WatchResponse <- &etcd.Response{ Action: "set", Node: &etcd.Node{ Value: util.MakeJSONString(testControllerSpec), }, } select { case <-received: case <-time.After(10 * time.Millisecond): t.Errorf("Expected 1 call but got 0") } // Test error case fakeEtcd.WatchInjectError <- fmt.Errorf("Injected error") // Did everything shut down? if _, open := <-fakeEtcd.WatchResponse; open { t.Errorf("An injected error did not cause a graceful shutdown") } // Test purposeful shutdown go manager.watchControllers() fakeEtcd.WaitForWatchCompletion() fakeEtcd.WatchStop <- true // Did everything shut down? if _, open := <-fakeEtcd.WatchResponse; open { t.Errorf("A stop did not cause a graceful shutdown") } }