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) { 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) { fakeWatch := watch.NewFake() client := &client.Fake{Watch: fakeWatch} manager := NewReplicationManager(client) var testControllerSpec api.ReplicationController received := make(chan struct{}) manager.syncHandler = func(controllerSpec api.ReplicationController) error { if !api.Semantic.DeepDerivative(controllerSpec, testControllerSpec) { t.Errorf("Expected %#v, but got %#v", testControllerSpec, controllerSpec) } close(received) return nil } resourceVersion := "" go manager.watchControllers(&resourceVersion) // Test normal case testControllerSpec.Name = "foo" fakeWatch.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") } }
func Rename(c RollingUpdaterClient, rc *api.ReplicationController, newName string) error { oldName := rc.Name rc.Name = newName rc.ResourceVersion = "" _, err := c.CreateReplicationController(rc.Namespace, rc) if err != nil { return err } err = c.DeleteReplicationController(rc.Namespace, oldName) if err != nil && !errors.IsNotFound(err) { return err } return nil }
func TestExtractControllerJson(t *testing.T) { mockRegistry := MockControllerRegistry{} storage := ControllerRegistryStorage{ registry: &mockRegistry, } controller := api.ReplicationController{ JSONBase: api.JSONBase{ ID: "foo", }, } body, err := json.Marshal(controller) expectNoError(t, err) controllerOut, err := storage.Extract(string(body)) expectNoError(t, err) // Extract adds a Kind controller.Kind = "cluster#replicationController" if !reflect.DeepEqual(controller, controllerOut) { t.Errorf("Expected %#v, found %#v", controller, controllerOut) } }
func TestWatchControllers(t *testing.T) { fakeWatch := watch.NewFake() client := &testclient.Fake{Watch: fakeWatch} manager := NewReplicationManager(client, BurstReplicas) manager.podStoreSynced = alwaysReady var testControllerSpec api.ReplicationController received := make(chan string) // The update sent through the fakeWatcher should make its way into the workqueue, // and eventually into the syncHandler. The handler validates the received controller // and closes the received channel to indicate that the test can finish. manager.syncHandler = func(key string) error { obj, exists, err := manager.rcStore.Store.GetByKey(key) if !exists || err != nil { t.Errorf("Expected to find controller under key %v", key) } controllerSpec := *obj.(*api.ReplicationController) if !api.Semantic.DeepDerivative(controllerSpec, testControllerSpec) { t.Errorf("Expected %#v, but got %#v", testControllerSpec, controllerSpec) } close(received) return nil } // Start only the rc watcher and the workqueue, send a watch event, // and make sure it hits the sync method. stopCh := make(chan struct{}) defer close(stopCh) go manager.rcController.Run(stopCh) go util.Until(manager.worker, 10*time.Millisecond, stopCh) testControllerSpec.Name = "foo" fakeWatch.Add(&testControllerSpec) select { case <-received: case <-time.After(controllerTimeout): t.Errorf("Expected 1 call but got 0") } }
func SetNextControllerAnnotation(rc *api.ReplicationController, name string) { if rc.Annotations == nil { rc.Annotations = map[string]string{} } rc.Annotations[nextControllerAnnotation] = name }
func (storage *ControllerRegistryStorage) Extract(body string) (interface{}, error) { result := api.ReplicationController{} err := json.Unmarshal([]byte(body), &result) result.Kind = "cluster#replicationController" return result, err }
func withCreated(item *kapi.ReplicationController, creationTimestamp util.Time) *kapi.ReplicationController { item.CreationTimestamp = creationTimestamp return item }
func (self *realKubeFramework) CreateRC(ns string, rc *api.ReplicationController) (*api.ReplicationController, error) { rc.Namespace = ns return self.kubeClient.ReplicationControllers(ns).Create(rc) }