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 |
}
} |