Search in sources :

Example 46 with ClientFixture

use of org.apache.drill.test.ClientFixture in project drill by apache.

the class TestOrderedMuxExchange method testLimitOnOrderedMux.

/**
 * Test case to verify the OrderedMuxExchange created for order by with limit.
 * It checks that the limit is pushed down the OrderedMuxExchange.
 *
 * @throws Exception if anything goes wrong
 */
@Test
public void testLimitOnOrderedMux() throws Exception {
    ClusterFixtureBuilder builder = ClusterFixture.builder(dirTestWatcher).maxParallelization(1).configProperty(ExecConstants.SYS_STORE_PROVIDER_LOCAL_ENABLE_WRITE, true);
    try (ClusterFixture cluster = builder.build();
        ClientFixture client = cluster.clientFixture()) {
        client.alterSession(ExecConstants.SLICE_TARGET, 10);
        String sql = "SELECT emp_id, emp_name FROM dfs.`empTable` e order BY emp_name, emp_id limit 10";
        client.testBuilder().unOrdered().optionSettingQueriesForTestQuery("alter session set `planner.slice_target` = 10;").sqlQuery(sql).optionSettingQueriesForBaseline(// Use default option setting.
        "alter session set `planner.enable_ordered_mux_exchange` = false").sqlBaselineQuery(sql).build().run();
        client.alterSession(ExecConstants.ORDERED_MUX_EXCHANGE, true);
        String explainText = client.queryBuilder().sql(sql).explainText();
        assertTrue(explainText.matches(String.format(MATCH_PATTERN_ACROSS_LINES + "%s" + MATCH_PATTERN_ACROSS_LINES + "%s" + MATCH_PATTERN_ACROSS_LINES, ORDERED_MUX_EXCHANGE, TOPN)));
    }
}
Also used : ClusterFixture(org.apache.drill.test.ClusterFixture) ClientFixture(org.apache.drill.test.ClientFixture) ClusterFixtureBuilder(org.apache.drill.test.ClusterFixtureBuilder) Test(org.junit.Test)

Example 47 with ClientFixture

use of org.apache.drill.test.ClientFixture in project drill by apache.

the class DrillSeparatePlanningTest method getResultsHelper.

private int getResultsHelper(final QueryPlanFragments planFragments) throws Exception {
    int totalRows = 0;
    for (PlanFragment fragment : planFragments.getFragmentsList()) {
        DrillbitEndpoint assignedNode = fragment.getAssignment();
        ClientFixture fragmentClient = cluster.client(assignedNode.getAddress(), assignedNode.getUserPort());
        RowSet rowSet = fragmentClient.queryBuilder().sql("select hostname, user_port from sys.drillbits where `current`=true").rowSet();
        assertEquals(1, rowSet.rowCount());
        RowSetReader reader = rowSet.reader();
        assertTrue(reader.next());
        String host = reader.scalar("hostname").getString();
        int port = reader.scalar("user_port").getInt();
        rowSet.clear();
        assertEquals(assignedNode.getAddress(), host);
        assertEquals(assignedNode.getUserPort(), port);
        List<PlanFragment> fragmentList = Lists.newArrayList();
        fragmentList.add(fragment);
        QuerySummary summary = fragmentClient.queryBuilder().plan(fragmentList).run();
        totalRows += summary.recordCount();
        fragmentClient.close();
    }
    return totalRows;
}
Also used : DrillbitEndpoint(org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint) QuerySummary(org.apache.drill.test.QueryBuilder.QuerySummary) ClientFixture(org.apache.drill.test.ClientFixture) RowSet(org.apache.drill.exec.physical.rowSet.RowSet) RowSetReader(org.apache.drill.exec.physical.rowSet.RowSetReader) DrillbitEndpoint(org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint) PlanFragment(org.apache.drill.exec.proto.BitControl.PlanFragment)

Example 48 with ClientFixture

use of org.apache.drill.test.ClientFixture in project drill by apache.

the class TestAliasCommands method setUpBeforeClass.

@BeforeClass
public static void setUpBeforeClass() throws Exception {
    cluster = ClusterFixture.bareBuilder(dirTestWatcher).configProperty(ExecConstants.USER_AUTHENTICATION_ENABLED, true).configProperty(ExecConstants.IMPERSONATION_ENABLED, true).configProperty(ExecConstants.USER_AUTHENTICATOR_IMPL, UserAuthenticatorTestImpl.TYPE).configProperty(DrillProperties.USER, PROCESS_USER).configProperty(DrillProperties.PASSWORD, PROCESS_USER_PASSWORD).build();
    ClientFixture admin = cluster.clientBuilder().property(DrillProperties.USER, PROCESS_USER).property(DrillProperties.PASSWORD, PROCESS_USER_PASSWORD).build();
    admin.alterSystem(ExecConstants.ADMIN_USERS_KEY, ADMIN_USER + "," + PROCESS_USER);
    admin.alterSystem(ExecConstants.ADMIN_USER_GROUPS_KEY, ADMIN_GROUP);
    client = cluster.clientBuilder().property(DrillProperties.USER, ADMIN_USER).property(DrillProperties.PASSWORD, ADMIN_USER_PASSWORD).build();
    storageAliasesRegistry = cluster.drillbit().getContext().getAliasRegistryProvider().getStorageAliasesRegistry();
    tableAliasesRegistry = cluster.drillbit().getContext().getAliasRegistryProvider().getTableAliasesRegistry();
}
Also used : ClientFixture(org.apache.drill.test.ClientFixture) BeforeClass(org.junit.BeforeClass)

