22
33import com .cloudbees .hudson .plugins .folder .Folder ;
44import hudson .model .FreeStyleProject ;
5+ import hudson .model .Project ;
6+ import hudson .model .Queue ;
7+ import hudson .model .Slave ;
8+ import hudson .model .queue .CauseOfBlockage ;
59import hudson .slaves .DumbSlave ;
610import hudson .slaves .RetentionStrategy ;
711import net .sf .json .JSONObject ;
1418import org .mockito .junit .MockitoJUnit ;
1519import org .mockito .junit .MockitoRule ;
1620
17- import static org .junit .Assert .assertNotNull ;
18- import static org .junit .Assert .assertNull ;
21+ import java .util .ArrayList ;
22+ import java .util .Calendar ;
23+
24+ import static org .junit .Assert .*;
1925import static org .mockito .Mockito .when ;
2026
2127public class KubernetesQueueTaskDispatcherTest {
@@ -31,8 +37,6 @@ public class KubernetesQueueTaskDispatcherTest {
3137
3238 private Folder folderA ;
3339 private Folder folderB ;
34- private KubernetesCloud cloudA ;
35- private KubernetesCloud cloudB ;
3640 private KubernetesSlave slaveA ;
3741 private KubernetesSlave slaveB ;
3842
@@ -42,10 +46,10 @@ public void setUpTwoClouds() throws Exception {
4246 jenkins .jenkins .add (folderA , "Folder A" );
4347 jenkins .jenkins .add (folderB , "Folder B" );
4448
45- cloudA = new KubernetesCloud ("A" );
49+ KubernetesCloud cloudA = new KubernetesCloud ("A" );
4650 cloudA .setUsageRestricted (true );
4751
48- cloudB = new KubernetesCloud ("B" );
52+ KubernetesCloud cloudB = new KubernetesCloud ("B" );
4953 cloudB .setUsageRestricted (true );
5054
5155 jenkins .jenkins .clouds .add (cloudA );
@@ -78,10 +82,11 @@ public void checkRestrictedTwoClouds() throws Exception {
7882 FreeStyleProject projectB = folderB .createProject (FreeStyleProject .class , "buildJob" );
7983 KubernetesQueueTaskDispatcher dispatcher = new KubernetesQueueTaskDispatcher ();
8084
81- assertNull (dispatcher .canTake (slaveA , projectA ));
82- assertNotNull (dispatcher .canTake (slaveB , projectA ));
83- assertNotNull (dispatcher .canTake (slaveA , projectB ));
84- assertNull (dispatcher .canTake (slaveB , projectB ));
85+ assertNull (dispatcher .canTake (slaveA , new Queue .BuildableItem (new Queue .WaitingItem (Calendar .getInstance (),
86+ projectA , new ArrayList <>()))));
87+ assertTrue (canTake (dispatcher , slaveB , projectA ) instanceof KubernetesQueueTaskDispatcher .KubernetesCloudNotAllowed );
88+ assertTrue (canTake (dispatcher , slaveA , projectB ) instanceof KubernetesQueueTaskDispatcher .KubernetesCloudNotAllowed );
89+ assertNull (canTake (dispatcher , slaveB , projectB ));
8590 }
8691
8792 @ Test
@@ -95,7 +100,7 @@ public void checkNotRestrictedClouds() throws Exception {
95100 KubernetesQueueTaskDispatcher dispatcher = new KubernetesQueueTaskDispatcher ();
96101 KubernetesSlave slave = new KubernetesSlave ("C" , new PodTemplate (), "testC" , "C" , "dockerC" , new KubernetesLauncher (), RetentionStrategy .INSTANCE );
97102
98- assertNull (dispatcher . canTake (slave , project ));
103+ assertNull (canTake (dispatcher , slave , project ));
99104 }
100105
101106
@@ -105,7 +110,7 @@ public void checkDumbSlave() throws Exception {
105110 FreeStyleProject project = jenkins .createProject (FreeStyleProject .class );
106111 KubernetesQueueTaskDispatcher dispatcher = new KubernetesQueueTaskDispatcher ();
107112
108- assertNull (dispatcher . canTake (slave , project ));
113+ assertNull (canTake (dispatcher , slave , project ));
109114 }
110115
111116 @ Test
@@ -116,9 +121,18 @@ public void checkPipelinesRestrictedTwoClouds() throws Exception {
116121 when (task .getOwnerTask ()).thenReturn (job );
117122 KubernetesQueueTaskDispatcher dispatcher = new KubernetesQueueTaskDispatcher ();
118123
119- assertNull (dispatcher .canTake (slaveA , task ));
120- assertNotNull (dispatcher .canTake (slaveB , task ));
124+ assertNull (canTake (dispatcher , slaveA , task ));
125+ assertTrue (canTake (dispatcher , slaveB , task ) instanceof KubernetesQueueTaskDispatcher .KubernetesCloudNotAllowed );
126+ }
127+
128+ private CauseOfBlockage canTake (KubernetesQueueTaskDispatcher dispatcher , Slave slave , Project project ) {
129+ return dispatcher .canTake (slave , new Queue .BuildableItem (new Queue .WaitingItem (Calendar .getInstance (),
130+ project , new ArrayList <>())));
121131 }
122132
133+ private CauseOfBlockage canTake (KubernetesQueueTaskDispatcher dispatcher , Slave slave , Queue .Task task ) {
134+ return dispatcher .canTake (slave , new Queue .BuildableItem (new Queue .WaitingItem (Calendar .getInstance (),
135+ task , new ArrayList <>())));
136+ }
123137
124138}
0 commit comments