/* 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.activiti.management.jmx.mbeans; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import javax.management.JMException; import javax.management.MBeanAttributeInfo; import javax.management.MBeanInfo; import javax.management.MBeanOperationInfo; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.modelmbean.ModelMBean; import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.impl.jobexecutor.JobExecutor; import org.activiti.management.jmx.DefaultManagementMBeanAssembler; import org.activiti.management.jmx.ManagementMBeanAssembler; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; /** * @author Saeid Mirzaei */ public class JobExecutorMBeanTest { protected JobExecutorMBean jobExecutorMbean; @Mock protected ProcessEngineConfiguration processEngineConfiguration; @Mock protected JobExecutor jobExecutor; @Before public void initMocks() throws MalformedObjectNameException { MockitoAnnotations.initMocks(this); when(processEngineConfiguration.getJobExecutor()).thenReturn(jobExecutor); jobExecutorMbean = new JobExecutorMBean(processEngineConfiguration); } @Test public void TestIsJobExecutorActivatedFalse() { when(jobExecutor.isActive()).thenReturn(false); boolean result = jobExecutorMbean.isJobExecutorActivated(); verify(jobExecutor).isActive(); assertFalse(result); } @Test public void TestIsJobExecutorActivatedTrue() { when(jobExecutor.isActive()).thenReturn(true); boolean result = jobExecutorMbean.isJobExecutorActivated(); verify(jobExecutor).isActive(); assertTrue(result); } @Test public void setJobExecutorActivateTrue() { jobExecutorMbean.setJobExecutorActivate(true); verify(jobExecutor).start(); jobExecutorMbean.setJobExecutorActivate(false); verify(jobExecutor).shutdown(); } ManagementMBeanAssembler assembler = new DefaultManagementMBeanAssembler(); @Test public void testAnnotations() throws MalformedObjectNameException, JMException { ModelMBean modelBean = assembler.assemble(jobExecutorMbean, new ObjectName("domain", "key", "value")); assertNotNull(modelBean); MBeanInfo beanInfo = modelBean.getMBeanInfo(); assertNotNull(beanInfo); assertNotNull(beanInfo.getOperations()); assertEquals(2, beanInfo.getOperations().length); int counter = 0; for (MBeanOperationInfo op : beanInfo.getOperations()) { if (op.getName().equals("setJobExecutorActivate")) { counter++; assertEquals("set job executor activate", op.getDescription()); assertEquals("void", op.getReturnType()); assertEquals(1, op.getSignature().length); assertEquals("java.lang.Boolean", op.getSignature()[0].getType()); } } assertEquals(1, counter); // check attributes assertNotNull(beanInfo.getAttributes()); assertEquals(1, beanInfo.getAttributes().length); counter = 0; for (MBeanAttributeInfo attr : beanInfo.getAttributes()) { if (attr.getName().equals("JobExecutorActivated")) { counter++; assertEquals("check if the job executor is activated", attr.getDescription()); assertEquals("boolean", attr.getType()); } } assertEquals(1, counter); } }