Elasticsearch from 6.x to 7.17.13 mocking issue IndicesAdminClient.class

35 Views Asked by At

I needed to update the ES version from 6.8.17 to 7.17.3.

After I've updated I tried to run the tests but they kept failing when I do:

final IndicesAdminClient indicesAdminClient =  EasyMock.mock(IndicesAdminClient.class);

In two different tests I get errors when this line is executed. enter image description here

The code:

    @Test
    public void testIfIndexExists() {
        final String indexName = "my-index";
        final Client searchClient  = EasyMock.mock(Client.class);
        final AdminClient adminClient =  EasyMock.mock(AdminClient.class);
        final IndicesAdminClient indicesAdminClient =  EasyMock.mock(IndicesAdminClient.class);
        EasyMock.expect(searchClient.admin()).andReturn(adminClient);
        EasyMock.expect(adminClient.indices()).andReturn(indicesAdminClient);
        final IndicesExistsResponseFuture existsRequestFuture = new IndicesExistsResponseFuture();
        EasyMock.expect(indicesAdminClient.exists(EasyMock.anyObject(IndicesExistsRequest.class))).andReturn(existsRequestFuture);
        EasyMock.replay(searchClient);
        EasyMock.replay(adminClient);
        EasyMock.replay(indicesAdminClient);
        PowerMockito.mockStatic(EsConfig.class);
        PowerMockito.when(EsConfig.getClient()).thenReturn(searchClient);
        final ElasticIndexCreator elasticIndexCreator =  new ElasticIndexCreator();
        assertTrue(elasticIndexCreator.indexExists(indexName));     
    }
public class IndicesExistsResponseFuture implements ActionFuture<IndicesExistsResponse> {

    @Override
    public boolean cancel(boolean mayInterruptIfRunning) {
        return false;
    }

    @Override
    public IndicesExistsResponse get() throws InterruptedException, ExecutionException {
        return new IndicesExistsResponse(true);
    }

    @Override
    public IndicesExistsResponse get(long timeout, TimeUnit unit)
            throws InterruptedException, ExecutionException, TimeoutException {
        return null;
    }

    @Override
    public boolean isCancelled() {
        return false;
    }

    @Override
    public boolean isDone() {
        return false;
    }

    @Override
    public IndicesExistsResponse actionGet() {
        return null;
    }

    @Override
    public IndicesExistsResponse actionGet(String timeout) {
        return null;
    }

    @Override
    public IndicesExistsResponse actionGet(long timeoutMillis) {
        return null;
    }

    @Override
    public IndicesExistsResponse actionGet(long timeout, TimeUnit unit) {
        return null;
    }

    @Override
    public IndicesExistsResponse actionGet(TimeValue timeout) {
        return null;
    }

}

0

There are 0 best solutions below