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.io.File;
023: import java.io.IOException;
024:
025: import org.apache.geronimo.kernel.Jsr77Naming;
026: import org.apache.geronimo.kernel.config.ConfigurationData;
027: import org.apache.geronimo.kernel.config.ConfigurationStore;
028: import org.apache.geronimo.kernel.repository.Artifact;
029: import org.apache.geronimo.kernel.repository.Environment;
030:
031: import com.agical.rmock.core.describe.ExpressionDescriber;
032: import com.agical.rmock.core.match.operator.AbstractExpression;
033: import com.agical.rmock.extension.junit.RMockTestCase;
034:
035: /**
036: *
037: * @version $Rev:$ $Date:$
038: */
039: public class BasicClusterConfigurationStoreTest extends RMockTestCase {
040:
041: private ConfigurationStore actualConfigurationStore;
042: private DirectoryPackager directoryPackager;
043: private BasicClusterConfigurationStore store;
044: private Artifact configId;
045:
046: @Override
047: protected void setUp() throws Exception {
048: actualConfigurationStore = (ConfigurationStore) mock(ConfigurationStore.class);
049: directoryPackager = (DirectoryPackager) mock(DirectoryPackager.class);
050: store = new BasicClusterConfigurationStore(
051: actualConfigurationStore) {
052: @Override
053: protected DirectoryPackager newDirectoryPackager() {
054: return directoryPackager;
055: }
056:
057: @Override
058: protected void deleteDir(File packedConfigurationDir) {
059: }
060: };
061: configId = new Artifact("groupId", "artifactId", "2.0", "car");
062: }
063:
064: public void testInstall() throws Exception {
065: ConfigurationData configurationData = new ConfigurationData(
066: new Environment(configId), new Jsr77Naming());
067: File packedConfigurationDir = new File("packedConfigurationDir");
068: final File configurationDir = new File("configurationDir");
069:
070: actualConfigurationStore.createNewConfigurationDir(configId);
071: modify().returnValue(configurationDir);
072:
073: directoryPackager.unpack(configurationDir,
074: packedConfigurationDir);
075: modify().returnValue(configurationDir);
076:
077: actualConfigurationStore.install(configurationData);
078: modify().args(new AbstractExpression() {
079: public void describeWith(ExpressionDescriber arg)
080: throws IOException {
081: }
082:
083: public boolean passes(Object arg) {
084: ConfigurationData configurationData = (ConfigurationData) arg;
085: assertSame(configurationDir, configurationData
086: .getConfigurationDir());
087: return true;
088: }
089: });
090:
091: startVerification();
092:
093: store.install(configurationData, packedConfigurationDir);
094: }
095:
096: public void testUninstall() throws Exception {
097: actualConfigurationStore.uninstall(configId);
098:
099: startVerification();
100:
101: store.uninstall(configId);
102: }
103:
104: }
|