Package org.impalaframework.module.transition

Source Code of org.impalaframework.module.transition.LoadTransitionProcessorTest

/*
* Copyright 2007-2010 the original author or authors.
*
* 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.
*/

package org.impalaframework.module.transition;

import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;

import java.util.Collection;

import junit.framework.TestCase;

import org.impalaframework.module.ModuleDefinition;
import org.impalaframework.module.ModuleState;
import org.impalaframework.module.definition.ModuleDefinitionUtils;
import org.impalaframework.module.definition.ModuleTypes;
import org.impalaframework.module.definition.SimpleModuleDefinition;
import org.impalaframework.module.definition.SimpleRootModuleDefinition;
import org.impalaframework.module.spi.Application;
import org.impalaframework.module.spi.ModuleRuntimeManager;
import org.impalaframework.module.spi.TestApplicationManager;

public class LoadTransitionProcessorTest extends TestCase {

    private LoadTransitionProcessor processor;
    private ModuleRuntimeManager moduleRuntimeManager;
    private Application application;

    public void setUp() {
        processor = new LoadTransitionProcessor();
        moduleRuntimeManager = createMock(ModuleRuntimeManager.class);
        processor.setModuleRuntimeManager(moduleRuntimeManager);
        application = TestApplicationManager.newApplicationManager().getCurrentApplication();
    }
   
    public void testProcess() {
       
        SimpleRootModuleDefinition a = new SimpleRootModuleDefinition("a", (String)null);
        ModuleDefinition a1 = newDefinition(a, "a1", null);
        ModuleDefinition a2 = newDefinition(a1, "a2", null);
        ModuleDefinition a3 = newDefinition(a2, "a3", null);
        ModuleDefinition a4 = newDefinition(a3, "a4", null);
       
        Collection<ModuleDefinition> modules = ModuleDefinitionUtils.getDependentModules(a, "a");
       
        expect(moduleRuntimeManager.initModule(application, a1)).andReturn(true);
        expect(moduleRuntimeManager.initModule(application, a2)).andReturn(false);
       
        replay(moduleRuntimeManager);
       
        for (ModuleDefinition moduleDefinition : modules) {
            processor.process(application, a, moduleDefinition);
        }
       
        verify(moduleRuntimeManager);
       
        assertEquals(ModuleState.LOADED, a1.getState());
        assertEquals(ModuleState.ERROR, a2.getState());
        assertEquals(ModuleState.DEPENDENCY_FAILED, a3.getState());
        assertEquals(ModuleState.DEPENDENCY_FAILED, a4.getState());
       
    }
   
    public void testThrowException() throws Exception {
       
        SimpleRootModuleDefinition a = new SimpleRootModuleDefinition("a", (String)null);
       
        expect(moduleRuntimeManager.initModule(application, a)).andThrow(new RuntimeException());
       
        replay(moduleRuntimeManager);
       
        try {
            processor.process(application, a, a);
            fail();
        }
        catch (RuntimeException e) {
            e.printStackTrace();
        }
       
        verify(moduleRuntimeManager);
       
        assertEquals(ModuleState.ERROR, a.getState());
    }
   
    private ModuleDefinition newDefinition(ModuleDefinition parent, final String name, String dependencies) {
        ModuleDefinition definition = new SimpleModuleDefinition(parent, name, ModuleTypes.APPLICATION, null, dependencies == null ? new String[0] : dependencies.split("'"), null, null, null, null, true);
        definition.setState(ModuleState.LOADING);
        return definition;
    }

}
TOP

Related Classes of org.impalaframework.module.transition.LoadTransitionProcessorTest

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.