package org.jolokia.client.request; /* * Copyright 2009-2013 Roland Huss * * 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. */ import org.jolokia.client.J4pClient; import org.jolokia.client.BasicAuthenticator; import org.jolokia.http.AgentServlet; import org.jolokia.it.ItSetup; import org.jolokia.test.util.EnvTestUtil; import org.mortbay.jetty.Server; import org.mortbay.jetty.security.*; import org.mortbay.jetty.servlet.Context; import org.mortbay.jetty.servlet.ServletHolder; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; /** * @author roland * @since Apr 26, 2010 */ abstract public class AbstractJ4pIntegrationTest { private Server jettyServer; protected ItSetup itSetup; protected String j4pUrl; // Client which can be used by subclasses for testing protected J4pClient j4pClient; @BeforeClass public void start() throws Exception { String testUrl = System.getProperty("j4p.url"); itSetup = new ItSetup(); if (testUrl == null) { int port = EnvTestUtil.getFreePort(); jettyServer = new Server(port); Context jettyContext = new Context(jettyServer, "/"); ServletHolder holder = new ServletHolder(new AgentServlet()); holder.setInitParameter("dispatcherClasses", "org.jolokia.jsr160.Jsr160RequestDispatcher"); jettyContext.addServlet(holder, "/j4p/*"); SecurityHandler securityHandler = createSecurityHandler(); jettyContext.addHandler(securityHandler); jettyServer.start(); j4pUrl = "http://localhost:" + port + "/j4p"; // Start the integration MBeans itSetup.start(); } else { j4pUrl = testUrl; } j4pClient = createJ4pClient(j4pUrl); } private SecurityHandler createSecurityHandler() { Constraint constraint = new Constraint(); constraint.setName(Constraint.__BASIC_AUTH); constraint.setRoles(new String[]{"jolokia"}); constraint.setAuthenticate(true); ConstraintMapping cm = new ConstraintMapping(); cm.setConstraint(constraint); cm.setPathSpec("/*"); SecurityHandler securityHandler = new SecurityHandler(); HashUserRealm realm = new HashUserRealm("Jolokia"); realm.put("jolokia","jolokia"); realm.addUserToRole("jolokia", "jolokia"); securityHandler.setUserRealm(realm); securityHandler.setConstraintMappings(new ConstraintMapping[]{cm}); return securityHandler; } protected J4pClient createJ4pClient(String url) { return J4pClient.url(url) .user("jolokia") .password("jolokia") .authenticator(new BasicAuthenticator().preemptive()) .pooledConnections() .build(); } protected void startWithoutAgent() throws Exception { String testUrl = System.getProperty("j4p.url"); itSetup = new ItSetup(); if (testUrl == null) { int port = EnvTestUtil.getFreePort(); jettyServer = new Server(port); jettyServer.start(); j4pUrl = "http://localhost:" + port + "/j4p"; // Start the integration MBeans itSetup.start(); } else { j4pUrl = testUrl; } j4pClient = new J4pClient(j4pUrl); } @AfterClass public void stop() throws Exception { if (itSetup != null) { itSetup.stop(); } if (jettyServer != null) { jettyServer.stop(); } } public String getJ4pUrl() { return j4pUrl; } public J4pTargetConfig getTargetProxyConfig() { return new J4pTargetConfig("service:jmx:rmi:///jndi/rmi://localhost:45888/jmxrmi",null,null); } }