pkg/deploy/reaper/reaper_test.go
0a1312ca
 package reaper
 
 import (
b1e8bc67
 	"reflect"
0a1312ca
 	"testing"
 	"time"
 
83c702b4
 	kapi "k8s.io/kubernetes/pkg/api"
 	kerrors "k8s.io/kubernetes/pkg/api/errors"
3dd75654
 	ktestclient "k8s.io/kubernetes/pkg/client/unversioned/testclient"
83c702b4
 	"k8s.io/kubernetes/pkg/runtime"
0a1312ca
 
 	"github.com/openshift/origin/pkg/client/testclient"
7aabe6b9
 	deployapi "github.com/openshift/origin/pkg/deploy/api"
 	_ "github.com/openshift/origin/pkg/deploy/api/install"
d87bad21
 	deploytest "github.com/openshift/origin/pkg/deploy/api/test"
 	deployutil "github.com/openshift/origin/pkg/deploy/util"
0a1312ca
 )
 
2429a35c
 func mkdeployment(version int64) kapi.ReplicationController {
7aabe6b9
 	deployment, _ := deployutil.MakeDeployment(deploytest.OkDeploymentConfig(version), kapi.Codecs.LegacyCodec(deployapi.SchemeGroupVersion))
d87bad21
 	return *deployment
 }
 
2429a35c
 func mkdeploymentlist(versions ...int64) *kapi.ReplicationControllerList {
9d21727b
 	list := &kapi.ReplicationControllerList{}
 	for _, v := range versions {
 		list.Items = append(list.Items, mkdeployment(v))
0a1312ca
 	}
9d21727b
 	return list
 }
 
 func TestStop(t *testing.T) {
 	notfound := func() runtime.Object {
8201efbe
 		return &(kerrors.NewNotFound(kapi.Resource("DeploymentConfig"), "config").ErrStatus)
0a1312ca
 	}
 
ad1028e5
 	tests := []struct {
 		testName  string
 		namespace string
 		name      string
432e76ef
 		oc        *testclient.Fake
ad1028e5
 		kc        *ktestclient.Fake
b1e8bc67
 		expected  []ktestclient.Action
 		kexpected []ktestclient.Action
9d21727b
 		err       bool
ad1028e5
 	}{
 		{
 			testName:  "simple stop",
 			namespace: "default",
d87bad21
 			name:      "config",
432e76ef
 			oc:        testclient.NewSimpleFake(deploytest.OkDeploymentConfig(1)),
9d21727b
 			kc:        ktestclient.NewSimpleFake(mkdeploymentlist(1)),
b1e8bc67
 			expected: []ktestclient.Action{
 				ktestclient.NewDeleteAction("deploymentconfigs", "default", "config"),
ad1028e5
 			},
b1e8bc67
 			kexpected: []ktestclient.Action{
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "default", kapi.ListOptions{}),
b1e8bc67
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "", kapi.ListOptions{}),
b1e8bc67
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
 				ktestclient.NewUpdateAction("replicationcontrollers", "", nil),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
 				ktestclient.NewDeleteAction("replicationcontrollers", "", "config-1"),
ad1028e5
 			},
f638b86d
 			err: false,
ad1028e5
 		},
 		{
 			testName:  "stop multiple controllers",
 			namespace: "default",
d87bad21
 			name:      "config",
432e76ef
 			oc:        testclient.NewSimpleFake(deploytest.OkDeploymentConfig(5)),
9d21727b
 			kc:        ktestclient.NewSimpleFake(mkdeploymentlist(1, 2, 3, 4, 5)),
b1e8bc67
 			expected: []ktestclient.Action{
 				ktestclient.NewDeleteAction("deploymentconfigs", "default", "config"),
ad1028e5
 			},
b1e8bc67
 			kexpected: []ktestclient.Action{
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "default", kapi.ListOptions{}),
b1e8bc67
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "", kapi.ListOptions{}),
b1e8bc67
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
 				ktestclient.NewUpdateAction("replicationcontrollers", "", nil),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-4"),
 				ktestclient.NewDeleteAction("replicationcontrollers", "", "config-1"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-2"),
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "", kapi.ListOptions{}),
b1e8bc67
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-2"),
 				ktestclient.NewUpdateAction("replicationcontrollers", "", nil),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-2"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-5"),
 				ktestclient.NewDeleteAction("replicationcontrollers", "", "config-2"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-3"),
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "", kapi.ListOptions{}),
b1e8bc67
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-3"),
 				ktestclient.NewUpdateAction("replicationcontrollers", "", nil),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-3"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-5"),
 				ktestclient.NewDeleteAction("replicationcontrollers", "", "config-3"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-4"),
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "", kapi.ListOptions{}),
b1e8bc67
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-4"),
 				ktestclient.NewUpdateAction("replicationcontrollers", "", nil),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-4"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-5"),
 				ktestclient.NewDeleteAction("replicationcontrollers", "", "config-4"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-5"),
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "", kapi.ListOptions{}),
b1e8bc67
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-5"),
 				ktestclient.NewUpdateAction("replicationcontrollers", "", nil),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-5"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-5"),
 				ktestclient.NewDeleteAction("replicationcontrollers", "", "config-5"),
