001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: */
019:
020: package org.apache.geronimo.farm.deployment;
021:
022: import java.util.ArrayList;
023: import java.util.Collection;
024:
025: import org.apache.geronimo.farm.config.ClusterInfo;
026: import org.apache.geronimo.farm.config.NodeInfo;
027: import org.apache.geronimo.kernel.Kernel;
028: import org.apache.geronimo.kernel.config.ConfigurationManager;
029: import org.apache.geronimo.kernel.config.NoSuchConfigException;
030: import org.apache.geronimo.kernel.repository.Artifact;
031:
032: import com.agical.rmock.extension.junit.RMockTestCase;
033:
034: /**
035: *
036: * @version $Rev:$ $Date:$
037: */
038: public class BasicClusterConfigurationControllerTest extends
039: RMockTestCase {
040:
041: private ClusterInfo clusterInfo;
042: private NodeInfo nodeInfo;
043: private String nodeName;
044: private Artifact configurationId;
045: private ConfigurationManager configurationManager;
046:
047: @Override
048: protected void setUp() throws Exception {
049: nodeName = "nodeName";
050:
051: clusterInfo = (ClusterInfo) mock(ClusterInfo.class);
052:
053: Collection<NodeInfo> nodeInfos = new ArrayList<NodeInfo>();
054:
055: nodeInfo = (NodeInfo) mock(NodeInfo.class, "NodeInfo1");
056: nodeInfos.add(nodeInfo);
057: nodeInfo.getName();
058: modify().multiplicity(expect.from(0)).returnValue(nodeName);
059: nodeInfo.newKernel();
060: modify().multiplicity(expect.from(0));
061:
062: NodeInfo secondNodeInfo = (NodeInfo) mock(NodeInfo.class,
063: "NodeInfo2");
064: nodeInfos.add(secondNodeInfo);
065: secondNodeInfo.getName();
066: modify().multiplicity(expect.from(0)).returnValue("unkown");
067:
068: clusterInfo.getNodeInfos();
069: modify().multiplicity(expect.from(0)).returnValue(nodeInfos);
070:
071: configurationId = new Artifact("groupId", "artifactId", "2.0",
072: "car");
073: configurationManager = (ConfigurationManager) mock(ConfigurationManager.class);
074: }
075:
076: public void testDoNotStartConfigurationUponStart() throws Exception {
077: startVerification();
078:
079: BasicClusterConfigurationController controller = newController(
080: false, false);
081:
082: controller.doStart();
083: }
084:
085: public void testStartConfigurationUponStartOK() throws Exception {
086: configurationManager.isLoaded(configurationId);
087: modify().returnValue(false);
088: configurationManager.loadConfiguration(configurationId);
089: configurationManager.startConfiguration(configurationId);
090:
091: startVerification();
092:
093: BasicClusterConfigurationController controller = newController(
094: true, false);
095:
096: controller.doStart();
097: }
098:
099: public void testStartConfigurationFailsUponStartAndIgnore()
100: throws Exception {
101: configurationManager.isLoaded(configurationId);
102: modify().returnValue(true);
103: configurationManager.startConfiguration(configurationId);
104: modify().throwException(
105: new NoSuchConfigException(configurationId));
106:
107: startVerification();
108:
109: BasicClusterConfigurationController controller = newController(
110: true, true);
111:
112: controller.doStart();
113: }
114:
115: public void testStartConfigurationFailsUponStart() throws Exception {
116: configurationManager.isLoaded(configurationId);
117: modify().returnValue(true);
118: configurationManager.startConfiguration(configurationId);
119: NoSuchConfigException expectedException = new NoSuchConfigException(
120: configurationId);
121: modify().throwException(expectedException);
122:
123: startVerification();
124:
125: BasicClusterConfigurationController controller = newController(
126: true, false);
127:
128: try {
129: controller.startConfiguration();
130: fail();
131: } catch (Exception e) {
132: assertSame(expectedException, e);
133: }
134: }
135:
136: public void testStopConfiguration() throws Exception {
137: configurationManager.stopConfiguration(configurationId);
138:
139: startVerification();
140:
141: BasicClusterConfigurationController controller = newController(
142: true, false);
143: controller.doStop();
144: }
145:
146: public void testFail() throws Exception {
147: configurationManager.stopConfiguration(configurationId);
148:
149: startVerification();
150:
151: BasicClusterConfigurationController controller = newController(
152: true, false);
153: controller.doFail();
154: }
155:
156: private BasicClusterConfigurationController newController(
157: boolean startConfigurationUponStart,
158: boolean ignoreStartConfigurationFailureUponStart) {
159: return new BasicClusterConfigurationController(clusterInfo,
160: nodeName, configurationId, startConfigurationUponStart,
161: ignoreStartConfigurationFailureUponStart) {
162: @Override
163: protected ConfigurationManager newConfigurationManager(
164: Kernel kernel) {
165: return configurationManager;
166: }
167: };
168: }
169:
170: }
|