Package com.impetus.kundera.tests.crossdatastore.useraddress.datatype

Source Code of com.impetus.kundera.tests.crossdatastore.useraddress.datatype.MTOUniAssociationIntTest

/*******************************************************************************
* * Copyright 2012 Impetus Infotech.
*  *
*  * 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.impetus.kundera.tests.crossdatastore.useraddress.datatype;

import java.nio.ByteBuffer;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import junit.framework.Assert;

import org.apache.cassandra.thrift.Compression;
import org.apache.cassandra.thrift.ConsistencyLevel;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.cassandra.thrift.SchemaDisagreementException;
import org.apache.cassandra.thrift.TimedOutException;
import org.apache.cassandra.thrift.UnavailableException;
import org.apache.thrift.TException;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import com.impetus.kundera.client.cassandra.persistence.CassandraCli;
import com.impetus.kundera.tests.crossdatastore.useraddress.TwinAssociation;
import com.impetus.kundera.tests.crossdatastore.useraddress.datatype.entities.HabitatUniMTo1Long;
import com.impetus.kundera.tests.crossdatastore.useraddress.datatype.entities.PersonnelUniMTo1Int;

/**
* @author vivek.mishra
*
*/
public class MTOUniAssociationIntTest extends TwinAssociation
{
    private static final Long ADDRESS_ID = new Long(123456);

    public static final String[] ALL_PUs_UNDER_TEST = new String[] { "addCassandra", "addMongo", "oracle_kvstore",
            "addCouchdb" };

    /**
     * Inits the.
     */
    @BeforeClass
    public static void init() throws Exception
    {
        if (RUN_IN_EMBEDDED_MODE)
        {
            CassandraCli.cassandraSetUp();
        }
        if (AUTO_MANAGE_SCHEMA)
        {
            CassandraCli.initClient();
        }

        List<Class> clazzz = new ArrayList<Class>(2);
        clazzz.add(PersonnelUniMTo1Int.class);
        clazzz.add(HabitatUniMTo1Long.class);
        init(clazzz, ALL_PUs_UNDER_TEST);
    }

    /**
     * Sets the up.
     *
     * @throws Exception
     *             the exception
     */
    @Before
    public void setUp() throws Exception
    {
        setUpInternal("HabitatUniMTo1Long", "PersonnelUniMTo1Int");
    }

    /**
     * Test CRUD.
     */
    @Test
    public void testCRUD()
    {
        tryOperation(ALL_PUs_UNDER_TEST);
    }

    @Override
    protected void insert()
    {
        PersonnelUniMTo1Int person1 = new PersonnelUniMTo1Int();
        person1.setPersonId(12345);
        person1.setPersonName("Amresh");

        PersonnelUniMTo1Int person2 = new PersonnelUniMTo1Int();
        person2.setPersonId(12346);
        person2.setPersonName("Vivek");

        HabitatUniMTo1Long address = new HabitatUniMTo1Long();
        address.setAddressId(ADDRESS_ID);
        address.setStreet("AAAAAAAAAAAAA");

        person1.setAddress(address);
        person2.setAddress(address);

        Set<PersonnelUniMTo1Int> persons = new HashSet<PersonnelUniMTo1Int>();
        persons.add(person1);
        persons.add(person2);

        dao.savePersons(persons);

        col.add(person1);
        col.add(person2);
        col.add(address);
    }

    @Override
    protected void find()
    {
        // Find Person 1
        PersonnelUniMTo1Int p1 = (PersonnelUniMTo1Int) dao.findPerson(PersonnelUniMTo1Int.class, 12345);
        assertPerson1(p1);

        // Find Person 2
        PersonnelUniMTo1Int p2 = (PersonnelUniMTo1Int) dao.findPerson(PersonnelUniMTo1Int.class, 12346);
        assertPerson2(p2);

    }

    @Override
    protected void findPersonByIdColumn()
    {
        PersonnelUniMTo1Int p = (PersonnelUniMTo1Int) dao.findPersonByIdColumn(PersonnelUniMTo1Int.class, 12345);
        assertPerson1(p);
    }

    @Override
    protected void findPersonByName()
    {
        List<PersonnelUniMTo1Int> persons = dao.findPersonByName(PersonnelUniMTo1Int.class, "Amresh");
        Assert.assertNotNull(persons);
        Assert.assertFalse(persons.isEmpty());
        Assert.assertTrue(persons.size() == 1);
        PersonnelUniMTo1Int person = persons.get(0);
        assertPerson1(person);
    }

