Package com.sun.sgs.test.app

Source Code of com.sun.sgs.test.app.TestAppContext

/*
* Copyright 2007-2010 Sun Microsystems, Inc.
*
* This file is part of Project Darkstar Server.
*
* Project Darkstar Server is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation and
* distributed hereunder to you.
*
* Project Darkstar Server is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
* --
*/

package com.sun.sgs.test.app;

import com.sun.sgs.app.AppContext;
import com.sun.sgs.app.DataManager;
import com.sun.sgs.app.ChannelManager;
import com.sun.sgs.app.TaskManager;
import com.sun.sgs.app.ManagerNotFoundException;
import com.sun.sgs.internal.InternalContext;
import com.sun.sgs.internal.ManagerLocator;
import com.sun.sgs.tools.test.FilteredNameRunner;

import org.junit.Test;
import org.junit.Assert;
import org.junit.runner.RunWith;

import org.easymock.EasyMock;

/**
* Test the {@link AppContext} class
*/
@RunWith(FilteredNameRunner.class)
public class TestAppContext {
   
    //dummy AppContext
    private ManagerLocator managerLocator;
    private DataManager dataManager;
    private ChannelManager channelManager;
    private TaskManager taskManager;
    private Object arbitraryManager;
   
    /**
     * setup the dummy AppContext
     */
    private void initStableAppContext() {
        managerLocator = EasyMock.createMock(ManagerLocator.class);
        dataManager = EasyMock.createNiceMock(DataManager.class);
        channelManager = EasyMock.createNiceMock(ChannelManager.class);
        taskManager = EasyMock.createNiceMock(TaskManager.class);
        arbitraryManager = new Object();
       
        EasyMock.expect(managerLocator.getDataManager()).
                andReturn(dataManager);
        EasyMock.expect(managerLocator.getChannelManager()).
                andReturn(channelManager);
        EasyMock.expect(managerLocator.getTaskManager()).
                andReturn(taskManager);
        EasyMock.expect(managerLocator.getManager(Object.class)).
                andReturn(arbitraryManager);
        EasyMock.replay(managerLocator);
    }
   
    /**
     * setup the dummy AppContext with a ManagerLocator that is unstable
     * with its return values
     */
    private void initUnstableAppContext() {
        initStableAppContext();
       
        EasyMock.reset(managerLocator);
       
        EasyMock.expect(managerLocator.getDataManager()).
                andReturn(dataManager).andReturn(null);
        EasyMock.expect(managerLocator.getChannelManager()).
                andReturn(channelManager).andReturn(null);
        EasyMock.expect(managerLocator.getTaskManager()).
                andReturn(taskManager).andReturn(null);
        EasyMock.expect(managerLocator.getManager(Object.class)).
                andReturn(arbitraryManager).andReturn(null);
        EasyMock.replay(managerLocator);
    }
   
    private void initEmptyAppContext() {
        managerLocator = EasyMock.createMock(ManagerLocator.class);
       
        ManagerNotFoundException m = new ManagerNotFoundException("not found");
       
        EasyMock.expect(managerLocator.getDataManager()).
                andThrow(m);
        EasyMock.expect(managerLocator.getChannelManager()).
                andThrow(m);
        EasyMock.expect(managerLocator.getTaskManager()).
                andThrow(m);
        EasyMock.expect(managerLocator.getManager(Object.class)).
                andThrow(m);
        EasyMock.replay(managerLocator);
    }
   
    @Test(expected=IllegalStateException.class)
    public void testGetManagerLocatorBeforeInit() {
        InternalContext.getManagerLocator();
    }

    @Test(expected=ManagerNotFoundException.class)
    public void testGetDataManagerBeforeInit() {
        AppContext.getDataManager();
    }
   
    @Test(expected=ManagerNotFoundException.class)
    public void testGetTaskManagerBeforeInit() {
        AppContext.getTaskManager();
    }
   
