/* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ /* * $Id: AdminInfraTest.java,v 1.1.1.1 2005/05/28 00:39:19 dpatil Exp $ */ package com.sun.enterprise.admin; import java.lang.reflect.*; import java.util.*; import java.io.*; //junit imports import junit.framework.*; import junit.textui.TestRunner; //JMX import javax.management.DynamicMBean; import javax.management.Attribute; import javax.management.AttributeList; import javax.management.ObjectName; import javax.management.AttributeNotFoundException; //config imports import com.sun.enterprise.config.ConfigFactory; import com.sun.enterprise.config.ConfigContext; //config mbean imports import com.sun.enterprise.admin.meta.MBeanRegistry; import com.sun.enterprise.admin.meta.MBeanRegistryFactory; //import com.sun.enterprise.admin.meta.*; public class AdminInfraTest extends TestCase { static String TEST_DIR = "publish/internal/testclasses/asadmintest"; static int COMPARESAMPLES_MODE = 0; static int CREATESAMPLES_MODE = 1; static int PRINT_MODE = 2; private static int _mode = COMPARESAMPLES_MODE; private MBeanRegistry _registry; private ConfigContext _configContext; private PrintWriter _printStream; //for CREATESAMPLES_MODE only private LineNumberReader _compareStream; //for COMPARE_MODE only private AdminTester _tester; // = new AdminTester(_mode, _registry, _configContext); public AdminInfraTest(String name) throws Exception { super(name); } protected void setUp() { System.setProperty("com.sun.aas.installRoot", TEST_DIR); System.setProperty("com.sun.aas.instanceRoot","/qq"); System.setProperty("com.sun.aas.javaRoot","/qq"); System.setProperty("com.sun.aas.imqLib","/qq"); try { /* URL url = AdminInfraTest.class.getResource("/testfiles/descriptors.xml"); //standard for pe InputStream stream = url.openStream(); _registry = new MBeanRegistry(); _registry.loadMBeanRegistry(stream);*/ _registry = MBeanRegistryFactory.getMBeanRegistry(TEST_DIR+"/descriptors.xml", false); MBeanRegistryFactory.setAdminMBeanRegistry(_registry); _configContext = ConfigFactory.createConfigContext(TEST_DIR+"/test.xml"); _tester = new AdminTester(this, _mode, _registry, _configContext, TEST_DIR); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } } protected void tearDown() { _registry = null; _configContext = null; _printStream = null; _compareStream = null; } public static junit.framework.Test suite() { TestSuite suite = new TestSuite(AdminInfraTest.class); return suite; } public static void main(String args[]) throws Exception { if(args==null || args.length<2) args = new String[]{"-testpath", "publish/internal/testclasses/asadmintest", "create"}; int length = args.length; if(length<2 || !args[0].equals("-testpath")) { System.out.println("usage: admininfratest -testpath <path to test directory> [print|create]"); System.exit(1); } TEST_DIR = args[1]; if(length>2) { System.out.println("MODE="+args[2]); if(args[2].trim().equals("print")) _mode=2; else if(args[2].trim().equals("create")) _mode=1; } final TestRunner runner= new TestRunner(); final TestResult result = runner.doRun(AdminInfraTest.suite(), false); System.exit(result.errorCount() + result.failureCount()); } //****************************************************************** //******************MBeanServer emulation*************************** //****************************************************************** private Object getAttribute(String onName, String attr) throws Exception { mbean = _registry.instantiateConfigMBean(new ObjectName(onName), null, _configContext); return mbean.getAttribute(attr); } //****************************************************************** //******************T E S T S*************************************** //****************************************************************** private void runTestCase(String testCaseName, String sampleName) throws Exception { String errStr = _tester.runTestCase(testCaseName, sampleName); assertNull(errStr, errStr); } private void runTestCase(String[] testCaseNames, String sampleName) throws Exception { String errStr = _tester.runTestCase(testCaseNames, sampleName); assertNull(errStr, errStr); } private void runTestCase(String testCaseName) throws Exception { runTestCase(testCaseName, testCaseName); } public void testMBeanRegistry() throws Exception { runTestCase("testMBeanRegistry"); } String[] location; BaseAdminMBean mbean; AttributeList attrs; Object retObject; public void testMBeansInstantiation() throws Exception { //*********************************************************************************************** location = new String[]{"testdomain", "server-config"}; mbean = _registry.instantiateMBean("ejb-container", location, null, _configContext); assertNotNull("ejb-container INSTANTIATION (type+location): mbean==null", mbean); assertEquals("cache_resize_quantity not equal 32", mbean.getAttribute("cache_resize_quantity"), "32"); //*********************************************************************************************** mbean = _registry.instantiateConfigMBean(new ObjectName("testdomain:type=ejb-container,config=server-config,category=config"), null, _configContext); assertNotNull("ejb-container INSTANTIATION (ObjectName): mbean==null", mbean); //*********************************************************************************************** mbean = _registry.instantiateConfigMBean(new ObjectName("testdomain:type=config,name=server-config,category=config"), null, _configContext); assertNotNull("config INSTANTIATION By ObjectName: mbean==null", mbean); //_tester.testMBeansInstantiation(); //runTestCase("testMBeansInstantiation"); } public void testMBeansGetAttribue() throws Exception { //*********************************************************************************************** location = new String[]{"testdomain", "server-config"}; mbean = _registry.instantiateMBean("ejb-container", location, null, _configContext); assertNotNull("ejb-container INSTANTIATION (type+location): mbean==null", mbean); assertEquals("cache_resize_quantity not equal 32", mbean.getAttribute("cache_resize_quantity"), "32"); assertEquals("cache_idle_timeout_in_seconds not equal 600", mbean.getAttribute("cache_idle_timeout_in_seconds"), "600"); //enumeration assertEquals("commit-option != B", mbean.getAttribute("commit_option"), "B"); try { mbean.getAttribute("wrong_attribute"); fail("wrong_attribute did not cause exception"); } catch (AttributeNotFoundException anfe) { } try { //scase sensibility test mbean.getAttribute("commit_Option"); fail("getAttribute():sensibility test failure"); } catch (AttributeNotFoundException anfe) { } } /* public void testMBeansCreateChild() throws Exception { }*/ public void testGetSetCompareCases() throws Exception { runTestCase(new String[]{"testMBeansGettersSetters"}, "GettersSetters"); } public void testMBeansSetAttribue() throws Exception { //*********************************************************************************************** location = new String[]{"testdomain", "server-config"}; mbean = _registry.instantiateMBean("ejb-container", location, null, _configContext); assertNotNull("ejb-container INSTANTIATION (type+location): mbean==null", mbean); mbean.setAttribute(new Attribute("cache_resize_quantity", "35")); assertEquals("cache_resize_quantity not equal 35", mbean.getAttribute("cache_resize_quantity"), "35"); mbean.setAttribute(new Attribute("cache_resize_quantity", "36")); assertEquals("cache_resize_quantity not equal 36", mbean.getAttribute("cache_resize_quantity"), "36"); mbean.setAttribute(new Attribute("cache_idle_timeout_in_seconds", "601")); assertEquals("cache_idle_timeout_in_seconds not equal 601", mbean.getAttribute("cache_idle_timeout_in_seconds"), "601"); mbean.setAttribute(new Attribute("commit_option", "C")); assertEquals("commit_option != C", mbean.getAttribute("commit_option"), "C"); } public void testChildCompareCases() throws Exception { runTestCase(new String[]{"testChildOperations"}, "childOperations"); } public void testArrayAttrs() throws Exception { runTestCase(new String[]{"testMBeanArrayAttrs"}, "testArrayAttrs"); } public void testProperties() throws Exception { runTestCase(new String[]{"testPropertiesOperations"}, "testPropertiesOperations"); } public void testDefaultValues() throws Exception { runTestCase(new String[]{"testDefaultValues"}, "testDefaultValues"); } public void testAttributeEmptyValuesDuringCreation() throws Exception { //*********************************************************************************************** location = new String[]{"testdomain", "server-config"}; mbean = _registry.instantiateMBean("http-service", location, null, _configContext); assertNotNull("http-service INSTANTIATION (type+location): mbean==null", mbean); attrs = new AttributeList(); attrs.add(new Attribute("address","0.0.0.0")); attrs.add(new Attribute("default-virtual-server","server")); attrs.add(new Attribute("server-name","")); attrs.add(new Attribute("id","test-listener")); attrs.add(new Attribute("port","12345")); attrs.add(new Attribute("enabled","false")); attrs.add(new Attribute("security-enabled","false")); attrs.add(new Attribute("redirect-port","")); retObject = mbean.invoke("createHttpListener", new Object[]{attrs}, new String[]{attrs.getClass().getName()}); assertNotNull("createHttpListener: retObject==null", retObject); //*********************************************************************************************** location = new String[]{"testdomain", "server-config", "test-listener"}; mbean = _registry.instantiateMBean("http-listener", location, null, _configContext); assertNotNull("http-listener INSTANTIATION (type+location): mbean==null", mbean); assertEquals("server-name attribute value is not \"empty\" as expected", mbean.getAttribute("server-name"),""); assertNull("server-name attribute value is not null as expected", mbean.getAttribute("redirect-port")); _configContext.flush(); } }