Package org.lilyproject.testclientfw

Source Code of org.lilyproject.testclientfw.BaseRepositoryTestTool

/*
* Copyright 2012 NGDATA nv
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.lilyproject.testclientfw;

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.List;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.zookeeper.KeeperException;
import org.lilyproject.cli.OptionUtil;
import org.lilyproject.client.LilyClient;
import org.lilyproject.client.NoServersException;
import org.lilyproject.repository.api.IdGenerator;
import org.lilyproject.repository.api.LRepository;
import org.lilyproject.repository.api.LTable;
import org.lilyproject.repository.api.RepositoryException;
import org.lilyproject.repository.api.TypeManager;
import org.lilyproject.util.io.Closer;
import org.lilyproject.util.zookeeper.ZkConnectException;

public abstract class BaseRepositoryTestTool extends BaseTestTool {
    private static final String DEFAULT_SOLR_URL = "http://localhost:8983/solr";
    private static final String DEFAULT_SOLRCLOUD_URL = "localhost:2181/solr";

    protected String solrUrl;

    private Option solrOption;

    private Option solrCloudOption;

    private Option repositoryOption;

    protected SolrServer solrServer;

    protected LilyClient lilyClient;

    protected String repositoryName;

    protected LRepository repository;

    protected LTable table;

    protected IdGenerator idGenerator;

    protected TypeManager typeManager;

    protected String NS = "tests";

    protected boolean useSolrCloud;

    @Override
    @SuppressWarnings("static-access")
    public List<Option> getOptions() {
        List<Option> options = super.getOptions();

        solrOption = OptionBuilder
                .withArgName("URL")
                .hasArg()
                .withDescription("URL of Solr. If using cloud mode then use the zookeeper connection string for Solr")
                .withLongOpt("solr")
                .create("s");

        solrCloudOption = OptionBuilder
                .withDescription("Connect to a Solr cloud server")
                .withLongOpt("solrcloud")
                .create("sc");

        repositoryOption = OptionBuilder
                .withArgName("repository")
                .hasArg()
                .withDescription("Repository name, if not specified the default repository is used")
                .withLongOpt("repository")
                .create();

        options.add(solrOption);
        options.add(solrCloudOption);
        options.add(repositoryOption);

        return options;
    }

    @Override
    protected int processOptions(CommandLine cmd) throws Exception {
        int result = super.processOptions(cmd);
        if (result != 0) {
            return result;
        }

        useSolrCloud = cmd.hasOption(solrCloudOption.getOpt());
        if (!cmd.hasOption(solrOption.getOpt())) {
            solrUrl = useSolrCloud ? DEFAULT_SOLRCLOUD_URL : DEFAULT_SOLR_URL;
        } else {
            solrUrl = useSolrCloud ? zkConnectionString + "/solr": cmd.getOptionValue(solrOption.getOpt());
        }

        repositoryName = OptionUtil.getStringOption(cmd, repositoryOption, "default");

        return 0;
    }

    @Override
    protected void cleanup() {
        Closer.close(lilyClient);
        super.cleanup();
    }

    public void setupLily() throws IOException, ZkConnectException, NoServersException, InterruptedException,
            KeeperException, RepositoryException {
        lilyClient = new LilyClient(getZooKeeper());
        repository = lilyClient.getRepository(repositoryName);
        table = repository.getDefaultTable();
        idGenerator = repository.getIdGenerator();
        typeManager = repository.getTypeManager();
    }

    public void setupSolr() throws MalformedURLException {
        if (useSolrCloud) {
            System.out.println("Using SolrCloud instance with ZooKeeper " + solrUrl);
            solrServer = new CloudSolrServer(solrUrl);
        } else {
            System.out.println("Using Solr instance at " + solrUrl);

            ThreadSafeClientConnManager connectionManager = new ThreadSafeClientConnManager();
            connectionManager.setDefaultMaxPerRoute(5);
            connectionManager.setMaxTotal(50);
            HttpClient httpClient = new DefaultHttpClient(connectionManager);

            solrServer = new HttpSolrServer(solrUrl, httpClient);
        }
    }
}
TOP

Related Classes of org.lilyproject.testclientfw.BaseRepositoryTestTool

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.