func TestCreatePod(t *testing.T) {
	mockRegistry := registrytest.PodRegistry{
		Pod: &api.Pod{
			JSONBase: api.JSONBase{ID: "foo"},
			CurrentState: api.PodState{
				Host: "machine",
			},
		},
	}
	storage := RegistryStorage{
		registry:      &mockRegistry,
		podPollPeriod: time.Millisecond * 100,
		scheduler:     scheduler.MakeRoundRobinScheduler(),
		minionLister:  minion.NewRegistry([]string{"machine"}),
	}
	desiredState := api.PodState{
		Manifest: api.ContainerManifest{
			Version: "v1beta1",
		},
	}
	pod := &api.Pod{
		JSONBase:     api.JSONBase{ID: "foo"},
		DesiredState: desiredState,
	}
	channel, err := storage.Create(pod)
	if err != nil {
		t.Errorf("unexpected error: %v", err)
	}

	select {
	case <-time.After(time.Millisecond * 100):
		// Do nothing, this is expected.
	case <-channel:
		t.Error("Unexpected read from async channel")
	}
	mockRegistry.UpdatePod(api.Pod{
		JSONBase: api.JSONBase{ID: "foo"},
		CurrentState: api.PodState{
			Status: api.PodRunning,
		},
	})
	select {
	case <-time.After(time.Second * 1):
		t.Error("Unexpected timeout")
	case <-channel:
		// Do nothing, this is expected.
	}
}
func TestCreateController(t *testing.T) {
	mockRegistry := registrytest.ControllerRegistry{}
	mockPodRegistry := registrytest.PodRegistry{
		Pods: []api.Pod{
			{
				JSONBase: api.JSONBase{ID: "foo"},
				Labels:   map[string]string{"a": "b"},
			},
		},
	}
	storage := RegistryStorage{
		registry:    &mockRegistry,
		podRegistry: &mockPodRegistry,
		pollPeriod:  time.Millisecond * 1,
	}
	controller := &api.ReplicationController{
		JSONBase: api.JSONBase{ID: "test"},
		DesiredState: api.ReplicationControllerState{
			Replicas:        2,
			ReplicaSelector: map[string]string{"a": "b"},
			PodTemplate:     validPodTemplate,
		},
	}
	channel, err := storage.Create(controller)
	if err != nil {
		t.Fatalf("Unexpected error: %v", err)
	}
	if err != nil {
		t.Errorf("unexpected error: %v", err)
	}

	select {
	case <-time.After(time.Millisecond * 100):
		// Do nothing, this is expected.
	case <-channel:
		t.Error("Unexpected read from async channel")
	}

	mockPodRegistry.Lock()
	mockPodRegistry.Pods = []api.Pod{
		{
			JSONBase: api.JSONBase{ID: "foo"},
			Labels:   map[string]string{"a": "b"},
		},
		{
			JSONBase: api.JSONBase{ID: "bar"},
			Labels:   map[string]string{"a": "b"},
		},
	}
	mockPodRegistry.Unlock()

	select {
	case <-time.After(time.Second * 1):
		t.Error("Unexpected timeout")
	case <-channel:
		// Do nothing, this is expected
	}
}