Package com.alibaba.cobar.client

Source Code of com.alibaba.cobar.client.AbstractTestNGCobarClientTest

package com.alibaba.cobar.client;

import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.fail;

import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeMethod;

import com.alibaba.cobar.client.entities.Follower;
import com.alibaba.cobar.client.support.vo.BatchInsertTask;

public abstract class AbstractTestNGCobarClientTest {
   
    private transient final Logger logger = LoggerFactory
            .getLogger(AbstractTestNGCobarClientTest.class);
   
    public static final String   CREATE_TABLE_COBAR_HA    = "CREATE TABLE IF NOT EXISTS cobarha(timeflag TIMESTAMP)";
    public static final String   CREATE_TABLE_TWEETS      = "CREATE TABLE IF NOT EXISTS tweets(id BIGINT IDENTITY PRIMARY KEY, tweet VARCHAR(140))";
    public static final String   CREATE_TABLE_FOLLOWERS   = "CREATE TABLE IF NOT EXISTS followers(id BIGINT IDENTITY PRIMARY KEY,name VARCHAR(255))";
    public static final String   CREATE_TABLE_OFFERS      = "CREATE TABLE IF NOT EXISTS offers(id BIGINT(20) AUTO_INCREMENT PRIMARY KEY, memberId VARCHAR(32), subject  VARCHAR(512), gmtUpdated TIMESTAMP default CURRENT_TIMESTAMP())";

    public static final String   TRUNCATE_TABLE_COBARHA   = "TRUNCATE TABLE cobarha";
    public static final String   TRUNCATE_TABLE_TWEETS    = "TRUNCATE TABLE tweets";
    public static final String   TRUNCATE_TABLE_FOLLOWERS = "TRUNCATE TABLE followers";
    public static final String   TRUNCATE_TABLE_OFFERS    = "TRUNCATE TABLE offers";

    private ApplicationContext   applicationContext;
    private SqlMapClientTemplate sqlMapClientTemplate;
    protected JdbcTemplate       jt1m;
    protected JdbcTemplate       jt1s;
    protected JdbcTemplate       jt2m;
    protected JdbcTemplate       jt2s;

    public AbstractTestNGCobarClientTest(String[] locations) {
        applicationContext = new ClassPathXmlApplicationContext(locations);
        ((AbstractApplicationContext) applicationContext).registerShutdownHook();

        setSqlMapClientTemplate((SqlMapClientTemplate) applicationContext
                .getBean("sqlMapClientTemplate"));

        jt1m = new JdbcTemplate((DataSource) applicationContext.getBean("partition1_main"));
        jt1s = new JdbcTemplate((DataSource) applicationContext.getBean("partition1_standby"));
        jt2m = new JdbcTemplate((DataSource) applicationContext.getBean("partition2_main"));
        jt2s = new JdbcTemplate((DataSource) applicationContext.getBean("partition2_standby"));

        jt1m.execute(CREATE_TABLE_COBAR_HA);
        jt1m.execute(CREATE_TABLE_TWEETS);
        jt1m.execute(CREATE_TABLE_FOLLOWERS);
        jt1m.execute(CREATE_TABLE_OFFERS);

        jt1s.execute(CREATE_TABLE_COBAR_HA);
        jt1s.execute(CREATE_TABLE_TWEETS);
        jt1s.execute(CREATE_TABLE_FOLLOWERS);
        jt1s.execute(CREATE_TABLE_OFFERS);

        jt2m.execute(CREATE_TABLE_COBAR_HA);
        jt2m.execute(CREATE_TABLE_FOLLOWERS);
        jt2m.execute(CREATE_TABLE_TWEETS);
        jt2m.execute(CREATE_TABLE_OFFERS);

        jt2s.execute(CREATE_TABLE_COBAR_HA);
        jt2s.execute(CREATE_TABLE_FOLLOWERS);
        jt2s.execute(CREATE_TABLE_TWEETS);
        jt2s.execute(CREATE_TABLE_OFFERS);
    }

    @BeforeMethod(alwaysRun = true)
    public void setUpBeforeEachTestMethodRun() {
        jt1m.execute(TRUNCATE_TABLE_COBARHA);
        jt1m.execute(TRUNCATE_TABLE_TWEETS);
        jt1m.execute(TRUNCATE_TABLE_FOLLOWERS);
        jt1m.execute(TRUNCATE_TABLE_OFFERS);

        jt1s.execute(TRUNCATE_TABLE_COBARHA);
        jt1s.execute(TRUNCATE_TABLE_TWEETS);
        jt1s.execute(TRUNCATE_TABLE_FOLLOWERS);
        jt1s.execute(TRUNCATE_TABLE_OFFERS);

        jt2m.execute(TRUNCATE_TABLE_COBARHA);
        jt2m.execute(TRUNCATE_TABLE_FOLLOWERS);
        jt2m.execute(TRUNCATE_TABLE_TWEETS);
        jt2m.execute(TRUNCATE_TABLE_OFFERS);

        jt2s.execute(TRUNCATE_TABLE_COBARHA);
        jt2s.execute(TRUNCATE_TABLE_FOLLOWERS);
        jt2s.execute(TRUNCATE_TABLE_TWEETS);
        jt2s.execute(TRUNCATE_TABLE_OFFERS);
    }

    @AfterClass
    public void cleanup() {
        if (applicationContext != null) {
            logger.info("shut down Application Context to clean up.");           
            ((AbstractApplicationContext) applicationContext).destroy();
        }
    }

    protected void batchInsertMultipleFollowersAsFixture(String[] names) {
        List<Follower> followers = new ArrayList<Follower>();
        for (String name : names) {
            followers.add(new Follower(name));
        }

        BatchInsertTask task = new BatchInsertTask(followers);
        getSqlMapClientTemplate().insert("com.alibaba.cobar.client.entities.Follower.batchInsert",
                task);
    }

    protected void batchInsertMultipleFollowersAsFixtureWithJdbcTemplate(String[] names,
                                                                         JdbcTemplate jt) {
        for (String name : names) {
            String sql = "insert into followers(name) values('" + name + "')";
            jt.update(sql);
        }
    }

    protected void verifyEntityNonExistenceOnSpecificDataSource(String sql, JdbcTemplate jt) {
        try {
            jt.queryForObject(sql, String.class);
            fail();
        } catch (DataAccessException e) {
            // pass
        }
    }

    protected void verifyEntityExistenceOnSpecificDataSource(String sql, JdbcTemplate jt) {
        try {
            assertNotNull(jt.queryForObject(sql, String.class));
        } catch (DataAccessException e) {
            fail();
        }
    }

    public void setApplicationContext(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    public ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate) {
        this.sqlMapClientTemplate = sqlMapClientTemplate;
    }

    public SqlMapClientTemplate getSqlMapClientTemplate() {
        return sqlMapClientTemplate;
    }
}
TOP

Related Classes of com.alibaba.cobar.client.AbstractTestNGCobarClientTest

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.