com.linkedin.pinot.queries.TestingServerPropertiesBuilder.java Source code

Java tutorial

Introduction

Here is the source code for com.linkedin.pinot.queries.TestingServerPropertiesBuilder.java

Source

/**
 * Copyright (C) 2014-2016 LinkedIn Corp. (pinot-core@linkedin.com)
 *
 * 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 com.linkedin.pinot.queries;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;

import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;

import com.linkedin.pinot.common.utils.StringUtil;

/**
 * Oct 14, 2014
 */
public class TestingServerPropertiesBuilder {
    private static final String PINOT_SERVER_PREFIX = "pinot.server";
    private static final String INSTANCE_PREFIC = "instance";
    private static final String EXECUTOR_PREFIX = "query.executor";

    private final String[] tableNames;

    public TestingServerPropertiesBuilder(String... tableNames) {
        this.tableNames = tableNames;
    }

    public PropertiesConfiguration build() throws IOException {
        final File file = new File("/tmp/" + TestingServerPropertiesBuilder.class.toString());

        if (file.exists()) {
            FileUtils.deleteDirectory(file);
        }

        file.mkdir();

        final File bootsDir = new File(file, "bootstrap");
        final File dataDir = new File(file, "data");

        bootsDir.mkdir();
        dataDir.mkdir();

        final PropertiesConfiguration config = new PropertiesConfiguration();
        config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, INSTANCE_PREFIC, "id"), "0");
        config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, INSTANCE_PREFIC, "bootstrap.segment.dir"),
                bootsDir.getAbsolutePath());
        config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, INSTANCE_PREFIC, "dataDir"),
                dataDir.getAbsolutePath());
        config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, INSTANCE_PREFIC, "bootstrap.segment.dir"),
                "0");
        config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, INSTANCE_PREFIC, "data.manager.class"),
                "com.linkedin.pinot.core.data.manager.InstanceDataManager");
        config.addProperty(
                StringUtil.join(".", PINOT_SERVER_PREFIX, INSTANCE_PREFIC, "segment.metadata.loader.class"),
                "com.linkedin.pinot.core.indexsegment.columnar.ColumnarSegmentMetadataLoader");

        config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, INSTANCE_PREFIC, "tableName"),
                StringUtils.join(tableNames, ","));

        for (final String table : tableNames) {
            config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, INSTANCE_PREFIC, table, "dataManagerType"),
                    "offline");
            config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, INSTANCE_PREFIC, table, "readMode"),
                    "heap");
            config.addProperty(
                    StringUtil.join(".", PINOT_SERVER_PREFIX, INSTANCE_PREFIC, table, "numQueryExecutorThreads"),
                    "50");
        }

        config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, EXECUTOR_PREFIX, "class"),
                "com.linkedin.pinot.core.query.executor.ServerQueryExecutor");
        config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, EXECUTOR_PREFIX, "timeout"), "150000");
        config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, "requestHandlerFactory.class"),
                "com.linkedin.pinot.server.request.SimpleRequestHandlerFactory");
        config.addProperty(StringUtil.join(".", PINOT_SERVER_PREFIX, "netty.port"), "8882");
        config.setDelimiterParsingDisabled(true);

        final Iterator<String> keys = config.getKeys();

        while (keys.hasNext()) {
            final String key = keys.next();
            System.out.println(key + "  : " + config.getProperty(key));
        }
        return config;
    }

    public static void main(String[] args) throws IOException {
        final TestingServerPropertiesBuilder bld = new TestingServerPropertiesBuilder("testTable");
        bld.build();
    }
}