/*
* (C) 2007-2012 Alibaba Group Holding Limited.
*
* 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.
* Authors:
* wuhua <wq163@163.com> , boyan <killme2008@gmail.com>
*/
package com.taobao.metamorphosis;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.PosixParser;
import org.apache.commons.lang.StringUtils;
import org.easymock.classextension.EasyMock;
import org.easymock.classextension.IMocksControl;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.taobao.metamorphosis.server.BrokerZooKeeper;
import com.taobao.metamorphosis.server.assembly.BrokerCommandProcessor;
import com.taobao.metamorphosis.server.assembly.MetaMorphosisBroker;
import com.taobao.metamorphosis.server.utils.MetaConfig;
/**
* @author ��
* @since 2011-6-9 ����07:57:46
*/
public class ServerStartupTest {
private MetaMorphosisBroker metaMorphosisBroker;
private BrokerCommandProcessor brokerCommandProcessor;
private BrokerZooKeeper brokerZooKeeper;
private IMocksControl mocksControl;
@Before
public void setup() {
this.mocksControl = EasyMock.createControl();
this.metaMorphosisBroker = this.mocksControl.createMock(MetaMorphosisBroker.class);
this.brokerCommandProcessor = this.mocksControl.createMock(BrokerCommandProcessor.class);
this.brokerZooKeeper = this.mocksControl.createMock(BrokerZooKeeper.class);
}
@Test
public void testGetPluginsInfo() {
final String[] args =
StringUtils.split(
"./meta-server-start.sh -f ../conf/server.properties -FjettyBroker jettyBroker.properties", " ");
final CommandLine line = StartupHelp.parseCmdLine(args, new PosixParser());
final Map<String, Properties> pluginsInfo = ServerStartup.getPluginsInfo(line);
Assert.assertTrue(pluginsInfo.get("jettyBroker").getProperty("serverPort").equals("8080"));
// EasyMock.expect(this.metaMorphosisBroker.).andReturn(this.brokerCommandProcessor)
// .anyTimes();
// EasyMock.expect(this.metaMorphosisBroker.getMetaConfig()).andReturn(new
// MetaConfig());
EasyMock.expect(this.metaMorphosisBroker.getBrokerProcessor()).andReturn(null);
this.mocksControl.replay();
final BrokerPlugins brokerPlugins = new BrokerPlugins(pluginsInfo, this.metaMorphosisBroker);
brokerPlugins.init(this.metaMorphosisBroker, null);
this.mocksControl.verify();
Assert.assertTrue(brokerPlugins.getPluginsInfo().size() == 1);
Assert.assertTrue(brokerPlugins.getPluginsInfo().containsKey("jettyBroker"));
}
@Test
public void testGetPluginsInfo_metaslave() {
final String[] args =
StringUtils.split(
"./meta-server-start.sh -f ../conf/server.properties -Fmetaslave async_slave.properties", " ");
final CommandLine line = StartupHelp.parseCmdLine(args, new PosixParser());
final Map<String, Properties> pluginsInfo = ServerStartup.getPluginsInfo(line);
Assert.assertTrue(pluginsInfo.get("metaslave").getProperty("slaveId").equals("1"));
Assert.assertTrue(pluginsInfo.get("metaslave").getProperty("slaveGroup").equals("meta-slave-group"));
Assert.assertTrue(pluginsInfo.get("metaslave").getProperty("slaveMaxDelayInMills").equals("500"));
EasyMock.expect(this.metaMorphosisBroker.getBrokerZooKeeper()).andReturn(brokerZooKeeper).anyTimes();
// this.brokerZooKeeper.resetBrokerIdPath();
// EasyMock.expect(this.metaMorphosisBroker.getStoreManager()).andReturn(null);
// EasyMock.expect(metaMorphosisBroker.getIdWorker()).andReturn(null);
// EasyMock.expect(this.metaMorphosisBroker.getStatsManager()).andReturn(null);
// EasyMock.expect(this.metaMorphosisBroker.getBrokerProcessor()).andReturn(this.brokerCommandProcessor);
final MetaConfig metaConfig = new MetaConfig();
// metaConfig.setSlaveId(1);
EasyMock.expect(this.metaMorphosisBroker.getMetaConfig()).andReturn(metaConfig).anyTimes();
this.mocksControl.replay();
final BrokerPlugins brokerPlugins = new BrokerPlugins(pluginsInfo, this.metaMorphosisBroker);
// brokerPlugins.init(this.metaMorphosisBroker, null);
this.mocksControl.verify();
Assert.assertTrue(brokerPlugins.getPluginsInfo().size() == 1);
Assert.assertTrue(brokerPlugins.getPluginsInfo().containsKey("metaslave"));
}
}