    @Test(expected=ManagerNotFoundException.class)
    public void testGetChannelManagerBeforeInit() {
        AppContext.getChannelManager();
    }
   
    @Test(expected=ManagerNotFoundException.class)
    public void testGetArbitraryManagerBeforeInit() {
        AppContext.getManager(Object.class);
    }
   
    @Test
    public void testGetDataManagerAfterInit() {
        initStableAppContext();
        InternalContext.setManagerLocator(managerLocator);
        DataManager d = AppContext.getDataManager();
       
        Assert.assertSame(d, dataManager);
    }
   
    @Test
    public void testGetTaskManagerAfterInit() {
        initStableAppContext();
        InternalContext.setManagerLocator(managerLocator);
        TaskManager t = AppContext.getTaskManager();
       
        Assert.assertSame(t, taskManager);
    }
   
    @Test
    public void testGetChannelManagerAfterInit() {
        initStableAppContext();
        InternalContext.setManagerLocator(managerLocator);
        ChannelManager c = AppContext.getChannelManager();
       
        Assert.assertSame(c, channelManager);
    }
   
    @Test
    public void testGetArbitraryManagerAfterInit() {
        initStableAppContext();
        InternalContext.setManagerLocator(managerLocator);
        Object o = AppContext.getManager(Object.class);
       
        Assert.assertSame(o, arbitraryManager);
    }
   
    @Test
    public void testGetDataManagerWithUnstableManagerLocator() {
        initUnstableAppContext();
        InternalContext.setManagerLocator(managerLocator);
       
        DataManager d1 = AppContext.getDataManager();
        DataManager d2 = AppContext.getDataManager();
       
        Assert.assertSame(d1, dataManager);
        Assert.assertNull(d2);
    }
   
    @Test
    public void testGetChannelManagerWithUnstableManagerLocator() {
        initUnstableAppContext();
        InternalContext.setManagerLocator(managerLocator);
       
        ChannelManager c1 = AppContext.getChannelManager();
        ChannelManager c2 = AppContext.getChannelManager();
       
        Assert.assertSame(c1, channelManager);
        Assert.assertNull(c2);
    }
   
    @Test
    public void testGetTaskManagerWithUnstableManagerLocator() {
        initUnstableAppContext();
        InternalContext.setManagerLocator(managerLocator);
       
        TaskManager t1 = AppContext.getTaskManager();
        TaskManager t2 = AppContext.getTaskManager();
       
        Assert.assertSame(t1, taskManager);
        Assert.assertNull(t2);
    }
   
    @Test
    public void testGetArbitraryManagerWithUnstableManagerLocator() {
        initUnstableAppContext();
        InternalContext.setManagerLocator(managerLocator);
       
        Object o1 = AppContext.getManager(Object.class);
        Object o2 = AppContext.getManager(Object.class);
       
        Assert.assertSame(o1, arbitraryManager);
        Assert.assertNull(o2);
    }
   
    @Test(expected=ManagerNotFoundException.class)
    public void testGetDataManagerWithEmptyManagerLocator() {
        initEmptyAppContext();
        InternalContext.setManagerLocator(managerLocator);
       
        AppContext.getDataManager();
    }
   
    @Test(expected=ManagerNotFoundException.class)
    public void testGetTaskManagerWithEmptyManagerLocator() {
        initEmptyAppContext();
        InternalContext.setManagerLocator(managerLocator);
       
        AppContext.getTaskManager();
    }
   
    @Test(expected=ManagerNotFoundException.class)
    public void testGetChannelManagerWithEmptyManagerLocator() {
        initEmptyAppContext();
        InternalContext.setManagerLocator(managerLocator);
       
        AppContext.getChannelManager();
    }
   
    @Test(expected=IllegalStateException.class)
    public void testSetNullManagerLocator() {
        InternalContext.setManagerLocator(null);
       
        InternalContext.getManagerLocator();
    }
   
}
TOP

Related Classes of com.sun.sgs.test.app.TestAppContext

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.