[ 
https://issues.apache.org/jira/browse/NIFI-5229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16491593#comment-16491593
 ] 

ASF GitHub Bot commented on NIFI-5229:
--------------------------------------

Github user MikeThomsen commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/2735#discussion_r191044793
  
    --- Diff: 
nifi-nar-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/test/java/org/apache/nifi/dbcp/TestDBCPConnectionPoolLookup.java
 ---
    @@ -0,0 +1,182 @@
    +/*
    + * 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.nifi.dbcp;
    +
    +import org.apache.nifi.controller.AbstractControllerService;
    +import org.apache.nifi.processor.exception.ProcessException;
    +import org.apache.nifi.reporting.InitializationException;
    +import org.apache.nifi.util.TestRunner;
    +import org.apache.nifi.util.TestRunners;
    +import org.junit.Before;
    +import org.junit.Test;
    +
    +import java.sql.Connection;
    +import java.util.HashMap;
    +import java.util.Map;
    +
    +import static org.junit.Assert.assertEquals;
    +import static org.junit.Assert.assertNotNull;
    +import static org.junit.Assert.assertTrue;
    +import static org.mockito.Mockito.mock;
    +import static org.mockito.Mockito.when;
    +
    +public class TestDBCPConnectionPoolLookup {
    +
    +    private MockConnection connectionA;
    +    private MockConnection connectionB;
    +
    +    private MockDBCPService dbcpServiceA;
    +    private MockDBCPService dbcpServiceB;
    +
    +    private DBCPService dbcpLookupService;
    +    private TestRunner runner;
    +
    +    @Before
    +    public void setup() throws InitializationException {
    +        connectionA = mock(MockConnection.class);
    +        when(connectionA.getName()).thenReturn("A");
    +
    +        connectionB = mock(MockConnection.class);
    +        when(connectionB.getName()).thenReturn("B");
    +
    +        dbcpServiceA = new MockDBCPService(connectionA);
    +        dbcpServiceB = new MockDBCPService(connectionB);
    +
    +        dbcpLookupService = new DBCPConnectionPoolLookup();
    +
    +        runner = TestRunners.newTestRunner(TestProcessor.class);
    +
    +        final String dbcpServiceAIdentifier = "dbcp-a";
    +        runner.addControllerService(dbcpServiceAIdentifier, dbcpServiceA);
    +
    +        final String dbcpServiceBIdentifier = "dbcp-b";
    +        runner.addControllerService(dbcpServiceBIdentifier, dbcpServiceB);
    +
    +        runner.addControllerService("dbcp-lookup", dbcpLookupService);
    +        runner.setProperty(dbcpLookupService, "a", dbcpServiceAIdentifier);
    +        runner.setProperty(dbcpLookupService, "b", dbcpServiceBIdentifier);
    +
    +        runner.enableControllerService(dbcpServiceA);
    +        runner.enableControllerService(dbcpServiceB);
    +        runner.enableControllerService(dbcpLookupService);
    +
    +    }
    +
    +    @Test
    +    public void testLookupServiceA() {
    +        final Map<String,String> attributes = new HashMap<>();
    +        attributes.put(DBCPConnectionPoolLookup.DATABASE_NAME_ATTRIBUTE, 
"a");
    +
    +        final Connection connection = 
dbcpLookupService.getConnection(attributes);
    +        assertNotNull(connection);
    +        assertTrue(connection instanceof MockConnection);
    +
    +        final MockConnection mockConnection = (MockConnection)connection;
    +        assertEquals(connectionA.getName(), mockConnection.getName());
    +    }
    +
    +    @Test
    +    public void testLookupServiceB() {
    --- End diff --
    
    @mattyb149 Since it's a delegate, I focused on reviewing the unit tests 
because I felt that that would be enough here. The unit tests look correct and 
thorough to me.


> Implement a DBCPConnectionPool that dynamically selects a connection pool
> -------------------------------------------------------------------------
>
>                 Key: NIFI-5229
>                 URL: https://issues.apache.org/jira/browse/NIFI-5229
>             Project: Apache NiFi
>          Issue Type: Improvement
>            Reporter: Bryan Bende
>            Priority: Major
>             Fix For: 1.7.0
>
>
> In NIFI-5121 we modified the DBCPConnectionPool interface to allow passing a 
> map of attributes (https://issues.apache.org/jira/browse/NIFI-5121).
> We should implement a DBCPConnectionPool that lets you register multiple 
> other connection pools via dynamic properties, and then selects one based on 
> looking for an incoming attribute.
> For example, lets say you create two regular connection pools A and B, then 
> in the new connection pool you would register:
> a = pool1
> b = pool2
> and then the new connection pool will look in the attribute map for an 
> attribute like "database.id" and select the pool with the given id.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to