/* * JBoss, Home of Professional Open Source. * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. Some portions may be licensed * to Red Hat, Inc. under one or more contributor license agreements. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. */ /* * Date: Sep 17, 2003 * Time: 3:48:54 PM */ package org.teiid.dqp.internal.datamgr; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import org.teiid.dqp.message.AtomicRequestID; import org.teiid.dqp.message.AtomicRequestMessage; import org.teiid.dqp.message.RequestID; import org.teiid.translator.ExecutionContext; import org.teiid.translator.ExecutionFactory; import org.teiid.translator.TranslatorException; /** * JUnit test for TestConnectorStateManager */ public final class TestConnectorManager { private AtomicRequestMessage request; private ConnectorManager csm; static ConnectorManager getConnectorManager() throws Exception { final FakeConnector c = new FakeConnector(); ConnectorManager cm = new ConnectorManager("FakeConnector","FakeConnector") { //$NON-NLS-1$ //$NON-NLS-2$ public ExecutionFactory getExecutionFactory() { return c; } public Object getConnectionFactory(){ return c; } }; cm.start(); return cm; } @Before public void setUp() throws Exception { request = TestConnectorWorkItem.createNewAtomicRequestMessage(1, 1); csm = getConnectorManager(); } void helpAssureOneState() throws Exception { csm.registerRequest(request); ConnectorWork state = csm.getState(request.getAtomicRequestID()); assertEquals(state, csm.getState(request.getAtomicRequestID())); } @Test public void testCreateAndAddRequestState() throws Exception { helpAssureOneState(); assertEquals("Expected size of 1", 1, csm.size()); //$NON-NLS-1$ } @Test public void testIllegalCreate() throws Exception { helpAssureOneState(); try { helpAssureOneState(); fail("expected exception"); //$NON-NLS-1$ } catch (AssertionError e) { assertEquals("State already existed", e.getMessage()); //$NON-NLS-1$ } } @Test public void testRemoveRequestState() throws Exception { helpAssureOneState(); csm.removeState(request.getAtomicRequestID()); assertEquals("Expected size of 0", 0, csm.size()); //$NON-NLS-1$ } @Test public void testRemoveUnknownRequestState() throws Exception { helpAssureOneState(); csm.removeState(new AtomicRequestID(new RequestID("ZZZZ", 3210), 5, 5)); //$NON-NLS-1$ assertEquals("Expected size of 1", 1, csm.size()); //$NON-NLS-1$ } @Test public void testGetCapabilities() throws Exception { final Object cf = new Object(); ExecutionFactory ef = new ExecutionFactory() { public boolean isSourceRequiredForCapabilities() { return true; } }; final Object[] cfHolder = new Object[1]; ConnectorManager cm = new ConnectorManager("FakeConnector","FakeConnector", ef) { //$NON-NLS-1$ //$NON-NLS-2$ public Object getConnectionFactory(){ return cfHolder[0]; } }; cm.start(); try { cm.getCapabilities(); fail(); } catch (TranslatorException e) { } ef = new ExecutionFactory() { public boolean isSourceRequiredForCapabilities() { return true; } @Override public Object getConnection(Object factory, ExecutionContext executionContext) throws TranslatorException { assertEquals(cf, factory); return factory; } @Override public void closeConnection(Object connection, Object factory) { } }; cm = new ConnectorManager("FakeConnector","FakeConnector", ef) { //$NON-NLS-1$ //$NON-NLS-2$ public Object getConnectionFactory(){ return cfHolder[0]; } }; cfHolder[0] = cf; cm.getCapabilities(); } }