blob: f12288c91da9185b6755c6fc3845906f8938d5d1 [file] [log] [blame]
/*
*
* 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();
}
}
}