/* * Copyright 1999-2012 Alibaba Group. * * 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.alibaba.cobar.manager.qa.sysadmin; import java.io.IOException; import org.apache.log4j.Logger; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import com.alibaba.cobar.manager.dao.xml.CobarDAOImple; import com.alibaba.cobar.manager.dao.xml.XMLFileLoaderPath; import com.alibaba.cobar.manager.dataobject.xml.CobarDO; import com.alibaba.cobar.manager.util.ConstantDefine; /** * @author xiaowen.guoxw * @version ???????2011-6-27 ????03:20:37 */ public class CobarDaoTest extends SysAdminTest { private CobarDAOImple cobarDao = null; private String cobarXmlPath = null; private static final Logger logger = Logger.getLogger(CobarDaoTest.class); private XMLFileLoaderPath xmlFileLoader = null; @Before public void initData() { Assert.assertNotNull(xmlPath); xmlFileLoader = new XMLFileLoaderPath(); xmlFileLoader.setXmlPath(xmlPath); cobarDao = new CobarDAOImple(); cobarDao.setXmlFileLoader(xmlFileLoader); cobarXmlPath = xmlPath + System.getProperty("file.separator") + "cobar.xml"; XmlFile xmlFile = new XmlFile(cobarXmlPath, "cobars"); try { xmlFile.init(); } catch (IOException e) { logger.error(e.getMessage(), e); Assert.fail(); } read(); } @Test public void testAddFirstCobar() { long testId = 1L; CobarDO cobarTemp = cobarDao.getCobarById(testId); Assert.assertNull(cobarTemp); CobarDO cobar = DOFactory.getCobar(); cobarDao.addCobar(cobar); Assert.assertNotNull(cobarDao.getCobarById(testId)); Assert.assertSame(cobar, cobarDao.getCobarById(testId)); read(); Assert.assertEquals(cobar.getClusterId(), cobarDao.getCobarById(testId).getClusterId()); } @Test public void testAddManyCobar() { int cobarNum = 10; for (int i = 0; i < cobarNum; i++) { CobarDO cobar = DOFactory.getCobar(); cobar.setName("" + i); cobarDao.addCobar(cobar); } // int activeCobarNum = cobarDao.getCobarCountByStatus(1L, ConstantDefine.ACTIVE); int activeCobarNum = cobarDao.getCobarList(1L).size(); Assert.assertEquals(cobarNum, activeCobarNum); } @Test public void testModifyCobar() { CobarDO cobar = DOFactory.getCobar(); cobarDao.addCobar(cobar); CobarDO destCobar = DOFactory.getCobar(); long destClusterId = cobar.getClusterId() + 1L; String destHost = cobar.getHost() + "1.1.1"; String destName = cobar.getName() + "test"; int destPort = cobar.getPort() + 2; String destUser = cobar.getUser() + "test"; String destPassword = cobar.getPassword() + "test"; String destStatus = ConstantDefine.ACTIVE.equals(cobar.getStatus()) ? ConstantDefine.IN_ACTIVE : ConstantDefine.ACTIVE; String destTimeDiff = cobar.getTime_diff() + "test"; destCobar.setClusterId(destClusterId); destCobar.setHost(destHost); destCobar.setName(destName); destCobar.setPassword(destPassword); destCobar.setPort(destPort); destCobar.setStatus(destStatus); destCobar.setTime_diff(destTimeDiff); destCobar.setUser(destUser); destCobar.setId(cobar.getId()); Assert.assertTrue(cobarDao.modifyCobar(destCobar)); read(); CobarDO cobarTemp = cobarDao.getCobarById(1L); Assert.assertEquals(cobarTemp.getClusterId(), destClusterId); Assert.assertEquals(cobarTemp.getHost(), destHost); Assert.assertEquals(cobarTemp.getPort(), destPort); Assert.assertEquals(cobarTemp.getPassword(), destPassword); Assert.assertEquals(cobarTemp.getStatus(), destStatus); Assert.assertEquals(cobarTemp.getTime_diff(), destTimeDiff); } @Test public void testModifyCobarToExistName() { int insertCobarNum = 3; for (int i = 0; i < insertCobarNum; i++) { CobarDO cobar = DOFactory.getCobar(); cobar.setName("test" + i); cobarDao.addCobar(cobar); } CobarDO cobarTemp = cobarDao.getCobarById(1); cobarTemp.setName("test1"); Assert.assertFalse(cobarDao.modifyCobar(cobarTemp)); read(); cobarTemp = cobarDao.getCobarById(1); Assert.assertEquals("test0", cobarTemp.getName()); } // same as add cluster @Test public void testModifyNotExistCobarId() { CobarDO cobar = DOFactory.getCobar(); cobar.setId(3); cobarDao.modifyCobar(cobar); read(); Assert.assertNotNull(cobarDao.getCobarById(3)); Assert.assertNull(cobarDao.getCobarById(1)); } @Test public void testGetCobarList() { long testClusterId = 1L; int testCobarNum = 3; int otherCobarNum = 4; for (int i = 0; i < testCobarNum; i++) { CobarDO cobar = DOFactory.getCobar(); cobar.setName("test" + i); cobar.setClusterId(testClusterId); cobarDao.addCobar(cobar); } for (int i = testCobarNum; i < testCobarNum + otherCobarNum; i++) { CobarDO cobar = DOFactory.getCobar(); cobar.setName("test" + i); cobar.setClusterId(testClusterId + 1L); cobarDao.addCobar(cobar); } Assert.assertEquals(testCobarNum, cobarDao.getCobarList(testClusterId).size()); Assert.assertEquals(0, cobarDao.getCobarList(testClusterId + 3).size()); } @Test public void testGetCobarListbyStatus() { long testClusterId = 1L; int activeCobarNum = 3; int inActiveCobarNum = 4; for (int i = 0; i < activeCobarNum; i++) { CobarDO cobar = DOFactory.getCobar(); cobar.setName("test" + i); cobar.setStatus(ConstantDefine.ACTIVE); cobarDao.addCobar(cobar); } for (int i = activeCobarNum; i < activeCobarNum + inActiveCobarNum; i++) { CobarDO cobar = DOFactory.getCobar(); cobar.setName("test" + i); cobar.setStatus(ConstantDefine.IN_ACTIVE); cobarDao.addCobar(cobar); } // Assert.assertEquals(activeCobarNum, cobarDao.getCobarCountByStatus(testClusterId, ConstantDefine.ACTIVE)); // Assert.assertEquals(inActiveCobarNum, cobarDao.getCobarCountByStatus(testClusterId, ConstantDefine.IN_ACTIVE)); // Assert.assertEquals(0, cobarDao.getCobarCountByStatus(testClusterId + 1, ConstantDefine.ACTIVE)); // Assert.assertEquals(0, cobarDao.getCobarCountByStatus(testClusterId + 1, ConstantDefine.IN_ACTIVE)); Assert.assertEquals(activeCobarNum, cobarDao.getCobarList(testClusterId, ConstantDefine.ACTIVE).size()); Assert.assertEquals(inActiveCobarNum, cobarDao.getCobarList(testClusterId, ConstantDefine.IN_ACTIVE).size()); Assert.assertEquals(0, cobarDao.getCobarList(testClusterId + 1, ConstantDefine.ACTIVE).size()); Assert.assertEquals(0, cobarDao.getCobarList(testClusterId + 1, ConstantDefine.IN_ACTIVE).size()); } public void read() { try { xmlFileLoader.setXmlPath(xmlPath); cobarDao.afterPropertiesSet(); } catch (Exception e) { logger.error(e.getMessage(), e); Assert.fail(); } } }