/** * Abiquo community edition * cloud management application for hybrid clouds * Copyright (C) 2008-2010 - Abiquo Holdings S.L. * * This application is free software; you can redistribute it and/or * modify it under the terms of the GNU LESSER GENERAL PUBLIC * LICENSE as published by the Free Software Foundation under * version 3 of the License * * This software 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 * LESSER GENERAL PUBLIC LICENSE v.3 for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ package com.abiquo.testng; import static com.abiquo.testng.TestConfig.DEFAULT_SERVER_PORT; import static com.abiquo.testng.TestConfig.getParameter; import org.apache.commons.io.FilenameUtils; import org.mortbay.jetty.Server; import org.mortbay.jetty.webapp.WebAppContext; import org.testng.ISuite; /** * Adds a precompiled appliance manager in the current server context */ public class TestServerAndAMListener extends TestServerListener { /** appliance manager remote service configuration */ protected static final String AM_WEBAPP_DIR = "am.webapp.dir"; protected static final String AM_WEBAPP_CONTEXT = "am.webapp.context"; protected static final String AM_WEBAPP_CONTEXT_DEFAULT = "/am"; public static final String AM_URI = "http://localhost:" + getParameter(WEBAPP_PORT, DEFAULT_SERVER_PORT) + AM_WEBAPP_CONTEXT_DEFAULT; @Override public void onStart(final ISuite suite) { final String amcontextPath = getRelativeContextPath(getParameter(AM_WEBAPP_DIR)); LOGGER.info("Starting test server with am using contextpath {}", amcontextPath); LOGGER.info(getParameter(WEBAPP_DIR)); int port = Integer.valueOf(getParameter(WEBAPP_PORT, DEFAULT_SERVER_PORT)); server = new Server(port); WebAppContext webappapi = new WebAppContext(); webappapi.setContextPath(getParameter(WEBAPP_CONTEXT)); webappapi.setWar(getParameter(WEBAPP_DIR)); webappapi.setServer(server); WebAppContext webappam = new WebAppContext(); webappam.setContextPath(getParameter(AM_WEBAPP_CONTEXT, AM_WEBAPP_CONTEXT_DEFAULT)); webappam.setWar(amcontextPath); webappam.setServer(server); server.setHandlers(new WebAppContext[] {webappapi, webappam}); try { server.start(); LOGGER.info("Test server started with am."); } catch (Exception ex) { throw new RuntimeException("Could not start test server with am", ex); } } private static String getRelativeContextPath(String relpath) { return FilenameUtils.normalize(relpath); } }