use of com.epam.pipeline.util.CurrentThreadExecutorService in project cloud-pipeline by epam.
the class AutoscaleManagerTest method setUp.
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
autoscaleManager = new AutoscaleManager(pipelineRunManager, executorService, clusterManager, nodesManager, kubernetesManager, preferenceManager, TEST_KUBE_NAMESPACE);
when(executorService.getExecutorService()).thenReturn(new CurrentThreadExecutorService());
// Mock preferences
when(preferenceManager.getPreference(SystemPreferences.CLUSTER_NODEUP_RETRY_COUNT)).thenReturn(2);
when(preferenceManager.getPreference(SystemPreferences.CLUSTER_SPOT_MAX_ATTEMPTS)).thenReturn(1);
when(preferenceManager.getPreference(SystemPreferences.CLUSTER_SPOT)).thenReturn(true);
when(preferenceManager.getPreference(SystemPreferences.CLUSTER_MAX_SIZE)).thenReturn(1);
when(preferenceManager.getPreference(SystemPreferences.CLUSTER_NODEUP_MAX_THREADS)).thenReturn(1);
when(preferenceManager.getPreference(SystemPreferences.CLUSTER_MIN_SIZE)).thenReturn(SystemPreferences.CLUSTER_MIN_SIZE.getDefaultValue());
when(preferenceManager.getPreference(SystemPreferences.CLUSTER_RANDOM_SCHEDULING)).thenReturn(SystemPreferences.CLUSTER_RANDOM_SCHEDULING.getDefaultValue());
when(preferenceManager.getPreference(SystemPreferences.CLUSTER_HIGH_NON_BATCH_PRIORITY)).thenReturn(SystemPreferences.CLUSTER_HIGH_NON_BATCH_PRIORITY.getDefaultValue());
when(kubernetesManager.getKubernetesClient(any(Config.class))).thenReturn(kubernetesClient);
// Mock no nodes in cluster
NonNamespaceOperation<Node, NodeList, DoneableNode, Resource<Node, DoneableNode>> mockNodes = new KubernetesTestUtils.MockNodes().mockWithLabel(KubernetesConstants.RUN_ID_LABEL).mockWithoutLabel(KubernetesConstants.PAUSED_NODE_LABEL).mockNodeList(Collections.emptyList()).and().getMockedEntity();
when(kubernetesClient.nodes()).thenReturn(mockNodes);
// Mock one unsceduled pod
Pod unscheduledPipelinePod = new Pod();
ObjectMeta metadata = new ObjectMeta();
metadata.setLabels(Collections.singletonMap(KubernetesConstants.RUN_ID_LABEL, TEST_RUN_ID.toString()));
unscheduledPipelinePod.setMetadata(metadata);
PodStatus status = new PodStatus();
status.setPhase("Pending");
PodCondition condition = new PodCondition();
condition.setReason(KubernetesConstants.POD_UNSCHEDULABLE);
status.setConditions(Collections.singletonList(condition));
unscheduledPipelinePod.setStatus(status);
PipelineRun testRun = new PipelineRun();
testRun.setStatus(TaskStatus.RUNNING);
testRun.setPipelineRunParameters(Collections.emptyList());
RunInstance spotInstance = new RunInstance();
spotInstance.setSpot(true);
testRun.setInstance(spotInstance);
when(pipelineRunManager.loadPipelineRun(Mockito.eq(TEST_RUN_ID))).thenReturn(testRun);
when(clusterManager.fillInstance(any(RunInstance.class))).thenAnswer(invocation -> invocation.getArguments()[0]);
MixedOperation<Pod, PodList, DoneablePod, PodResource<Pod, DoneablePod>> mockPods = new KubernetesTestUtils.MockPods().mockNamespace(TEST_KUBE_NAMESPACE).mockWithLabel("type", "pipeline").mockWithLabel(KubernetesConstants.RUN_ID_LABEL).mockPodList(Collections.singletonList(unscheduledPipelinePod)).and().getMockedEntity();
when(kubernetesClient.pods()).thenReturn(mockPods);
}
Aggregations