org.apache.hive.hplsql.TestHplsqlLocal.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.hive.hplsql.TestHplsqlLocal.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.hive.hplsql;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.io.StringReader;
import org.apache.commons.io.FileUtils;
import org.junit.Assert;
import org.junit.Test;

/**
 * Unit tests for HPL/SQL (no Hive connection required)
 */
public class TestHplsqlLocal {

    private final ByteArrayOutputStream out = new ByteArrayOutputStream();

    @Test
    public void testAdd() throws Exception {
        run("add");
    }

    @Test
    public void testAssign() throws Exception {
        run("assign");
    }

    @Test
    public void testBool() throws Exception {
        run("bool");
    }

    @Test
    public void testBoolExpr() throws Exception {
        run("bool_expr");
    }

    @Test
    public void testBreak() throws Exception {
        run("break");
    }

    @Test
    public void testCase() throws Exception {
        run("case");
    }

    @Test
    public void testCast() throws Exception {
        run("cast");
    }

    @Test
    public void testCast2() throws Exception {
        run("cast2");
    }

    @Test
    public void testChar() throws Exception {
        run("char");
    }

    @Test
    public void testCoalesce() throws Exception {
        run("coalesce");
    }

    @Test
    public void testConcat() throws Exception {
        run("concat");
    }

    @Test
    public void testCreateFunction() throws Exception {
        run("create_function");
    }

    @Test
    public void testCreateFunction2() throws Exception {
        run("create_function2");
    }

    @Test
    public void testCreateFunction3() throws Exception {
        run("create_function3");
    }

    @Test
    public void testCreateFunction4() throws Exception {
        run("create_function4");
    }

    @Test
    public void testCreatePackage() throws Exception {
        run("create_package");
    }

    @Test
    public void testCreatePackage2() throws Exception {
        run("create_package2");
    }

    @Test
    public void testCreatePackage3() throws Exception {
        run("create_package3");
    }

    @Test
    public void testCreateProcedure() throws Exception {
        run("create_procedure");
    }

    @Test
    public void testCreateProcedure2() throws Exception {
        run("create_procedure2");
    }

    @Test
    public void testCreateProcedure3() throws Exception {
        run("create_procedure3");
    }

    @Test
    public void testCreateProcedureNoParams() throws Exception {
        run("create_procedure_no_params");
    }

    @Test
    public void testDatatypes() throws Exception {
        run("datatypes");
    }

    @Test
    public void testDate() throws Exception {
        run("date");
    }

    @Test
    public void testDbmsOutput() throws Exception {
        run("dbms_output");
    }

    @Test
    public void testDeclare() throws Exception {
        run("declare");
    }

    @Test
    public void testDeclare2() throws Exception {
        run("declare2");
    }

    @Test
    public void testDeclare3() throws Exception {
        run("declare3");
    }

    @Test
    public void testDeclareCondition() throws Exception {
        run("declare_condition");
    }

    @Test
    public void testDeclareCondition2() throws Exception {
        run("declare_condition2");
    }

    @Test
    public void testDecode() throws Exception {
        run("decode");
    }

    @Test
    public void testEqual() throws Exception {
        run("equal");
    }

    @Test
    public void testException() throws Exception {
        run("exception");
    }

    @Test
    public void testExceptionDivideByZero() throws Exception {
        run("exception_divide_by_zero");
    }

    @Test
    public void testExit() throws Exception {
        run("exit");
    }

    @Test
    public void testExpr() throws Exception {
        run("expr");
    }

    @Test
    public void testFloat() throws Exception {
        run("float");
    }

    @Test
    public void testForRange() throws Exception {
        run("for_range");
    }

    @Test
    public void testIf() throws Exception {
        run("if");
    }

    @Test
    public void testIf2() throws Exception {
        run("if2");
    }

    @Test
    public void testIf3Bteq() throws Exception {
        run("if3_bteq");
    }

    @Test
    public void testInclude() throws Exception {
        run("include");
    }

    @Test
    public void testInstr() throws Exception {
        run("instr");
    }

    @Test
    public void testInterval() throws Exception {
        run("interval");
    }

    @Test
    public void testLang() throws Exception {
        run("lang");
    }

    @Test
    public void testLeave() throws Exception {
        run("leave");
    }

    @Test
    public void testLength() throws Exception {
        run("length");
    }

    @Test
    public void testLen() throws Exception {
        run("len");
    }

    @Test
    public void testLower() throws Exception {
        run("lower");
    }

    @Test
    public void testMultDiv() throws Exception {
        run("mult_div");
    }

    @Test
    public void testNvl() throws Exception {
        run("nvl");
    }

    @Test
    public void testNvl2() throws Exception {
        run("nvl2");
    }

    @Test
    public void testPrint() throws Exception {
        run("print");
    }

    @Test
    public void testReplace() throws Exception {
        run("replace");
    }

    @Test
    public void testReturn() throws Exception {
        run("return");
    }

    @Test
    public void testSetError() throws Exception {
        run("seterror");
    }

    @Test
    public void testSub() throws Exception {
        run("sub");
    }

    @Test
    public void testSubstring() throws Exception {
        run("substring");
    }

    @Test
    public void testSubstr() throws Exception {
        run("substr");
    }

    @Test
    public void testTimestampIso() throws Exception {
        run("timestamp_iso");
    }

    @Test
    public void testTimestamp() throws Exception {
        run("timestamp");
    }

    @Test
    public void testToChar() throws Exception {
        run("to_char");
    }

    @Test
    public void testToTimestamp() throws Exception {
        run("to_timestamp");
    }

    @Test
    public void testTrim() throws Exception {
        run("trim");
    }

    @Test
    public void testTwoPipes() throws Exception {
        run("twopipes");
    }

    @Test
    public void testUpper() throws Exception {
        run("upper");
    }

    @Test
    public void testValuesInto() throws Exception {
        run("values_into");
    }

    @Test
    public void testVarScope() throws Exception {
        run("var_scope");
    }

    @Test
    public void testVarScope2() throws Exception {
        run("var_scope2");
    }

    @Test
    public void testWhile() throws Exception {
        run("while");
    }

    /**
     * Run a test file
     */
    void run(String testFile) throws Exception {
        System.setOut(new PrintStream(out));
        Exec exec = new Exec();
        String[] args = { "-f", "src/test/queries/local/" + testFile + ".sql", "-trace" };
        exec.run(args);
        String s = getTestOutput(out.toString()).trim();
        FileUtils.writeStringToFile(new java.io.File("target/tmp/log/" + testFile + ".out.txt"), s);
        String t = FileUtils
                .readFileToString(new java.io.File("src/test/results/local/" + testFile + ".out.txt"), "utf-8")
                .trim();
        System.setOut(null);
        Assert.assertEquals(s, t);
    }

    /**
     * Get test output
     */
    String getTestOutput(String s) throws Exception {
        StringBuilder sb = new StringBuilder();
        BufferedReader reader = new BufferedReader(new StringReader(s));
        String line = null;
        while ((line = reader.readLine()) != null) {
            if (!line.startsWith("log4j:") && !line.contains("INFO Log4j")) {
                sb.append(line);
                sb.append("\n");
            }
        }
        return sb.toString();
    }
}