org.apache.sentry.tests.e2e.hiveserver.AbstractHiveServer.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.sentry.tests.e2e.hiveserver.AbstractHiveServer.java

Source

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.apache.sentry.tests.e2e.hiveserver;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.concurrent.TimeoutException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;

import com.google.common.base.Strings;

public abstract class AbstractHiveServer implements HiveServer {

    private static final String LINK_FAILURE_SQL_STATE = "08S01";

    private final Configuration configuration;
    private final String hostname;
    private final int port;

    public AbstractHiveServer(Configuration configuration, String hostname, int port) {
        this.configuration = configuration;
        this.hostname = hostname;
        this.port = port;
    }

    @Override
    public String getProperty(String key) {
        return configuration.get(key);
    }

    @Override
    public String getURL() {
        return "jdbc:hive2://" + hostname + ":" + port + "/default";
    }

    protected static String getHostname(HiveConf hiveConf) {
        return hiveConf.get(ConfVars.HIVE_SERVER2_THRIFT_BIND_HOST.toString(), "localhost").trim();
    }

    protected static int getPort(HiveConf hiveConf) {
        return Integer.parseInt(hiveConf.get(ConfVars.HIVE_SERVER2_THRIFT_PORT.toString(), "10000").trim());
    }

    protected static void waitForStartup(HiveServer hiveServer) throws Exception {
        int waitTime = 0;
        long startupTimeout = 1000L * 10L;
        do {
            Thread.sleep(500L);
            waitTime += 500L;
            if (waitTime > startupTimeout) {
                throw new TimeoutException("Couldn't access new HiveServer: " + hiveServer.getURL());
            }
            try {
                Connection connection = DriverManager.getConnection(hiveServer.getURL(), "hive", "bar");
                connection.close();
                break;
            } catch (SQLException e) {
                String state = Strings.nullToEmpty(e.getSQLState()).trim();
                if (!state.equalsIgnoreCase(LINK_FAILURE_SQL_STATE)) {
                    throw e;
                }
            }
        } while (true);
    }
}