ad1028e5
 			},
f638b86d
 			err: false,
9d21727b
 		},
 		{
 			testName:  "no config, some deployments",
 			namespace: "default",
 			name:      "config",
432e76ef
 			oc:        testclient.NewSimpleFake(notfound()),
9d21727b
 			kc:        ktestclient.NewSimpleFake(mkdeploymentlist(1)),
b1e8bc67
 			expected: []ktestclient.Action{
 				ktestclient.NewDeleteAction("deploymentconfigs", "default", "config"),
9d21727b
 			},
b1e8bc67
 			kexpected: []ktestclient.Action{
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "default", kapi.ListOptions{}),
b1e8bc67
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "", kapi.ListOptions{}),
b1e8bc67
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
 				ktestclient.NewUpdateAction("replicationcontrollers", "", nil),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
 				ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
 				ktestclient.NewDeleteAction("replicationcontrollers", "", "config-1"),
9d21727b
 			},
f638b86d
 			err: false,
9d21727b
 		},
 		{
 			testName:  "no config, no deployments",
 			namespace: "default",
 			name:      "config",
432e76ef
 			oc:        testclient.NewSimpleFake(notfound()),
9d21727b
 			kc:        ktestclient.NewSimpleFake(&kapi.ReplicationControllerList{}),
b1e8bc67
 			expected: []ktestclient.Action{
 				ktestclient.NewDeleteAction("deploymentconfigs", "default", "config"),
9d21727b
 			},
b1e8bc67
 			kexpected: []ktestclient.Action{
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "default", kapi.ListOptions{}),
9d21727b
 			},
f638b86d
 			err: true,
9d21727b
 		},
 		{
 			testName:  "config, no deployments",
 			namespace: "default",
 			name:      "config",
432e76ef
 			oc:        testclient.NewSimpleFake(deploytest.OkDeploymentConfig(5)),
9d21727b
 			kc:        ktestclient.NewSimpleFake(&kapi.ReplicationControllerList{}),
b1e8bc67
 			expected: []ktestclient.Action{
 				ktestclient.NewDeleteAction("deploymentconfigs", "default", "config"),
9d21727b
 			},
b1e8bc67
 			kexpected: []ktestclient.Action{
f638b86d
 				ktestclient.NewListAction("replicationcontrollers", "default", kapi.ListOptions{}),
9d21727b
 			},
f638b86d
 			err: false,
ad1028e5
 		},
0a1312ca
 	}
ad1028e5
 
9d21727b
 	for _, test := range tests {
432e76ef
 		reaper := &DeploymentConfigReaper{oc: test.oc, kc: test.kc, pollInterval: time.Millisecond, timeout: time.Millisecond}
f638b86d
 		err := reaper.Stop(test.namespace, test.name, 1*time.Second, nil)
d3282b30
 
9d21727b
 		if !test.err && err != nil {
 			t.Errorf("%s: unexpected error: %v", test.testName, err)
 		}
 		if test.err && err == nil {
 			t.Errorf("%s: expected an error", test.testName)
0a1312ca
 		}
b1e8bc67
 		if len(test.oc.Actions()) != len(test.expected) {
6ac6e564
 			t.Fatalf("%s: unexpected actions: %v, expected %v", test.testName, test.oc.Actions(), test.expected)
ad1028e5
 		}
b1e8bc67
 		for j, actualAction := range test.oc.Actions() {
 			if !reflect.DeepEqual(actualAction, test.expected[j]) {
 				t.Errorf("%s: unexpected action: %s, expected %s", test.testName, actualAction, test.expected[j])
ad1028e5
 			}
 		}
c76e7b47
 		if len(test.kc.Actions()) != len(test.kexpected) {
 			t.Fatalf("%s: unexpected actions: %v, expected %v", test.testName, test.kc.Actions(), test.kexpected)
ad1028e5
 		}
b1e8bc67
 		for j, actualAction := range test.kc.Actions() {
 			e, a := test.kexpected[j], actualAction
 			if e.GetVerb() != a.GetVerb() ||
 				e.GetNamespace() != a.GetNamespace() ||
 				e.GetResource() != a.GetResource() ||
 				e.GetSubresource() != a.GetSubresource() {
 				t.Errorf("%s: unexpected action[%d]: %s, expected %s", test.testName, j, a, e)
 			}
 
 			switch a.(type) {
 			case ktestclient.GetAction, ktestclient.DeleteAction:
 				if !reflect.DeepEqual(e, a) {
 					t.Errorf("%s: unexpected action[%d]: %s, expected %s", test.testName, j, a, e)
 				}
ad1028e5
 			}
 		}
0a1312ca
 	}
 }