package com.sequenceiq.cloudbreak.service.stack.flow;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.net.ConnectException;
import java.util.Collections;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import com.ecwid.consul.transport.RawResponse;
import com.ecwid.consul.v1.ConsulClient;
import com.ecwid.consul.v1.ConsulRawClient;
import com.ecwid.consul.v1.QueryParams;
import com.sequenceiq.cloudbreak.domain.Stack;
@RunWith(MockitoJUnitRunner.class)
public class ConsulHostServiceTypeCheckerTaskTest {
private static final String AMBARI_SERVICE = "ambari-8080";
private static final String SERVICE_ENDPOINT = "/v1/catalog/service/";
private static final String SERVICE_RESPONSE = "[{\"Node\":\"ip-10-0-0-124\",\"Address\":\"10.0.0.124\",\"ServiceID\":\"10.0.0.124:ambari:8080\","
+ "\"ServiceName\":\"ambari-8080\",\"ServiceTags\":null,\"ServicePort\":8080}]";
@InjectMocks
private ConsulServiceCheckerTask task;
@Mock
private Stack stack;
@Test
@SuppressWarnings("unchecked")
public void checkStatusForConnectionError() {
ConsulRawClient raw1 = mock(ConsulRawClient.class);
ConsulClient client1 = new ConsulClient(raw1);
when(raw1.makeGetRequest(SERVICE_ENDPOINT + AMBARI_SERVICE, null, QueryParams.DEFAULT)).thenThrow(ConnectException.class);
boolean result = task.checkStatus(new ConsulContext(stack, client1, Collections.singletonList(AMBARI_SERVICE)));
assertFalse(result);
}
@Test
@SuppressWarnings("unchecked")
public void checkStatusForOneNodeResponse() {
ConsulRawClient raw1 = mock(ConsulRawClient.class);
RawResponse rawResponse = new RawResponse(200, null, SERVICE_RESPONSE, null, null, null);
ConsulClient client1 = new ConsulClient(raw1);
when(raw1.makeGetRequest(SERVICE_ENDPOINT + AMBARI_SERVICE, null, QueryParams.DEFAULT)).thenReturn(rawResponse);
boolean result = task.checkStatus(new ConsulContext(stack, client1, Collections.singletonList(AMBARI_SERVICE)));
assertTrue(result);
}
}