Package com.springsource.insight.plugin.springweb.validation

Source Code of com.springsource.insight.plugin.springweb.validation.ValidationErrorsMetricsGeneratorTest

/**
* 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.springweb.validation;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.junit.Test;
import org.mockito.Mockito;

import com.springsource.insight.collection.test.AbstractCollectionTestSupport;
import com.springsource.insight.intercept.application.ApplicationName;
import com.springsource.insight.intercept.metrics.MetricsBag;
import com.springsource.insight.intercept.metrics.MetricsBag.PointType;
import com.springsource.insight.intercept.operation.Operation;
import com.springsource.insight.intercept.resource.ResourceKey;
import com.springsource.insight.intercept.resource.ResourceNames;
import com.springsource.insight.intercept.server.ServerName;
import com.springsource.insight.intercept.trace.Frame;
import com.springsource.insight.intercept.trace.FrameId;
import com.springsource.insight.intercept.trace.SimpleFrame;
import com.springsource.insight.intercept.trace.Trace;
import com.springsource.insight.intercept.trace.TraceId;
import com.springsource.insight.util.IDataPoint;
import com.springsource.insight.util.ListUtil;
import com.springsource.insight.util.time.TimeRange;

/**
*
*/
public class ValidationErrorsMetricsGeneratorTest extends AbstractCollectionTestSupport {
    private static final ValidationErrorsMetricsGenerator generator = ValidationErrorsMetricsGenerator.getInstance();
    private static final TimeRange range = new TimeRange(7365L, 3777347L);

    public ValidationErrorsMetricsGeneratorTest() {
        super();
    }

    @Test
    public void testNoErrorsCount() {
        assertMetricsResult(createTrace(createValidationFrame(0)), "testNoErrorsCount", 0);
    }

    @Test
    public void testSimpleErrorsCount() {
        final int NUM_ERRORS = 47;
        assertMetricsResult(createTrace(createValidationFrame(NUM_ERRORS)), "testSimpleErrorsCount", NUM_ERRORS);
    }

    @Test
    public void testMultipleErrorCounts() {
        final int[] counts = {1, 2, 3, 5, 7, 11, 13, 17, 19, 23};
        List<Frame> children = new ArrayList<Frame>(counts.length);
        int totalCount = 0;
        for (int errCount : counts) {
            children.add(createValidationFrame(errCount));
            totalCount += errCount;
        }

        Frame root = new SimpleFrame(FrameId.valueOf(7365L), null, new Operation().label("root"), range, children);
        for (Frame child : children) {
            Mockito.when(child.getParent()).thenReturn(root);
        }

        assertMetricsResult(createTrace(root), "testMultipleErrorCounts", totalCount);
    }

    static MetricsBag assertMetricsResult(Trace trace, String endpointName, int expectedCount) {
        ResourceKey resourceKey = ResourceKey.valueOf(ResourceNames.EndPoint, endpointName);
        List<MetricsBag> mbList = generator.generateMetrics(trace, resourceKey);
        if (expectedCount <= 0) {
            assertEquals("Unepected metrics generated: " + mbList, 0, ListUtil.size(mbList));
            return null;
        }

        assertEquals("Unepected metrics generated: " + mbList, 1, ListUtil.size(mbList));

        MetricsBag mb = mbList.get(0);
        assertEquals("Mismatched resource key", resourceKey, mb.getResourceKey());

        List<String> metricNames = mb.getMetricKeys();
        assertEquals("Mismatched number of metrics: " + metricNames, 1, ListUtil.size(metricNames));

        String metricKey = metricNames.get(0);
        assertEquals("Mismatched metric key", ValidationErrorsMetricsGenerator.METRIC_KEY, metricKey);
        assertEquals("Mismatched counter type", PointType.COUNTER, mb.getMetricType(metricKey));

        List<IDataPoint> dpList = mb.getPoints(metricKey);
        assertEquals("Mismatched number of points: " + dpList, 1, ListUtil.size(dpList));

        IDataPoint dp = dpList.get(0);
        assertEquals("Mismatched errors count", expectedCount, Math.round(dp.getValue()));

        return mb;
    }

    static Trace createTrace(Frame root) {
        return new Trace(ServerName.valueOf("srv"), ApplicationName.valueOf("app"), new Date(), TraceId.valueOf("id"), root);
    }

    static Frame createValidationFrame(int numErrors) {
        Operation op = new Operation()
                .label(numErrors + " errors")
                .type(ValidationErrorsMetricsGenerator.TYPE)
                .put(ValidationJoinPointFinalizer.ERRORS_COUNT, numErrors);
        Frame frame = createMockOperationWrapperFrame(op);
        Mockito.when(frame.getRange()).thenReturn(range);
        return frame;
    }
}
TOP

Related Classes of com.springsource.insight.plugin.springweb.validation.ValidationErrorsMetricsGeneratorTest

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.