Package org.apache.qpid.management.wsdm

Source Code of org.apache.qpid.management.wsdm.WsDmAdapterTest$WsDmAdapterTestSetup

/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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.apache.qpid.management.wsdm;

import java.io.IOException;
import java.net.ServerSocket;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import org.apache.muse.core.serializer.SerializerRegistry;
import org.apache.qpid.management.Names;
import org.apache.qpid.management.Protocol;
import org.apache.qpid.management.wsdm.capabilities.Result;
import org.apache.qpid.management.wsdm.muse.serializer.DateSerializer;
import org.apache.qpid.management.wsdm.muse.serializer.InvocationResultSerializer;
import org.apache.qpid.management.wsdm.muse.serializer.MapSerializer;
import org.apache.qpid.management.wsdm.muse.serializer.ObjectSerializer;
import org.apache.qpid.management.wsdm.muse.serializer.UUIDSerializer;
import org.mortbay.component.LifeCycle;
import org.mortbay.component.LifeCycle.Listener;

import junit.extensions.TestSetup;
import junit.framework.Test;
import junit.framework.TestSuite;

public class WsDmAdapterTest
{

  /**
   * Test case wide set up.
   * Provides Server startup & shutdown global procedure.
   *
   * @author Andrea Gazzarini
   */
  private static class WsDmAdapterTestSetup extends TestSetup
  {
    private Object _serverMonitor = new Object();
   
    Listener listener = new WebApplicationLifeCycleListener()
    {
      public void lifeCycleStarted(LifeCycle event)
      {
        synchronized (_serverMonitor)
        {
          _serverMonitor.notify();
        }
      }
    };
   
    private ServerThread _server;
   
    /**
     * Builds a new test setup with for the given test.
     *
     * @param test the decorated test.
     */
    public WsDmAdapterTestSetup(Test test)
    {
      super(test);
    }
   
    /**
     * Starts up Web server.
     *
     * @throws Exception when the server startup fails.
     */
    @Override
    protected void setUp() throws Exception
   
      SerializerRegistry.getInstance().registerSerializer(Object.class, new ObjectSerializer());
      SerializerRegistry.getInstance().registerSerializer(Date.class, new DateSerializer());
      SerializerRegistry.getInstance().registerSerializer(Map.class, new MapSerializer());
      SerializerRegistry.getInstance().registerSerializer(HashMap.class, new MapSerializer());
      SerializerRegistry.getInstance().registerSerializer(UUID.class, new UUIDSerializer());
      SerializerRegistry.getInstance().registerSerializer(Result.class, new InvocationResultSerializer());
     
      System.setProperty(
          Names.ADAPTER_HOST_PROPERTY_NAME,
          Protocol.DEFAULT_QMAN_HOSTNAME);

      System.setProperty(
          Names.ADAPTER_PORT_PROPERTY_NAME,
          String.valueOf(getFreePort()));
     
      _server = new ServerThread(listener);
      _server.start();
     
      synchronized(_serverMonitor) {
        _serverMonitor.wait();
        Thread.sleep(2000);
      }
    }
   
    @Override
    protected void tearDown() throws Exception
    {
      _server.shutdown();
    }
  };
 
  /**
   * Gets the test suite composition.
   *
   * @return the test suite composition.
   */
  public static Test suite()
  {
    TestSuite suite = new TestSuite("Test suite for QMan WS-DM.");
    suite.addTestSuite(MetadataExchangeInterfaceTestCase.class);
    suite.addTestSuite(OperationInvocationInterfaceTestCase.class);
    suite.addTestSuite(GetResourcePropertyDocumentTestCase.class);
    suite.addTestSuite(SetResourcePropertiesTestCase.class);   
    suite.addTestSuite(GetMultipleResourcePropertiesTestCase.class)
    suite.addTestSuite(GetResourcePropertiesTestCase.class);     
    return new WsDmAdapterTestSetup(suite);
  }
 
  /**
   * Finds a free port that will be used to run the embedded
   * web server.
   *
   * @return a   free port that will be used to run the
   *           embedded web server.
   */
  private static int getFreePort() throws IOException {
    ServerSocket server = null;
    try
    {
      server = new ServerSocket(0);
      return server.getLocalPort();
    } finally
    {
      server.close();     
    }
  }
}
TOP

Related Classes of org.apache.qpid.management.wsdm.WsDmAdapterTest$WsDmAdapterTestSetup

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.