Package com.dianping.cat.consumer.metric

Source Code of com.dianping.cat.consumer.metric.ProductLineConfigManagerTest

package com.dianping.cat.consumer.metric;

import java.util.Date;
import java.util.List;
import java.util.Map;

import junit.framework.Assert;

import org.junit.Test;
import org.unidal.dal.jdbc.DalException;
import org.unidal.dal.jdbc.DalNotFoundException;
import org.unidal.dal.jdbc.Readset;
import org.unidal.dal.jdbc.Updateset;

import com.dianping.cat.consumer.MockLog;
import com.dianping.cat.consumer.company.model.entity.Company;
import com.dianping.cat.consumer.company.model.entity.ProductLine;
import com.dianping.cat.core.config.Config;
import com.dianping.cat.core.config.ConfigDao;

public class ProductLineConfigManagerTest {

  private static int s_storeCount;

  @Test
  public void testInitNormal() throws Exception {
    ProductLineConfigManager manager = new MockProductLineConfigManager();

    ((MockProductLineConfigManager) manager).setConfigDao(new MockConfigDao1());
    manager.initialize();

    ProductLine line1 = new ProductLine("Test1");
    ProductLine line2 = new ProductLine("Test2");
    String[] domains1 = { "domain1", "domain2" };
    String[] domains2 = { "domain3", "domain4" };

    manager.insertProductLine(line1, domains1);
    manager.insertProductLine(line2, domains2);

    Assert.assertEquals(2, s_storeCount);
    Assert.assertEquals("Default", manager.queryProductLineByDomain("domain"));
    Assert.assertEquals("Test1", manager.queryProductLineByDomain("domain1"));
    List<String> pDomains = manager.queryDomainsByProductLine("Test1");
    Assert.assertEquals(2, pDomains.size());
    Map<String, ProductLine> productLines = manager.queryAllProductLines();

    Assert.assertEquals(3, productLines.size());

    manager.enableLogging(new MockLog());
    manager.refreshProductLineConfig();
    productLines = manager.queryAllProductLines();
    Assert.assertEquals(1, productLines.size());
  }

  @Test
  public void testInitThrowException() throws Exception {
    ProductLineConfigManager manager = new MockProductLineConfigManager();
    ((MockProductLineConfigManager) manager).setConfigDao(new MockConfigDao2());

    try {
      manager.initialize();
    } catch (Exception e) {
    }

    Company config = manager.getCompany();
    Assert.assertEquals(0, config.getProductLines().size());
  }

  public static class MockProductLineConfigManager extends ProductLineConfigManager {

    public void setConfigDao(ConfigDao configDao) {
      m_configDao = configDao;
    }

  }

  public static class MockConfigDao2 extends MockConfigDao1 {
    @Override
    public Config findByName(String name, Readset<Config> readset) throws DalNotFoundException {
      throw new DalNotFoundException("this is a exception for test");
    }
  }

  public static class MockConfigDao1 extends ConfigDao {

    @Override
    public Config createLocal() {
      return super.createLocal();
    }

    @Override
    public int deleteByPK(Config proto) throws DalException {
      return 1;
    }

    @Override
    public Config findByPK(int keyId, Readset<Config> readset) throws DalException {
      Config config = new Config();

      config.setId(keyId);
      config.setModifyDate(new Date());
      config.setContent(new Company().toString());
      return config;
    }

    @Override
    public Config findByName(String name, Readset<Config> readset) throws DalException {
      Config config = new Config();

      config.setName(name);
      Company company = new Company();
      ProductLine productLine = new ProductLine("Test");

      company.addProductLine(productLine);
      config.setContent(company.toString());
      config.setModifyDate(new Date());
      return config;
    }

    @Override
    public int insert(Config proto) throws DalException {
      return 1;
    }

    @Override
    public int updateByPK(Config proto, Updateset<Config> updateset) throws DalException {
      s_storeCount++;
      return 1;
    }
  }
}
TOP

Related Classes of com.dianping.cat.consumer.metric.ProductLineConfigManagerTest

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.