Package org.codehaus.xharness.tasks

Source Code of org.codehaus.xharness.tasks.ServiceDefTest

package org.codehaus.xharness.tasks;

import org.apache.tools.ant.AntTypeDefinition;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.ComponentHelper;
import org.apache.tools.ant.Location;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;

import org.codehaus.xharness.exceptions.AssertionWarningException;

import org.easymock.MockControl;
import org.easymock.classextension.MockClassControl;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class ServiceDefTest extends TestCase {
    public ServiceDefTest(String name) {
        super(name);
    }

    public static void main(String[] args) throws Exception {
        if (System.getProperty("gui") != null) {
            String[] newArgs = new String[args.length + 2];
            System.arraycopy(args, 0, newArgs, 0, args.length);
            newArgs[args.length] = ServiceDefTest.class.getName();
            newArgs[args.length + 1] = "-noloading";
            junit.swingui.TestRunner.main(newArgs);
        } else {
            String[] newArgs = new String[args.length + 1];
            System.arraycopy(args, 0, newArgs, 0, args.length);
            newArgs[args.length] = ServiceDefTest.class.getName();
            junit.textui.TestRunner.main(newArgs);
        }
    }

    public static Test suite() {
        return new TestSuite(ServiceDefTest.class);
    }
   
    public void testName() throws Exception {
        ServiceDef service = new ServiceDef();
        service.setName("foo");
        assertEquals("Wrong service name", "foo", service.getName());
    }

    public void testCreateStart() throws Exception {
        ServiceDef service = new ServiceDef();
        ServiceGroupTask start = service.createStart();
        assertEquals("Wrong start name", "start", start.getName());
        try {
            service.createStart();
            fail("Expected BuildException");
        } catch (BuildException be) {
            assertEquals("Wrong message", "Only one start allowed", be.getMessage());
        }
    }

    public void testCreateVerify() throws Exception {
        ServiceDef service = new ServiceDef();
        assertEquals("Wrong verify task", null, service.getVerifyTask());
        ServiceVerifyTask verify = service.createVerify();
        assertEquals("Wrong start name", "verify", verify.getName());
        try {
            service.createVerify();
            fail("Expected BuildException");
        } catch (BuildException be) {
            assertEquals("Wrong message", "Only one verify allowed", be.getMessage());
        }
        assertEquals("Wrong verify task", verify, service.getVerifyTask());
    }
   
    public void testCreateStop() throws Exception {
        ServiceDef service = new ServiceDef();
        ServiceGroupTask stop = service.createStop();
        assertEquals("Wrong start name", "stop", stop.getName());
        try {
            service.createStop();
            fail("Expected BuildException");
        } catch (BuildException be) {
            assertEquals("Wrong message", "Only one stop allowed", be.getMessage());
        }
    }
   
    public void testStart() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        ServiceGroupTask start = service.createStart();
        start.setProject(project);
        MockControl taskCtrl = MockClassControl.createControl(Task.class);
        Task task = (Task)taskCtrl.getMock();
        start.addTask(task);
        task.getProject();
        taskCtrl.setReturnValue(project, 2);
        task.maybeConfigure();
        task.execute();

        projectCtrl.replay();
        taskCtrl.replay();
        service.start();
        service.start();
        assertTrue("Service stopped", !service.wasStopped());
        projectCtrl.verify();
        taskCtrl.verify();
    }
   
    public void testStartWarning() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        ServiceGroupTask start = service.createStart();
        start.setProject(project);
        MockControl taskCtrl = MockClassControl.createControl(Task.class);
        Task task = (Task)taskCtrl.getMock();
        start.addTask(task);
        task.getProject();
        taskCtrl.setReturnValue(project, 2);
        task.maybeConfigure();
        task.execute();
        taskCtrl.setThrowable(new AssertionWarningException());
        task.getLocation();
        taskCtrl.setReturnValue(new Location(""));
        task.getTaskName();
        taskCtrl.setReturnValue("foo");

        projectCtrl.replay();
        taskCtrl.replay();
        try {
            service.start();
            fail("Expected AssertionWarningException");
        } catch (AssertionWarningException awe) {
            assertEquals("Wrong message",
                         "Assertion failed during startup of Service.",
                         awe.getMessage());
        }
        service.start();
        assertTrue("Service stopped", !service.wasStopped());
        projectCtrl.verify();
        taskCtrl.verify();
    }
   
    public void testStartError() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        ServiceGroupTask start = service.createStart();
        start.setProject(project);
        MockControl taskCtrl = MockClassControl.createControl(Task.class);
        Task task = (Task)taskCtrl.getMock();
        start.addTask(task);
        task.getProject();
        taskCtrl.setReturnValue(project, 2);
        task.maybeConfigure();
        task.execute();
        taskCtrl.setThrowable(new BuildException());
        task.getLocation();
        taskCtrl.setReturnValue(new Location(""));
        task.getTaskName();
        taskCtrl.setReturnValue("foo");

        projectCtrl.replay();
        taskCtrl.replay();
        try {
            service.start();
            fail("Expected BuildException");
        } catch (BuildException be) {
            assertEquals("Wrong message", "Startup of Service failed.", be.getMessage());
        }
        service.start();
        assertTrue("Service stopped", !service.wasStopped());
        projectCtrl.verify();
        taskCtrl.verify();
    }
   
    public void testStop() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        ServiceGroupTask start = service.createStart();
        start.setProject(project);
        ServiceGroupTask stop = service.createStop();
        stop.setProject(project);
        MockControl taskCtrl = MockClassControl.createControl(Task.class);
        Task task = (Task)taskCtrl.getMock();
        stop.addTask(task);
        task.getProject();
        taskCtrl.setReturnValue(project, 2);
        task.maybeConfigure();
        task.execute();

        projectCtrl.replay();
        taskCtrl.replay();
        service.start();
        assertTrue("Service stopped", !service.wasStopped());
        service.stop();
        assertTrue("Service not stopped", service.wasStopped());
        projectCtrl.verify();
        taskCtrl.verify();
    }
   
    public void testStopUnstarted() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        ServiceGroupTask stop = service.createStop();
        stop.setProject(project);
        MockControl taskCtrl = MockClassControl.createControl(Task.class);
        Task task = (Task)taskCtrl.getMock();
        stop.addTask(task);

        projectCtrl.replay();
        taskCtrl.replay();
        assertTrue("Service stopped", !service.wasStopped());
        service.stop();
        assertTrue("Service not stopped", service.wasStopped());
        projectCtrl.verify();
        taskCtrl.verify();
    }
   
    public void testStopNoStoptask() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        ServiceGroupTask start = service.createStart();
        start.setProject(project);

        projectCtrl.replay();
        assertTrue("Service stopped", !service.wasStopped());
        service.stop();
        assertTrue("Service not stopped", service.wasStopped());
        projectCtrl.verify();
    }
   
    public void testStopWarning() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        ServiceGroupTask start = service.createStart();
        start.setProject(project);
        ServiceGroupTask stop = service.createStop();
        stop.setProject(project);
        MockControl taskCtrl = MockClassControl.createControl(Task.class);
        Task task = (Task)taskCtrl.getMock();
        stop.addTask(task);
        task.getProject();
        taskCtrl.setReturnValue(project, 2);
        task.maybeConfigure();
        task.execute();
        taskCtrl.setThrowable(new AssertionWarningException());
        task.getLocation();
        taskCtrl.setReturnValue(new Location(""));
        task.getTaskName();
        taskCtrl.setReturnValue("foo");

        projectCtrl.replay();
        taskCtrl.replay();
        service.start();
        assertTrue("Service stopped", !service.wasStopped());
        try {
            service.stop();
            fail("Expected AssertionWarningException");
        } catch (AssertionWarningException awe) {
            assertEquals("Wrong message",
                         "Assertion failed during shutdown of Service.",
                         awe.getMessage());
        }
        assertTrue("Service not stopped", service.wasStopped());
        projectCtrl.verify();
        taskCtrl.verify();
    }
   
    public void testStopError() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        ServiceGroupTask start = service.createStart();
        start.setProject(project);
        ServiceGroupTask stop = service.createStop();
        stop.setProject(project);
        MockControl taskCtrl = MockClassControl.createControl(Task.class);
        Task task = (Task)taskCtrl.getMock();
        stop.addTask(task);
        task.getProject();
        taskCtrl.setReturnValue(project, 2);
        task.maybeConfigure();
        task.execute();
        taskCtrl.setThrowable(new BuildException());
        task.getLocation();
        taskCtrl.setReturnValue(new Location(""));
        task.getTaskName();
        taskCtrl.setReturnValue("foo");

        projectCtrl.replay();
        taskCtrl.replay();
        service.start();
        assertTrue("Service stopped", !service.wasStopped());
        try {
            service.stop();
            fail("Expected BuildException");
        } catch (BuildException be) {
            assertEquals("Wrong message", "Shutdown of Service failed.", be.getMessage());
        }
        assertTrue("Service not stopped", service.wasStopped());
        projectCtrl.verify();
        taskCtrl.verify();
    }
   
    public void testStopWarningInStart() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        ServiceGroupTask start = service.createStart();
        start.setProject(project);
        ServiceGroupTask stop = service.createStop();
        stop.setProject(project);
        MockControl taskCtrl = MockClassControl.createControl(Task.class);
        Task task = (Task)taskCtrl.getMock();
        start.addTask(task);
        task.getProject();
        taskCtrl.setReturnValue(project, 2);
        task.maybeConfigure();
        task.execute();
        taskCtrl.setThrowable(new AssertionWarningException());
        task.getLocation();
        taskCtrl.setReturnValue(new Location(""));
        task.getTaskName();
        taskCtrl.setReturnValue("foo");

        projectCtrl.replay();
        taskCtrl.replay();
        try {
            service.start();
            fail("Expected AssertionWarningException");
        } catch (AssertionWarningException awe) {
            assertEquals("Wrong message",
                         "Assertion failed during startup of Service.",
                         awe.getMessage());
        }
        assertTrue("Service stopped", !service.wasStopped());
        try {
            service.stop();
            fail("Expected AssertionWarningException");
        } catch (AssertionWarningException awe) {
            assertEquals("Wrong message",
                         "Assertion failed during startup of Service.",
                         awe.getMessage());
        }
        assertTrue("Service not stopped", service.wasStopped());
        projectCtrl.verify();
        taskCtrl.verify();
    }
   
    public void testStopErrorInStart() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        ServiceGroupTask start = service.createStart();
        start.setProject(project);
        ServiceGroupTask stop = service.createStop();
        stop.setProject(project);
        MockControl taskCtrl = MockClassControl.createControl(Task.class);
        Task task = (Task)taskCtrl.getMock();
        start.addTask(task);
        task.getProject();
        taskCtrl.setReturnValue(project, 2);
        task.maybeConfigure();
        task.execute();
        taskCtrl.setThrowable(new BuildException());
        task.getLocation();
        taskCtrl.setReturnValue(new Location(""));
        task.getTaskName();
        taskCtrl.setReturnValue("foo");

        projectCtrl.replay();
        taskCtrl.replay();
        try {
            service.start();
            fail("Expected BuildException");
        } catch (BuildException be) {
            assertEquals("Wrong message", "Startup of Service failed.", be.getMessage());
        }
        assertTrue("Service stopped", !service.wasStopped());
        try {
            service.stop();
            fail("Expected BuildException");
        } catch (BuildException be) {
            assertEquals("Wrong message", "Startup of Service failed.", be.getMessage());
        }
        assertTrue("Service not stopped", service.wasStopped());
        projectCtrl.verify();
        taskCtrl.verify();
    }
   
    public void testExecute() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        projectCtrl.setDefaultMatcher(MockControl.ALWAYS_MATCHER);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        service.setName("foo");
        service.createStart();
        service.createVerify();
        projectCtrl.replay();
        service.execute();
        projectCtrl.verify();
    }
   
    public void testExecuteNoName() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        try {
            service.execute();
            fail("Expected BuildException");
        } catch (BuildException be) {
            assertEquals("Wrong message", "Name not specified", be.getMessage());
        }
    }
   
    public void testExecuteNoStart() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        service.setName("foo");
        try {
            service.execute();
            fail("Expected BuildException");
        } catch (BuildException be) {
            assertEquals("Wrong message", "Missing start element", be.getMessage());
        }
    }
   
    public void testExecuteNoVerify() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        projectCtrl.setDefaultMatcher(MockControl.ALWAYS_MATCHER);
        Project project = (Project)projectCtrl.getMock();

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        service.setName("foo");
        service.createStart();
        projectCtrl.replay();
        service.execute();
        projectCtrl.verify();
    }
   
   
    public void testSimilar() throws Exception {
        ServiceDef service = new ServiceDef();
        assertTrue("Services should be similar", service.similar(service));
        assertTrue("Services shouldn't be similar", !service.similar(new ServiceDef()));
        assertTrue("Services shouldn't be similar", !service.similar(new Object()));
    }

    public void testMyAntTypeDefinition() throws Exception {
        MockControl projectCtrl = MockClassControl.createNiceControl(Project.class);
        projectCtrl.setDefaultMatcher(MockControl.ALWAYS_MATCHER);
        Project project = (Project)projectCtrl.getMock();
        MyComponentHelper ch = new MyComponentHelper();
        ch.setProject(project);
        project.getReference(null);
        projectCtrl.setReturnValue(ch);

        ServiceDef service = new ServiceDef();
        service.setProject(project);
        service.setName("foo");
        service.createStart();
       
        projectCtrl.replay();
        service.execute();
       
        assertNotNull("No AntTypeDefinition", ch.getDefinition());
        assertEquals("Invalid AntTypeDefinition class",
                     "org.codehaus.xharness.tasks.ServiceDef$MyAntTypeDefinition",
                     ch.getDefinition().getClass().getName());
        Object instance = ch.getDefinition().create(project);
        assertTrue("Wrong instance", instance instanceof ServiceInstance);
        assertEquals("Wrong ServiceDef", service, ((ServiceInstance)instance).getServiceDef());
       
        AntTypeDefinition otherDef = new AntTypeDefinition();
        assertTrue("TypeDefinition should be same",
                   ch.getDefinition().sameDefinition(ch.getDefinition(), project));
        assertTrue("TypeDefinition shouldn't be same",
                   !ch.getDefinition().sameDefinition(otherDef, project));
        assertTrue("TypeDefinition should be similar",
                   ch.getDefinition().similarDefinition(ch.getDefinition(), project));
        assertTrue("TypeDefinition shouldn't be similar",
                   !ch.getDefinition().similarDefinition(otherDef, project));
        projectCtrl.verify();
    }
   
    private class MyComponentHelper extends ComponentHelper {
        private AntTypeDefinition atd;
       
        public MyComponentHelper() {
            super();
        }
       
        public void addDataTypeDefinition(AntTypeDefinition def) {
            super.addDataTypeDefinition(def);
            atd = def;
        }
       
        public AntTypeDefinition getDefinition() {
            return atd;
        }
    }
}
TOP

Related Classes of org.codehaus.xharness.tasks.ServiceDefTest

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.