Package com.springsource.insight.plugin.jndi

Source Code of com.springsource.insight.plugin.jndi.JndiOperationCollectionAspectTestSupport$ContextOperationExecutor

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

import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;

import javax.naming.Context;
import javax.naming.NamingException;

import org.junit.Before;

import com.springsource.insight.collection.OperationCollectionAspectSupport;
import com.springsource.insight.collection.OperationCollector;
import com.springsource.insight.collection.OperationListCollector;
import com.springsource.insight.collection.test.OperationCollectionAspectTestSupport;
import com.springsource.insight.intercept.operation.Operation;
import com.springsource.insight.intercept.operation.OperationMap;
import com.springsource.insight.intercept.operation.OperationType;
import com.springsource.insight.util.ListUtil;
import com.springsource.insight.util.MapUtil;

/**
*
*/
public abstract class JndiOperationCollectionAspectTestSupport
        extends OperationCollectionAspectTestSupport {

    protected final OperationType type;
    private final JndiTestContext testContext = new JndiTestContext();

    protected JndiOperationCollectionAspectTestSupport(OperationType opType) {
        if ((type = opType) == null) {
            throw new IllegalStateException("No operation type specified");
        }
    }

    @Override
    @Before
    public void setUp() {
        super.setUp();
        testContext.clear();
    }

    protected Operation assertCollectedOperation(String action, String name) {
        Operation op = getLastEntered();
        assertNotNull("No operation created", op);
        assertEquals("Mismatched type", type, op.getType());
        assertEquals("Mismatched action", action, op.get("action", String.class));
        assertEquals("Mismatched name", name, op.get("name", String.class));
        return op;
    }

    protected OperationMap assertCollectedEnvironment(Operation op, Context context) throws NamingException {
        return assertCollectedEnvironment(op, context.getEnvironment());
    }

    protected OperationMap assertCollectedEnvironment(Operation op, Map<?, ?> env) {
        OperationMap envMap = op.get("environment", OperationMap.class);
        assertNotNull("Missing environment in " + op.getLabel(), envMap);
        assertEquals("Mismatched environment size in " + op.getLabel(), MapUtil.size(env), envMap.size());

        Collection<? extends Map.Entry<String, ?>> envEntries = envMap.entrySet();
        Collection<Object> expKeys = new HashSet<Object>(env.keySet());
        for (Map.Entry<String, ?> ee : envEntries) {
            String key = ee.getKey();
            Object expected = env.get(key), actual = ee.getValue();
            assertEquals(op.getLabel() + ": Mismatched values for key=" + key, expected, actual);
            assertTrue(op.getLabel() + ": Unmatched key: " + key, expKeys.remove(key));
        }

        assertTrue("Not all keys exhaused for " + op.getLabel() + ": " + expKeys, expKeys.isEmpty());
        return envMap;
    }

    protected JndiTestContext setUpContext(Map<String, ?> bindings, Map<String, ?> env) {
        testContext.setBindings(bindings);
        testContext.setEnvironment(env);
        return testContext;
    }

    protected void runFilteredResourcesTest(String baseName, ContextOperationExecutor executor) throws Exception {
        runFilteredResourcesTest(baseName, setUpContext(Collections.<String, Object>emptyMap(), Collections.<String, Object>emptyMap()), executor);
    }

    protected void runFilteredResourcesTest(
            String baseName, JndiTestContext context, ContextOperationExecutor executor)
            throws Exception {
        OperationCollectionAspectSupport aspectInstance = getAspect();
        OperationCollector collector = aspectInstance.getCollector();
        try {
            OperationListCollector testCollector = new OperationListCollector();
            aspectInstance.setCollector(testCollector);

            for (String suffix : JndiResourceCollectionFilter.DEFAULT_EXCLUSION_PATTERNS) {
                String name = getClass().getSimpleName()
                        + "/"
                        + ((suffix.charAt(0) == '.') ? (baseName + suffix) : suffix);
                executor.executeContextOperation(context, name, suffix);

                Collection<Operation> opsList = testCollector.getCollectedOperations();
                assertEquals(baseName + "[" + suffix + "] unexpected operations: " + opsList, 0, ListUtil.size(opsList));
            }
        } finally {
            aspectInstance.setCollector(collector);
        }
    }

    protected static interface ContextOperationExecutor {
        Object executeContextOperation(JndiTestContext context, String name, Object value) throws Exception;
    }
}
TOP

Related Classes of com.springsource.insight.plugin.jndi.JndiOperationCollectionAspectTestSupport$ContextOperationExecutor

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.