package com.baidu.disconf.client.test; import java.util.HashSet; import java.util.Set; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import com.baidu.disconf.client.DisconfMgr; import com.baidu.disconf.client.DisconfMgrBean; import com.baidu.disconf.client.core.DisconfCoreFactory; import com.baidu.disconf.client.core.DisconfCoreMgr; import com.baidu.disconf.client.core.impl.DisconfCoreMgrImpl; import com.baidu.disconf.client.fetcher.FetcherFactory; import com.baidu.disconf.client.fetcher.FetcherMgr; import com.baidu.disconf.client.store.DisconfStoreProcessorFactory; import com.baidu.disconf.client.store.inner.DisconfCenterHostFilesStore; import com.baidu.disconf.client.support.registry.Registry; import com.baidu.disconf.client.support.utils.StringUtil; import com.baidu.disconf.client.test.common.BaseSpringMockTestCase; import com.baidu.disconf.client.test.model.ConfA; import com.baidu.disconf.client.test.model.ServiceA; import com.baidu.disconf.client.test.model.StaticConf; import com.baidu.disconf.client.test.scan.inner.ScanPackTestCase; import com.baidu.disconf.client.test.watch.mock.WatchMgrMock; import com.baidu.disconf.client.usertools.DisconfDataGetter; import com.baidu.disconf.client.watch.WatchMgr; import mockit.Mock; import mockit.MockUp; /** * 一个Demo示例, 远程的下载服务器使用WireMOck, Watch模块使用Jmockit * * @author liaoqiqi * @version 2014-6-10 */ public class DisconfMgrTestCase extends BaseSpringMockTestCase implements ApplicationContextAware { protected static final Logger LOGGER = LoggerFactory.getLogger(DisconfMgrTestCase.class); // application context private ApplicationContext applicationContext; @Autowired private ConfA confA; @Autowired private ServiceA serviceA; @Test public void demo() { // // mock up factory method // new MockUp<DisconfCoreFactory>() { @Mock public DisconfCoreMgr getDisconfCoreMgr(Registry registry) throws Exception { FetcherMgr fetcherMgr = FetcherFactory.getFetcherMgr(); // Watch 模块 final WatchMgr watchMgr = new WatchMgrMock().getMockInstance(); watchMgr.init("", "", true); // registry DisconfCoreMgr disconfCoreMgr = new DisconfCoreMgrImpl(watchMgr, fetcherMgr, registry); return disconfCoreMgr; } }; // // 正式测试 // try { LOGGER.info("================ BEFORE DISCONF =============================="); LOGGER.info("before disconf values:"); LOGGER.info(String.valueOf("varA: " + confA.getVarA())); LOGGER.info(String.valueOf("varA2: " + confA.getVarA2())); LOGGER.info(String.valueOf("varAA: " + serviceA.getVarAA())); LOGGER.info("================ BEFORE DISCONF =============================="); // // start it // Set<String> fileSet = new HashSet<String>(); fileSet.add("atomserverl.properties"); fileSet.add("atomserverm_slave.properties"); DisconfCenterHostFilesStore.getInstance().addJustHostFileSet(fileSet); DisconfMgr.getInstance().setApplicationContext(applicationContext); DisconfMgr.getInstance().start(StringUtil.parseStringToStringList(ScanPackTestCase.SCAN_PACK_NAME, DisconfMgrBean.SCAN_SPLIT_TOKEN)); // LOGGER.info(DisconfStoreProcessorFactory.getDisconfStoreFileProcessor().confToString()); // LOGGER.info(DisconfStoreProcessorFactory.getDisconfStoreItemProcessor().confToString()); LOGGER.info("================ AFTER DISCONF =============================="); LOGGER.info(String.valueOf("varA: " + confA.getVarA())); Assert.assertEquals(new Long(1000), confA.getVarA()); LOGGER.info(String.valueOf("varA2: " + confA.getVarA2())); Assert.assertEquals(new Long(2000), confA.getVarA2()); LOGGER.info(String.valueOf("varAA: " + serviceA.getVarAA())); Assert.assertEquals(new Integer(1000).intValue(), serviceA.getVarAA()); LOGGER.info(String.valueOf("static var: " + StaticConf.getStaticvar())); Assert.assertEquals(new Integer(50).intValue(), StaticConf.getStaticvar()); testDynamicGetter(); LOGGER.info("================ AFTER DISCONF =============================="); } catch (Exception e) { e.printStackTrace(); Assert.assertTrue(false); } } private void testDynamicGetter() { Assert.assertEquals(DisconfDataGetter.getByFile("confA.properties").get("confa.varA").toString(), "1000"); Assert.assertEquals(DisconfDataGetter.getByItem("keyA").toString(), "1000"); Assert.assertEquals(DisconfDataGetter.getByFileItem("confA.properties", "confa.varA").toString(), "1000"); } public ApplicationContext getApplicationContext() { return applicationContext; } @Override public void setApplicationContext(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } }