Package com.facebook.presto.metadata

Source Code of com.facebook.presto.metadata.TestAliasDao

/*
* 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.facebook.presto.metadata;

import io.airlift.dbpool.H2EmbeddedDataSource;
import io.airlift.dbpool.H2EmbeddedDataSourceConfig;
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.Handle;
import org.skife.jdbi.v2.exceptions.UnableToExecuteStatementException;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import javax.sql.DataSource;

import static com.facebook.presto.metadata.AliasDao.Utils.createTables;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.fail;

public class TestAliasDao
{
    private static final String TABLE_1_CONNECTOR_ID = "apple_connector";
    private static final String TABLE_1_SCHEMA_NAME = "apple_schema";
    private static final String TABLE_1_TABLE_NAME = "apple_table";
    private static final String TABLE_2_CONNECTOR_ID = "banana_connector";
    private static final String TABLE_2_SCHEMA_NAME = "banana_schema";
    private static final String TABLE_2_TABLE_NAME = "banana_table";
    private static final String TABLE_3_CONNECTOR_ID = "cherry_connector";
    private static final String TABLE_3_SCHEMA_NAME = "cherry_schema";
    private static final String TABLE_3_TABLE_NAME = "cherry_table";

    AliasDao dao;
    Handle handle;

    @BeforeMethod
    public void setup()
            throws Exception
    {
        H2EmbeddedDataSourceConfig dataSourceConfig = new H2EmbeddedDataSourceConfig().setFilename("mem:");
        DataSource dataSource = new H2EmbeddedDataSource(dataSourceConfig);
        DBI h2Dbi = new DBI(dataSource);
        handle = h2Dbi.open();
        dao = handle.attach(AliasDao.class);
    }

    @AfterMethod
    public void teardown()
    {
        handle.close();
    }

    @Test
    public void testTableCreation()
    {
        createTables(dao);

        assertNull(dao.getAlias(TABLE_1_CONNECTOR_ID, TABLE_1_SCHEMA_NAME, TABLE_1_TABLE_NAME));
    }

    @Test
    public void testAliasCreation()
    {
        createTables(dao);
        assertNull(dao.getAlias(TABLE_1_CONNECTOR_ID, TABLE_1_SCHEMA_NAME, TABLE_1_TABLE_NAME));

        TableAlias tableAlias = new TableAlias(TABLE_1_CONNECTOR_ID,
                TABLE_1_SCHEMA_NAME,
                TABLE_1_TABLE_NAME,
                TABLE_2_CONNECTOR_ID,
                TABLE_2_SCHEMA_NAME,
                TABLE_2_TABLE_NAME);

        dao.insertAlias(tableAlias);

        TableAlias tableAlias2 = dao.getAlias(TABLE_1_CONNECTOR_ID, TABLE_1_SCHEMA_NAME, TABLE_1_TABLE_NAME);

        Assert.assertEquals(tableAlias, tableAlias2);
    }

    @Test
    public void testAliasDeletion()
    {
        createTables(dao);
        assertNull(dao.getAlias(TABLE_1_CONNECTOR_ID, TABLE_1_SCHEMA_NAME, TABLE_1_TABLE_NAME));

        TableAlias tableAlias = new TableAlias(TABLE_1_CONNECTOR_ID,
                TABLE_1_SCHEMA_NAME,
                TABLE_1_TABLE_NAME,
                TABLE_2_CONNECTOR_ID,
                TABLE_2_SCHEMA_NAME,
                TABLE_2_TABLE_NAME);

        dao.insertAlias(tableAlias);

        TableAlias tableAlias2 = dao.getAlias(TABLE_1_CONNECTOR_ID, TABLE_1_SCHEMA_NAME, TABLE_1_TABLE_NAME);

        Assert.assertEquals(tableAlias, tableAlias2);

        dao.dropAlias(tableAlias);

        assertNull(dao.getAlias(TABLE_1_CONNECTOR_ID, TABLE_1_SCHEMA_NAME, TABLE_1_TABLE_NAME));
    }

    @Test
    public void testDoubleDestinationFails()
    {
        createTables(dao);
        assertNull(dao.getAlias(TABLE_1_CONNECTOR_ID, TABLE_1_SCHEMA_NAME, TABLE_1_TABLE_NAME));

        TableAlias tableAlias = new TableAlias(TABLE_1_CONNECTOR_ID,
                TABLE_1_SCHEMA_NAME,
                TABLE_1_TABLE_NAME,
                TABLE_2_CONNECTOR_ID,
                TABLE_2_SCHEMA_NAME,
                TABLE_2_TABLE_NAME);
        dao.insertAlias(tableAlias);

        try {
            tableAlias = new TableAlias(TABLE_3_CONNECTOR_ID,
                    TABLE_3_SCHEMA_NAME,
                    TABLE_3_TABLE_NAME,
                    TABLE_2_CONNECTOR_ID,
                    TABLE_2_SCHEMA_NAME,
                    TABLE_2_TABLE_NAME);
            dao.insertAlias(tableAlias);
            fail("Could insert table twice!");
        }
        catch (UnableToExecuteStatementException e) {
            // ok
        }
    }

    @Test
    public void testDoubleSourceOk()
    {
        createTables(dao);
        assertNull(dao.getAlias(TABLE_1_CONNECTOR_ID, TABLE_1_SCHEMA_NAME, TABLE_1_TABLE_NAME));

        TableAlias tableAlias = new TableAlias(TABLE_1_CONNECTOR_ID,
                TABLE_1_SCHEMA_NAME,
                TABLE_1_TABLE_NAME,
                TABLE_2_CONNECTOR_ID,
                TABLE_2_SCHEMA_NAME,
                TABLE_2_TABLE_NAME);
        dao.insertAlias(tableAlias);

        tableAlias = new TableAlias(TABLE_1_CONNECTOR_ID,
                TABLE_1_SCHEMA_NAME,
                TABLE_1_TABLE_NAME,
                TABLE_3_CONNECTOR_ID,
                TABLE_3_SCHEMA_NAME,
                TABLE_3_TABLE_NAME);
        dao.insertAlias(tableAlias);
    }
}
TOP

Related Classes of com.facebook.presto.metadata.TestAliasDao

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.