Merge pull request #32373 from nebril/petset-count-test-master

Automatic merge from submit-queue

PetSet replica count status test

**What this PR does / why we need it**: It adds a test for PetSet status replica count. It should fail now, but will pass when https://github.com/kubernetes/kubernetes/pull/32117 is merged.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #31965

**Special notes for your reviewer**: It will need to be rebased after #32117 is merged in, don't need detailed review before that.

**Release note**:
```release-note
NONE
```

Added fakeKubeClient and other fake types needed to test what is sent to
API when replica count is updated. These fakes can be extended for
other tests.
pull/6/head
Kubernetes Submit Queue 2016-09-29 23:37:18 -07:00 committed by GitHub
commit a2cd107e14
1 changed files with 54 additions and 2 deletions

View File

@ -25,6 +25,9 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/client/cache"
fake_internal "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/unversioned"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/unversioned/fake"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/util/errors"
)
@ -268,8 +271,7 @@ func TestPetSetBlockingPetIsCleared(t *testing.T) {
}
}
// TODO(mkwiek): test if the petset.Status.Replicas is actually correct
func TestPetSetReplicaCount(t *testing.T) {
func TestSyncPetSetBlockedPet(t *testing.T) {
psc, fc := newFakePetSetController()
ps := newPetSet(3)
i, _ := psc.syncPetSet(ps, fc.getPodList())
@ -277,3 +279,53 @@ func TestPetSetReplicaCount(t *testing.T) {
t.Errorf("syncPetSet should return actual amount of pods")
}
}
type fakeClient struct {
fake_internal.Clientset
petSetClient *fakePetSetClient
}
func (c *fakeClient) Apps() unversioned.AppsInterface {
return &fakeApps{c, &fake.FakeApps{}}
}
type fakeApps struct {
*fakeClient
*fake.FakeApps
}
func (c *fakeApps) PetSets(namespace string) unversioned.PetSetInterface {
c.petSetClient.Namespace = namespace
return c.petSetClient
}
type fakePetSetClient struct {
*fake.FakePetSets
Namespace string
replicas int
}
func (f *fakePetSetClient) UpdateStatus(petSet *apps.PetSet) (*apps.PetSet, error) {
f.replicas = petSet.Status.Replicas
return petSet, nil
}
func TestPetSetReplicaCount(t *testing.T) {
fpsc := &fakePetSetClient{}
psc, _ := newFakePetSetController()
psc.kubeClient = &fakeClient{
petSetClient: fpsc,
}
ps := newPetSet(3)
psKey := fmt.Sprintf("%v/%v", ps.Namespace, ps.Name)
psc.psStore.Store.Add(ps)
if err := psc.Sync(psKey); err != nil {
t.Errorf("Error during sync of deleted petset %v", err)
}
if fpsc.replicas != 1 {
t.Errorf("Replicas count sent as status update for PetSet should be 1, is %d instead", fpsc.replicas)
}
}