    @Override
    protected void findAddressByIdColumn()
    {
        HabitatUniMTo1Long a = (HabitatUniMTo1Long) dao.findAddressByIdColumn(HabitatUniMTo1Long.class, ADDRESS_ID);
        assertAddress(a);
    }

    @Override
    protected void findAddressByStreet()
    {
        List<HabitatUniMTo1Long> adds = dao.findAddressByStreet(HabitatUniMTo1Long.class, "AAAAAAAAAAAAA");
        Assert.assertNotNull(adds);
        Assert.assertFalse(adds.isEmpty());
        Assert.assertTrue(adds.size() == 1);

        assertAddress(adds.get(0));
    }

    @Override
    protected void update()
    {
        // Find Person 1
        PersonnelUniMTo1Int p1 = (PersonnelUniMTo1Int) dao.findPerson(PersonnelUniMTo1Int.class, 12345);
        Assert.assertNotNull(p1);
        p1.setPersonName("Saurabh");
        p1.getAddress().setStreet("Brand New Street");
        dao.merge(p1);
        PersonnelUniMTo1Int p1AfterMerge = (PersonnelUniMTo1Int) dao.findPerson(PersonnelUniMTo1Int.class, 12345);
        Assert.assertNotNull(p1AfterMerge);
        Assert.assertEquals("Saurabh", p1AfterMerge.getPersonName());
        Assert.assertEquals("Brand New Street", p1AfterMerge.getAddress().getStreet());

        // Find Person 2
        PersonnelUniMTo1Int p2 = (PersonnelUniMTo1Int) dao.findPerson(PersonnelUniMTo1Int.class, 12346);
        Assert.assertNotNull(p2);
        p2.setPersonName("Prateek");
        dao.merge(p2);
        PersonnelUniMTo1Int p2AfterMerge = (PersonnelUniMTo1Int) dao.findPerson(PersonnelUniMTo1Int.class, 12346);
        Assert.assertNotNull(p2AfterMerge);
        Assert.assertEquals("Prateek", p2AfterMerge.getPersonName());
        Assert.assertEquals("Brand New Street", p2AfterMerge.getAddress().getStreet());
    }

    @Override
    protected void remove()
    {
        // Remove Person 1
        dao.remove(12345, PersonnelUniMTo1Int.class);
        PersonnelUniMTo1Int p1AfterRemoval = (PersonnelUniMTo1Int) dao.findPerson(PersonnelUniMTo1Int.class, 12345);
        Assert.assertNull(p1AfterRemoval);

        // Remove Person 2
        dao.remove(12346, PersonnelUniMTo1Int.class);
        PersonnelUniMTo1Int p2AfterRemoval = (PersonnelUniMTo1Int) dao.findPerson(PersonnelUniMTo1Int.class, 12346);
        Assert.assertNull(p2AfterRemoval);
    }

    /**
     * Tear down.
     *
     * @throws Exception
     *             the exception
     */
    @After
    public void tearDown() throws Exception
    {
        // tearDownInternal(ALL_PUs_UNDER_TEST);
        // shutDownRdbmsServer();
    }

    /**
     * @param p2
     */
    private void assertPerson2(PersonnelUniMTo1Int p2)
    {
        Assert.assertNotNull(p2);
        Assert.assertEquals(12346, p2.getPersonId());
        Assert.assertEquals("Vivek", p2.getPersonName());

        HabitatUniMTo1Long add2 = p2.getAddress();
        assertAddress(add2);
    }

    /**
     * @param p1
     */
    private void assertPerson1(PersonnelUniMTo1Int p1)
    {
        Assert.assertNotNull(p1);
        Assert.assertEquals(12345, p1.getPersonId());
        Assert.assertEquals("Amresh", p1.getPersonName());

        HabitatUniMTo1Long add = p1.getAddress();
        assertAddress(add);
    }

    /**
     * @param add2
     */
    private void assertAddress(HabitatUniMTo1Long add2)
    {
        Assert.assertNotNull(add2);

        Assert.assertEquals(ADDRESS_ID, add2.getAddressId());
        Assert.assertEquals("AAAAAAAAAAAAA", add2.getStreet());
    }

