/**
* Copyright (c) 2009-2011 VMware, Inc. All Rights Reserved.
*
* 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.
*/
package com.springsource.insight.plugin.servlet;
import org.junit.Test;
import com.springsource.insight.collection.test.AbstractCollectionTestSupport;
import com.springsource.insight.intercept.application.ApplicationName;
import com.springsource.insight.intercept.endpoint.EndPointAnalysis;
import com.springsource.insight.intercept.endpoint.EndPointName;
import com.springsource.insight.intercept.operation.Operation;
import com.springsource.insight.intercept.operation.OperationFields;
import com.springsource.insight.intercept.operation.OperationType;
import com.springsource.insight.intercept.trace.Frame;
import com.springsource.insight.intercept.trace.SimpleFrameBuilder;
import com.springsource.insight.intercept.trace.Trace;
import com.springsource.insight.intercept.trace.TraceId;
public class ServletEndPointAnalyzerTest extends AbstractCollectionTestSupport {
private final ApplicationName appKey = ApplicationName.valueOf("app");
private final ServletEndPointAnalyzer analyzer = ServletEndPointAnalyzer.getInstance();
public ServletEndPointAnalyzerTest() {
super();
}
@Test
public void testLocateEndPoint() {
Trace trace = createServletEndPointTrace();
EndPointAnalysis analysis = analyzer.locateEndPoint(trace);
assertEquals("Mismatched label", "Servlet: My stuff / servlet", analysis.getResourceLabel());
assertEquals("Mismatched end point", EndPointName.valueOf("My stuff _ servlet"), analysis.getEndPointName());
assertEquals("Mismatched example", "GET /path?fuu=bar", analysis.getExample());
}
@Test
public void testLocateEndPointNoHttp() {
Trace trace = createNonHttpTrace();
EndPointAnalysis analysis = analyzer.locateEndPoint(trace);
assertNull("Unexpected success: " + analysis, analysis);
}
private Trace createNonHttpTrace() {
SimpleFrameBuilder builder = new SimpleFrameBuilder();
builder.enter(new Operation());
Frame topLevelFrame = builder.exit();
return Trace.newInstance(appKey, TraceId.valueOf("0"), topLevelFrame);
}
private Trace createServletEndPointTrace() {
SimpleFrameBuilder builder = new SimpleFrameBuilder();
Operation httpOp = new Operation().type(OperationType.HTTP);
httpOp.createMap("request")
.put(OperationFields.URI, "/path?fuu=bar")
.put("method", "GET")
.put("servletName", "My stuff / servlet");
builder.enter(httpOp);
Frame httpFrame = builder.exit();
return Trace.newInstance(appKey, TraceId.valueOf("0"), httpFrame);
}
}