Package org.openstreetmap.osmosis.plugin.elasticsearch

Source Code of org.openstreetmap.osmosis.plugin.elasticsearch.ElasticSearchWriterTaskUTest

package org.openstreetmap.osmosis.plugin.elasticsearch;

import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import org.elasticsearch.client.Client;
import org.junit.Before;
import org.junit.Test;
import org.openstreetmap.osmosis.core.container.v0_6.EntityContainer;
import org.openstreetmap.osmosis.core.domain.v0_6.Entity;
import org.openstreetmap.osmosis.core.domain.v0_6.EntityType;
import org.openstreetmap.osmosis.plugin.elasticsearch.builder.AbstractIndexBuilder;
import org.openstreetmap.osmosis.plugin.elasticsearch.dao.EntityDao;
import org.openstreetmap.osmosis.plugin.elasticsearch.service.IndexAdminService;
import org.openstreetmap.osmosis.plugin.elasticsearch.utils.Endpoint;
import org.openstreetmap.osmosis.plugin.elasticsearch.utils.Parameters;

public class ElasticSearchWriterTaskUTest {

  private Client clientMocked;
  private IndexAdminService indexAdminServiceMocked;
  private EntityDao entityDaoMocked;
  private Endpoint endpoint;
  private Set<AbstractIndexBuilder> indexBuilders;
  private Parameters params;

  private ElasticSearchWriterTask elasticSearchWriterTask;

  @Before
  public void setUp() throws Exception {
    clientMocked = mock(Client.class);
    indexAdminServiceMocked = mock(IndexAdminService.class);
    entityDaoMocked = mock(EntityDao.class);
    endpoint = new Endpoint(clientMocked, indexAdminServiceMocked, entityDaoMocked);
    indexBuilders = new HashSet<AbstractIndexBuilder>();
    params = new Parameters.Builder().loadResource("plugin.properties")
        .addParameter(Parameters.CONFIG_QUEUE_SIZE, "1")
        .addParameter(Parameters.CONFIG_NODE_BULK_SIZE, "1")
        .addParameter(Parameters.CONFIG_WAY_BULK_SIZE, "1")
        .addParameter(Parameters.CONFIG_WORKER_POOL_SIZE, "1").build();
    elasticSearchWriterTask = spy(new ElasticSearchWriterTask(endpoint, indexBuilders, params));
  }

  @Test
  public void process() {
    // Setup
    Entity entityMocked = mock(Entity.class);
    when(entityMocked.getType()).thenReturn(EntityType.Node);

    EntityContainer entityContainerMocked = mock(EntityContainer.class);
    when(entityContainerMocked.getEntity()).thenReturn(entityMocked);

    // Action
    elasticSearchWriterTask.process(entityContainerMocked);
    elasticSearchWriterTask.complete();

    // Assert
    verify(entityDaoMocked, times(2)).saveAll(eq(Arrays.asList(new Entity[] {})));
  }

  @Test
  public void complete() {
    // Setup
    doNothing().when(elasticSearchWriterTask).buildSpecializedIndex();

    // Action
    elasticSearchWriterTask.complete();

    // Assert
    verify(elasticSearchWriterTask, times(1)).buildSpecializedIndex();
  }

  @Test
  public void release() {
    // Action
    elasticSearchWriterTask.release();

    // Assert
    verify(clientMocked, times(1)).close();
  }

  public class DummyIndexBuilder extends AbstractIndexBuilder {

    public DummyIndexBuilder(Endpoint endpoint, Parameters params) {
      super(endpoint, params);
    }

    @Override
    public String getSpecializedIndexSuffix() {
      return "dummy";
    }

    @Override
    public void createIndex() {}

    @Override
    public void buildIndex() {}
  }

}
TOP

Related Classes of org.openstreetmap.osmosis.plugin.elasticsearch.ElasticSearchWriterTaskUTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.