Package com.alibaba.cobar.client

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

package com.alibaba.cobar.client;

import static org.testng.AssertJUnit.assertEquals;

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

import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import com.alibaba.cobar.client.entities.Offer;

@Test(sequential = true)
public class CobarSqlMapClientDaoSupportTestWithComposedRuleRouter extends
        AbstractTestNGCobarClientTest {

    private CobarSqlMapClientDaoSupport dao        = new CobarSqlMapClientDaoSupport();
    private Long[]                      memberIds  = new Long[] { 1L, 129L, 257L, 2L, 130L, 258L,
            386L                                  };

    public static final String          CREATE_SQL = "com.alibaba.cobar.client.entities.Offer.create";
    public static final String          UPDATE_SQL = "com.alibaba.cobar.client.entities.Offer.update";
    public static final String          DELETE_SQL = "com.alibaba.cobar.client.entities.Offer.deleteByMemberId";

    public CobarSqlMapClientDaoSupportTestWithComposedRuleRouter() {
        super(new String[] { "META-INF/spring/cobar-client-appctx.xml",
                "META-INF/spring/datasources-appctx.xml",
                "META-INF/spring/namespace-sqlaction-composed-router-appctx.xml" });
    }

    @BeforeTest
    public void setupDaoSupport() {
        dao.setSqlMapClientTemplate(getSqlMapClientTemplate());
    }

    public void testBatchInsertOnDaoSupport() {
        verifyNonExistenceOnPartitions();
        List<Offer> offers = createOffersWithMemberIds(memberIds);
        int result = dao.batchInsert(CREATE_SQL, offers);
        assertEquals(7, result);
        verifyExistenceOnPartitions();
    }

    public void testBatchUpdateOnDaoSupport() {
        verifyNonExistenceOnPartitions();
        List<Offer> offers = createOffersWithMemberIds(memberIds);

        int updatedNumber = dao.batchUpdate(UPDATE_SQL, offers);
        assertEquals(0, updatedNumber);

        int result = dao.batchInsert(CREATE_SQL, offers);
        assertEquals(7, result);
        verifyExistenceOnPartitions();

        for (Offer offer : offers) {
            offer.setSubject("_subject_to_update_");
        }

        updatedNumber = dao.batchUpdate(UPDATE_SQL, offers);
        assertEquals(7, updatedNumber);
    }

    public void testBatchDeleteOnDaoSupport() {
        verifyNonExistenceOnPartitions();

        List<Offer> offers = createOffersWithMemberIds(memberIds);
        int result = dao.batchDelete(DELETE_SQL, offers);
        assertEquals(0, result);

        int insertCount = dao.batchInsert(CREATE_SQL, offers);
        assertEquals(7, insertCount);
        verifyExistenceOnPartitions();
       
        int deleteCount = dao.batchDelete(DELETE_SQL, offers);
        assertEquals(7, deleteCount);
        verifyNonExistenceOnPartitions();
    }

    private List<Offer> createOffersWithMemberIds(Long[] memberIds) {
        List<Offer> offers = new ArrayList<Offer>();
        for (Long mid : memberIds) {
            Offer offer = new Offer();
            offer.setGmtUpdated(new Date());
            offer.setMemberId(mid);
            offer.setSubject("fake offer");
            offers.add(offer);
        }
        return offers;
    }

    private void verifyNonExistenceOnPartitions() {
        for (int i = 0; i < memberIds.length; i++) {
            String confirmSQL = "select subject from offers where memberId=" + memberIds[i];
            if (i < 3) {
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt1m);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt1s);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt2m);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt2s);
            } else {
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt1m);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt1s);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt2m);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt2s);
            }
        }
    }

    private void verifyExistenceOnPartitions() {
        for (int i = 0; i < memberIds.length; i++) {
            String confirmSQL = "select subject from offers where memberId=" + memberIds[i];
            if (i < 3) {
                verifyEntityExistenceOnSpecificDataSource(confirmSQL, jt1m);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt1s);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt2m);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt2s);
            } else {
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt1m);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt1s);
                verifyEntityExistenceOnSpecificDataSource(confirmSQL, jt2m);
                verifyEntityNonExistenceOnSpecificDataSource(confirmSQL, jt2s);
            }
        }
    }
}
TOP

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

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.