Package org.xbib.elasticsearch.websocket.helper

Source Code of org.xbib.elasticsearch.websocket.helper.AbstractNodeTestHelper

package org.xbib.elasticsearch.websocket.helper;

import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.logging.ESLogger;
import org.elasticsearch.common.logging.ESLoggerFactory;
import org.elasticsearch.common.network.NetworkUtils;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.indices.IndexMissingException;
import org.elasticsearch.node.Node;
import org.junit.After;
import org.junit.Before;
import org.xbib.elasticsearch.action.cluster.admin.websocket.WebsocketInfoAction;
import org.xbib.elasticsearch.action.cluster.admin.websocket.WebsocketInfoRequest;
import org.xbib.elasticsearch.action.cluster.admin.websocket.WebsocketInfoResponse;

import java.net.URI;
import java.util.Map;

import static org.elasticsearch.common.collect.Maps.newHashMap;
import static org.elasticsearch.common.settings.ImmutableSettings.Builder.EMPTY_SETTINGS;
import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilder;
import static org.elasticsearch.node.NodeBuilder.nodeBuilder;

public abstract class AbstractNodeTestHelper {

    private final static ESLogger logger = ESLoggerFactory.getLogger("test");

    protected final String CLUSTER = "test-cluster-" + NetworkUtils.getLocalAddress().getHostName();

    protected final String INDEX = "test-" + NetworkUtils.getLocalAddress().getHostName().toLowerCase();

    protected Settings defaultSettings = ImmutableSettings
            .settingsBuilder()
            .put("cluster.name", CLUSTER)
            .put("threadpool.bulk.queue_size", 200)
            .build();

    private Map<String, Node> nodes = newHashMap();

    private Map<String, Client> clients = newHashMap();

    private Map<String, InetSocketTransportAddress> addresses = newHashMap();

    protected URI getAddressOfNode(String n) {
        InetSocketTransportAddress address = addresses.get(n);
        return URI.create("ws://" + address.address().getHostName() + ":" + address.address().getPort() + "/websocket");
    }

    @Before
    public void setUp() throws Exception {
        startNode("1");
        WebsocketInfoRequest request = new WebsocketInfoRequest("1");
        WebsocketInfoResponse response = client("1").admin().cluster().execute(WebsocketInfoAction.INSTANCE, request).actionGet();
        InetSocketTransportAddress address = response.getAt(0).getAddress();
        addresses.put("1", address);

        logger.info("websocket address = {}", address);

        logger.info("creating index {}", INDEX);
        client("1").admin().indices().create(new CreateIndexRequest(INDEX)).actionGet();
        logger.info("index {} created", INDEX);
    }

    @After
    public void deleteIndices() {
        logger.info("deleting index {}", INDEX);
        try {
            client("1").admin().indices().delete(new DeleteIndexRequest().indices(INDEX)).actionGet();
        } catch (IndexMissingException e) {
            // ignore
        }
        logger.info("index {} deleted", INDEX);
        closeAllNodes();
    }

    public Node startNode(String id) {
        return buildNode(id).start();
    }

    public Node buildNode(String id) {
        return buildNode(id, EMPTY_SETTINGS);
    }

    public Node buildNode(String id, Settings settings) {
        String settingsSource = getClass().getName().replace('.', '/') + ".yml";
        Settings finalSettings = settingsBuilder()
                .loadFromClasspath(settingsSource)
                .put(defaultSettings)
                .put(settings)
                .put("name", id)
                .put("gateway.type", "none")
                .put("cluster.routing.schedule", "50ms")
                .build();
        Node node = nodeBuilder().settings(finalSettings).build();
        Client client = node.client();
        nodes.put(id, node);
        clients.put(id, client);
        return node;
    }

    public Client client(String id) {
        return clients.get(id);
    }

    public void closeAllNodes() {
        for (Client client : clients.values()) {
            client.close();
        }
        clients.clear();
        for (Node node : nodes.values()) {
            if (node != null) {
                node.close();
            }
        }
        nodes.clear();
    }

}
TOP

Related Classes of org.xbib.elasticsearch.websocket.helper.AbstractNodeTestHelper

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.