    @Override
    protected void loadDataForPERSONNEL() throws TException, InvalidRequestException, UnavailableException,
            TimedOutException, SchemaDisagreementException
    {
        String keyspaceName = "KunderaTests";
        CassandraCli.createKeySpace(keyspaceName);

        CassandraCli.client.set_keyspace(keyspaceName);
        try
        {
            CassandraCli.client.execute_cql3_query(
                    ByteBuffer.wrap("drop table \"PersonnelUniMTo1Int\"".getBytes("UTF-8")), Compression.NONE,
                    ConsistencyLevel.ONE);
        }
        catch (Exception ex)
        {

        }
        CassandraCli
                .executeCqlQuery(
                        "create table \"PersonnelUniMTo1Int\" ( \"PERSON_ID\" int PRIMARY KEY,  \"PERSON_NAME\" text, \"ADDRESS_ID\" bigint)",
                        keyspaceName);
        CassandraCli.executeCqlQuery("create index on \"PersonnelUniMTo1Int\" ( \"PERSON_NAME\")", keyspaceName);
        CassandraCli.executeCqlQuery("create index on \"PersonnelUniMTo1Int\" ( \"ADDRESS_ID\")", keyspaceName);
    }

    @Override
    protected void loadDataForHABITAT() throws TException, InvalidRequestException, UnavailableException,
            TimedOutException, SchemaDisagreementException
    {
        String keyspaceName = "KunderaTests";
        CassandraCli.createKeySpace(keyspaceName);

        CassandraCli.client.set_keyspace(keyspaceName);
        try
        {
            CassandraCli.client.execute_cql3_query(ByteBuffer.wrap("drop table \"HabitatUniMTo1Long\"".getBytes("UTF-8")),
                    Compression.NONE, ConsistencyLevel.ONE);
        }
        catch (Exception ex)
        {

        }
        CassandraCli.executeCqlQuery(
                "create table \"HabitatUniMTo1Long\" ( \"ADDRESS_ID\" bigint PRIMARY KEY,  \"STREET\" text)", keyspaceName);
        CassandraCli.executeCqlQuery("create index on \"HabitatUniMTo1Long\" ( \"STREET\")", keyspaceName);
    }

    /*
     * (non-Javadoc)
     *
     * @see
     * com.impetus.kundera.tests.crossdatastore.useraddress.AssociationBase#
     * createSchemaForPERSONNEL()
     */
    @Override
    protected void createSchemaForPERSONNEL() throws SQLException
    {
        try
        {
            cli.update("CREATE TABLE KUNDERATESTS.PersonnelUniMTo1Int (PERSON_ID INTEGER PRIMARY KEY, PERSON_NAME VARCHAR(256), ADDRESS_ID BIGINT)");
        }
        catch (Exception e)
        {
            cli.update("DELETE FROM KUNDERATESTS.PersonnelUniMTo1Int");
            cli.update("DROP TABLE KUNDERATESTS.PersonnelUniMTo1Int");
            cli.update("CREATE TABLE KUNDERATESTS.PersonnelUniMTo1Int (PERSON_ID INTEGER PRIMARY KEY, PERSON_NAME VARCHAR(256), ADDRESS_ID BIGINT)");
        }
    }

    /*
     * (non-Javadoc)
     *
     * @see
     * com.impetus.kundera.tests.crossdatastore.useraddress.AssociationBase#
     * createSchemaForHABITAT()
     */
    @Override
    protected void createSchemaForHABITAT() throws SQLException
    {
        try
        {
            cli.update("CREATE TABLE KUNDERATESTS.HabitatUniMTo1Long (ADDRESS_ID BIGINT PRIMARY KEY, STREET VARCHAR(256))");
        }
        catch (Exception e)
        {
            cli.update("DELETE FROM KUNDERATESTS.HabitatUniMTo1Long");
            cli.update("DROP TABLE KUNDERATESTS.HabitatUniMTo1Long");
            cli.update("CREATE TABLE KUNDERATESTS.HabitatUniMTo1Long(ADDRESS_ID BIGINT PRIMARY KEY, STREET VARCHAR(256))");
        }
    }

}
TOP

Related Classes of com.impetus.kundera.tests.crossdatastore.useraddress.datatype.MTOUniAssociationIntTest

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.