blob: 85d824efd4b061a05a5525af30decde40cf91243 [file] [log] [blame]
/*
* 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.bigtop.itest.hive;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Map;
public class TestBeeline {
public static final Log LOG = LogFactory.getLog(TestBeeline.class.getName());
private static final String URL = "bigtop.test.hive.jdbc.url";
private static final String USER = "bigtop.test.hive.jdbc.user";
private static final String PASSWD = "bigtop.test.hive.jdbc.password";
private static Map<String, String> results;
private static String beelineUrl;
private static String beelineUser;
private static String beelinePasswd;
//creating beeline base command with username and password as per inputs
private static CommandLine beelineBaseCommand = new CommandLine("beeline");
@BeforeClass
public static void initialSetup() {
TestBeeline.beelineUrl = System.getProperty(URL);
TestBeeline.beelineUser = System.getProperty(USER);
TestBeeline.beelinePasswd = System.getProperty(PASSWD);
if (beelineUser != null && beelineUser != "" && beelinePasswd != null && beelinePasswd != "") {
beelineBaseCommand.addArgument("-u").addArgument(beelineUrl).addArgument("-n").addArgument(beelineUser).addArgument("-p").addArgument(beelinePasswd);
} else if (beelineUser != null && beelineUser != "") {
beelineBaseCommand.addArgument("-u").addArgument(beelineUrl).addArgument("-n").addArgument(beelineUser);
} else {
beelineBaseCommand.addArgument("-u").addArgument(beelineUrl);
}
LOG.info("URL is " + beelineUrl);
LOG.info("User is " + beelineUser);
LOG.info("Passwd is " + beelinePasswd);
LOG.info("Passwd is null " + (beelinePasswd == null));
}
@Test
public void checkBeeline() {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand));
String consoleMsg = results.get("outputStream").toLowerCase();
Assert.assertEquals("beeline -u FAILED. \n" + results.get("outputStream"), true, consoleMsg.contains("connecting to " + beelineUrl.toLowerCase()) && !consoleMsg.contains("error") && !consoleMsg.contains("exception"));
}
@Test
public void checkBeelineConnect() {
try (PrintWriter out = new PrintWriter("connect.url")) {
out.println("!connect " + beelineUrl + " " + beelineUser + " " + beelinePasswd);
out.println("!quit");
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
results = HiveHelper.execCommand(new CommandLine("/bin/sh").addArgument("-c").addArgument("beeline -f connect.url", false));
String consoleMsg = results.get("outputStream").toLowerCase();
Assert.assertEquals("beeline !connect FAILED. \n" + results.get("outputStream"), true, consoleMsg.contains("connecting to " + beelineUrl.toLowerCase()) && !consoleMsg.contains("error") && !consoleMsg.contains("exception"));
}
@Test
public void checkBeelineHelp() {
results = HiveHelper.execCommand(new CommandLine("beeline").addArgument("--help"));
String consoleMsg = results.get("outputStream").toLowerCase();
Assert.assertEquals("beeline --help FAILED. \n" + results.get("outputStream"), true, consoleMsg.contains("display this message") && consoleMsg.contains("usage: java org.apache.hive.cli.beeline.beeline") && !consoleMsg.contains("exception"));
}
@Test
public void checkBeelineQueryExecFromCmdLine() {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-e").addArgument("SHOW DATABASES;"));
if (!results.get("outputStream").contains("bigtop_runtime_hive")) {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-e").addArgument("CREATE DATABASE bigtop_runtime_hive;"));
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-e").addArgument("SHOW DATABASES;"));
} else {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-e").addArgument("DROP DATABASE bigtop_runtime_hive;"));
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-e").addArgument("CREATE DATABASE bigtop_runtime_hive;"));
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-e").addArgument("SHOW DATABASES;"));
}
String consoleMsg = results.get("outputStream").toLowerCase();
Assert.assertEquals("beeline -e FAILED. \n" + results.get("outputStream"), true, consoleMsg.contains("bigtop_runtime_hive") && !consoleMsg.contains("error") && !consoleMsg.contains("exception"));
HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-e").addArgument("DROP DATABASE bigtop_runtime_hive"));
}
@Test
public void checkBeelineQueryExecFromFile() throws FileNotFoundException {
try (PrintWriter out = new PrintWriter("beeline-f1.sql")) {
out.println("SHOW DATABASES;");
}
try (PrintWriter out = new PrintWriter("beeline-f2.sql")) {
out.println("CREATE DATABASE bigtop_runtime_hive;");
}
try (PrintWriter out = new PrintWriter("beeline-f3.sql")) {
out.println("DROP DATABASE bigtop_runtime_hive;");
out.println("CREATE DATABASE bigtop_runtime_hive;");
}
try (PrintWriter out = new PrintWriter("beeline-f4.sql")) {
out.println("DROP DATABASE bigtop_runtime_hive;");
}
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-f").addArgument("beeline-f1.sql", false));
if (!results.get("outputStream").contains("bigtop_runtime_hive")) {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-f").addArgument("beeline-f2.sql", false));
} else {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-f").addArgument("beeline-f3.sql", false));
}
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-f").addArgument("beeline-f1.sql", false));
String consoleMsg = results.get("outputStream").toLowerCase();
Assert.assertEquals("beeline -f FAILED. \n" + results.get("outputStream"), true, consoleMsg.contains("bigtop_runtime_hive") && !consoleMsg.contains("error") && !consoleMsg.contains("exception"));
HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-f").addArgument("beeline-f4.sql", false));
}
@Test
public void checkBeelineInitFile() throws FileNotFoundException {
try (PrintWriter out = new PrintWriter("beeline-i1.sql")) {
out.println("SHOW DATABASES;");
}
try (PrintWriter out = new PrintWriter("beeline-i2.sql")) {
out.println("CREATE DATABASE bigtop_runtime_beeline_init;");
}
try (PrintWriter out = new PrintWriter("beeline-i3.sql")) {
out.println("DROP DATABASE bigtop_runtime_beeline_init;");
out.println("CREATE DATABASE bigtop_runtime_beeline_init;");
}
try (PrintWriter out = new PrintWriter("beeline-i4.sql")) {
out.println("DROP DATABASE bigtop_runtime_beeline_init;");
}
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-i").addArgument("beeline-i1.sql", false));
if (!results.get("outputStream").contains("bigtop_runtime_beeline_init")) {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-i").addArgument("beeline-i2.sql", false));
} else {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-i").addArgument("beeline-i3.sql", false));
}
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-i").addArgument("beeline-i1.sql", false));
String consoleMsg = results.get("outputStream").toLowerCase();
Assert.assertEquals("beeline -i FAILED. \n" + results.get("outputStream"), true, consoleMsg.contains("bigtop_runtime_beeline_init") && !consoleMsg.contains("error") && !consoleMsg.contains("exception"));
HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("-i").addArgument("beeline-i4.sql", false));
}
@Test
public void checkBeelineHiveVar() throws FileNotFoundException {
try (PrintWriter out = new PrintWriter("beeline-hv1.sql")) {
out.println("SHOW DATABASES;");
}
try (PrintWriter out = new PrintWriter("beeline-hv2.sql")) {
out.println("CREATE DATABASE ${db};");
}
try (PrintWriter out = new PrintWriter("beeline-hv3.sql")) {
out.println("DROP DATABASE ${db};");
out.println("CREATE DATABASE ${db};");
}
try (PrintWriter out = new PrintWriter("beeline-hv4.sql")) {
out.println("DROP DATABASE ${db};");
}
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("--hivevar").addArgument("db=bigtop_runtime_beeline_hivevar").addArgument("-i").addArgument("beeline-hv1.sql", false));
if (!results.get("outputStream").contains("bigtop_runtime_beeline_hivevar")) {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("--hivevar").addArgument("db=bigtop_runtime_beeline_hivevar").addArgument("-i").addArgument("beeline-hv2.sql", false));
} else {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("--hivevar").addArgument("db=bigtop_runtime_beeline_hivevar").addArgument("-i").addArgument("beeline-hv3.sql", false));
}
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("--hivevar").addArgument("db=bigtop_runtime_beeline_hivevar").addArgument("-i").addArgument("beeline-hv1.sql", false));
String consoleMsg = results.get("outputStream").toLowerCase();
Assert.assertEquals("beeline --hivevar FAILED. \n" + results.get("outputStream"), true, consoleMsg.contains("bigtop_runtime_beeline_hivevar") && !consoleMsg.contains("error") && !consoleMsg.contains("exception"));
HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("--hivevar").addArgument("db=bigtop_runtime_beeline_hivevar").addArgument("-i").addArgument("beeline-hv4.sql", false));
}
@Test
public void checkBeelineFastConnect() {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("--fastConnect=false"));
String consoleMsg = results.get("outputStream").toLowerCase();
Assert.assertEquals("beeline --fastConnect FAILED. \n" + results.get("outputStream"), true, consoleMsg.contains("set fastconnect to true to skip"));
}
@Test
public void checkBeelineVerbose() {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("--verbose=true"));
String consoleMsg = results.get("outputStream").toLowerCase();
Assert.assertEquals("beeline --verbose FAILED." + results.get("outputStream"), true, consoleMsg.contains("issuing: !connect jdbc:hive2:") && !consoleMsg.contains("error") && !consoleMsg.contains("exception"));
}
@Test
public void checkBeelineShowHeader() {
results = HiveHelper.execCommand(new CommandLine(beelineBaseCommand).addArgument("--showHeader=false").addArgument("-e").addArgument("SHOW DATABASES;"));
String consoleMsg = results.get("outputStream").toLowerCase();
Assert.assertEquals("beeline --showHeader FAILED. \n" + results.get("outputStream"), true, consoleMsg.contains("default") && !consoleMsg.contains("database_name") && !consoleMsg.contains("error") && !consoleMsg.contains("exception"));
}
@AfterClass
public static void cleanup() throws FileNotFoundException {
results = HiveHelper.execCommand(new CommandLine("/bin/sh").addArgument("-c").addArgument("rm -rf beeline*.sql", false));
results = HiveHelper.execCommand(new CommandLine("/bin/sh").addArgument("-c").addArgument("rm -rf connect.url", false));
}
}