Example 49 with ClientFixture

use of org.apache.drill.test.ClientFixture in project drill by apache.

the class TestAliasCommands method testCreateTableAliasAsTheSameUser.

@Test
public void testCreateTableAliasAsTheSameUser() throws Exception {
    try {
        ClientFixture client = cluster.clientBuilder().property(DrillProperties.USER, TEST_USER_2).property(DrillProperties.PASSWORD, TEST_USER_2_PASSWORD).build();
        String sql = "CREATE ALIAS tpch_lineitem for table cp.`tpch/lineitem.parquet` AS USER '%s'";
        client.testBuilder().sqlQuery(sql, TEST_USER_2).unOrdered().baselineColumns("ok", "summary").baselineValues(true, "Table alias '`tpch_lineitem`' for '`cp`.`default`.`tpch/lineitem.parquet`' created successfully").go();
        List<String> expectedAliases = Collections.singletonList("`tpch_lineitem`");
        List<String> expectedValues = Collections.singletonList("`cp`.`default`.`tpch/lineitem.parquet`");
        List<String> actualAliases = new ArrayList<>();
        List<String> actualValues = new ArrayList<>();
        tableAliasesRegistry.getUserAliases(TEST_USER_2).getAllAliases().forEachRemaining(entry -> {
            actualAliases.add(entry.getKey());
            actualValues.add(entry.getValue());
        });
        assertEquals(expectedAliases, actualAliases);
        assertEquals(expectedValues, actualValues);
    } finally {
        tableAliasesRegistry.deleteUserAliases(TEST_USER_2);
    }
}
Also used : ClientFixture(org.apache.drill.test.ClientFixture) ArrayList(java.util.ArrayList) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) ClusterTest(org.apache.drill.test.ClusterTest) Test(org.junit.Test)

Example 50 with ClientFixture

use of org.apache.drill.test.ClientFixture in project drill by apache.

the class TestAliasCommands method testNonAdminCreateTableAliasAsAnotherUser.

@Test
public void testNonAdminCreateTableAliasAsAnotherUser() throws Exception {
    try {
        ClientFixture client = cluster.clientBuilder().property(DrillProperties.USER, TEST_USER_2).property(DrillProperties.PASSWORD, TEST_USER_2_PASSWORD).build();
        String sql = "CREATE ALIAS tpch_lineitem for table cp.`tpch/lineitem.parquet` AS USER '%s'";
        client.queryBuilder().sql(sql, TEST_USER_1).run();
        fail();
    } catch (UserRemoteException e) {
        MatcherAssert.assertThat(e.getVerboseMessage(), containsString("PERMISSION ERROR: Not authorized to perform operations on aliases for other users."));
    } finally {
        storageAliasesRegistry.deleteUserAliases(TEST_USER_1);
    }
}
Also used : UserRemoteException(org.apache.drill.common.exceptions.UserRemoteException) ClientFixture(org.apache.drill.test.ClientFixture) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) ClusterTest(org.apache.drill.test.ClusterTest) Test(org.junit.Test)

Aggregations

ClientFixture (org.apache.drill.test.ClientFixture)122 Test (org.junit.Test)102 ClusterFixture (org.apache.drill.test.ClusterFixture)99 ClusterFixtureBuilder (org.apache.drill.test.ClusterFixtureBuilder)89 SlowTest (org.apache.drill.categories.SlowTest)46 OptionsTest (org.apache.drill.categories.OptionsTest)36 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)28 BaseTest (org.apache.drill.test.BaseTest)20 ClusterTest (org.apache.drill.test.ClusterTest)16 QueryDataBatch (org.apache.drill.exec.rpc.user.QueryDataBatch)12 DrillTest (org.apache.drill.test.DrillTest)10 OperatorTest (org.apache.drill.categories.OperatorTest)8 UserRemoteException (org.apache.drill.common.exceptions.UserRemoteException)7 RestClientFixture (org.apache.drill.test.RestClientFixture)4 ArrayList (java.util.ArrayList)3 SchemaPath (org.apache.drill.common.expression.SchemaPath)3 RecordBatchLoader (org.apache.drill.exec.record.RecordBatchLoader)3 BigIntVector (org.apache.drill.exec.vector.BigIntVector)3 File (java.io.File)2 PlanFragment (org.apache.drill.exec.proto.BitControl.PlanFragment)2