/**
* 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.cxf.management.interceptor;
import javax.management.ObjectName;
import javax.xml.namespace.QName;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.management.counters.CounterRepository;
import org.apache.cxf.management.counters.MessageHandlingTimeRecorder;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
import org.apache.cxf.service.Service;
import org.apache.cxf.service.model.BindingOperationInfo;
import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.service.model.OperationInfo;
import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Before;
public class AbstractMessageResponseTestBase extends Assert {
protected static final QName SERVICE_NAME = new QName("http://org.apache.cxf", "hello");
protected static final QName OPERATION_NAME = new QName("http://org.apache.cxf", "world");
protected static final QName PORT_NAME = new QName("http://org.apache.cxf", "port");
protected static final String CLIENT_SERVICE_ONAME =
"org.apache.cxf:type=Performance.Counter.Client,bus.id=cxf,service=\""
+ SERVICE_NAME.toString() + "\",port=\""
+ PORT_NAME.getLocalPart() + "\"";
protected static final String SERVER_SERVICE_ONAME =
"org.apache.cxf:type=Performance.Counter.Server,bus.id=cxf,service=\""
+ SERVICE_NAME.toString() + "\",port=\""
+ PORT_NAME.getLocalPart() + "\"";
protected ObjectName clientServiceCounterOName;
protected ObjectName serverServiceCounterOName;
protected ObjectName clientOperationCounterOName;
protected ObjectName serverOperationCounterOName;
protected Bus bus;
protected Message message;
protected Exchange exchange;
protected CounterRepository cRepository;
@Before
public void setUp() throws Exception {
message = EasyMock.createMock(Message.class);
exchange = EasyMock.createMock(Exchange.class);
bus = EasyMock.createMock(Bus.class);
cRepository = EasyMock.createMock(CounterRepository.class);
clientServiceCounterOName = new ObjectName(CLIENT_SERVICE_ONAME);
serverServiceCounterOName = new ObjectName(SERVER_SERVICE_ONAME);
clientOperationCounterOName = new ObjectName(CLIENT_SERVICE_ONAME
+ ",operation=\"" + OPERATION_NAME.getLocalPart() + "\"");
serverOperationCounterOName = new ObjectName(SERVER_SERVICE_ONAME
+ ",operation=\"" + OPERATION_NAME.getLocalPart() + "\"");
}
protected void setupCounterRepository(boolean increase, boolean isClient) {
ObjectName serviceCounterOName;
ObjectName operationCounterOName;
if (isClient) {
serviceCounterOName = clientServiceCounterOName;
operationCounterOName = clientOperationCounterOName;
} else {
serviceCounterOName = serverServiceCounterOName;
operationCounterOName = serverOperationCounterOName;
}
BusFactory.setDefaultBus(bus);
bus.getExtension(CounterRepository.class);
EasyMock.expectLastCall().andReturn(cRepository).anyTimes();
if (increase) {
EasyMock.expect(bus.getId()).andReturn(Bus.DEFAULT_BUS_ID).anyTimes();
cRepository.increaseCounter(EasyMock.eq(serviceCounterOName),
EasyMock.isA(MessageHandlingTimeRecorder.class));
EasyMock.expectLastCall();
cRepository.increaseCounter(EasyMock.eq(operationCounterOName),
EasyMock.isA(MessageHandlingTimeRecorder.class));
EasyMock.expectLastCall();
EasyMock.expect(cRepository.getCounter(EasyMock.isA(ObjectName.class))).andReturn(null);
EasyMock.replay(cRepository);
}
EasyMock.replay(bus);
// increase the number
}
protected void setupExchangeForMessage() {
EasyMock.expect(exchange.getBus()).andReturn(bus).anyTimes();
Service service = EasyMock.createMock(Service.class);
EasyMock.expect(service.getName()).andReturn(SERVICE_NAME).anyTimes();
EasyMock.expect(exchange.getService()).andReturn(service).anyTimes();
EasyMock.replay(service);
Endpoint endpoint = EasyMock.createMock(Endpoint.class);
EndpointInfo endpointInfo = EasyMock.createMock(EndpointInfo.class);
EasyMock.expect(endpointInfo.getName()).andReturn(PORT_NAME).anyTimes();
EasyMock.expect(endpoint.getEndpointInfo()).andReturn(endpointInfo).anyTimes();
EasyMock.expect(endpoint.get("javax.management.ObjectName")).andReturn(null).anyTimes();
EasyMock.expect(endpoint.put(EasyMock.eq("javax.management.ObjectName"), EasyMock.anyObject(ObjectName.class)))
.andReturn(null).anyTimes();
EasyMock.expect(exchange.getEndpoint()).andReturn(endpoint).anyTimes();
EasyMock.replay(endpointInfo);
EasyMock.replay(endpoint);
//EasyMock.expect(exchange.getBus()).andReturn(bus);
EasyMock.expect(exchange.get("org.apache.cxf.management.service.counter.name")).andReturn(null).anyTimes();
}
protected void setupOperationForMessage() {
OperationInfo op = EasyMock.createMock(OperationInfo.class);
BindingOperationInfo bop = EasyMock.createMock(BindingOperationInfo.class);
EasyMock.expect(exchange.getBindingOperationInfo()).andReturn(bop);
EasyMock.expect(bop.getOperationInfo()).andReturn(op);
EasyMock.expect(op.getName()).andReturn(OPERATION_NAME);
EasyMock.expect(op.getProperty("javax.management.ObjectName", ObjectName.class)).andReturn(null).anyTimes();
op.setProperty(EasyMock.eq("javax.management.ObjectName"),
EasyMock.anyObject(ObjectName.class));
EasyMock.expectLastCall();
EasyMock.replay(bop, op);
}
}