This is an automated email from the ASF dual-hosted git repository. nfilotto pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 526c0a13357 CAMEL-18608: camel-box - Fix the regression with shared connection (#8527) 526c0a13357 is described below commit 526c0a1335716481281ec150f7524e2d2384d4e4 Author: Nicolas Filotto <essob...@users.noreply.github.com> AuthorDate: Wed Oct 12 14:11:55 2022 +0200 CAMEL-18608: camel-box - Fix the regression with shared connection (#8527) ## Motivation The test `org.apache.camel.component.box.BoxSharedConnectionTest.testEndpointUsesSharedConnection` fails continuously on Jenkins indicating that there is a regression so it needs to be fixed. ## Modifications: * Modify the implementation of the `equals` of the class `BoxConfiguration` to support subclasses like `org.apache.camel.component.box.BoxFilesManagerEndpointConfiguration` * Cleanup the code of the test class (not related to the regression) --- .../camel/component/box/BoxConfiguration.java | 7 +- .../component/box/BoxSharedConnectionTest.java | 89 ++++++++++------------ 2 files changed, 41 insertions(+), 55 deletions(-) diff --git a/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxConfiguration.java b/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxConfiguration.java index 7f20e2f9265..4601c84f91f 100644 --- a/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxConfiguration.java +++ b/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxConfiguration.java @@ -467,11 +467,8 @@ public class BoxConfiguration { return true; } - if (o == null) { - return false; - } - - if (this.getClass() != o.getClass()) { + // Don't check that the classes are equal intentionally to support subclasses + if (!(o instanceof BoxConfiguration)) { return false; } diff --git a/components/camel-box/camel-box-component/src/test/java/org/apache/camel/component/box/BoxSharedConnectionTest.java b/components/camel-box/camel-box-component/src/test/java/org/apache/camel/component/box/BoxSharedConnectionTest.java index a6b036c0502..c8b859d2115 100644 --- a/components/camel-box/camel-box-component/src/test/java/org/apache/camel/component/box/BoxSharedConnectionTest.java +++ b/components/camel-box/camel-box-component/src/test/java/org/apache/camel/component/box/BoxSharedConnectionTest.java @@ -28,93 +28,82 @@ import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; import org.mockito.Mockito; -public class BoxSharedConnectionTest { +class BoxSharedConnectionTest { private static final String PATH_PREFIX = BoxApiCollection.getCollection().getApiName(BoxFilesManagerApiMethod.class).getName(); @Test - public void testEndpointUsesSharedConnection() throws Exception { + void testEndpointUsesSharedConnection() throws Exception { final String boxUri = "box:" + PATH_PREFIX + "/getFileInfo"; - BoxConfiguration configuration = new BoxConfiguration(); - configuration.setUserName("ca...@apache.org"); - configuration.setUserPassword("p4ssw0rd"); - configuration.setClientId("camel-client-id"); - configuration.setClientSecret("camel-client-secret"); - configuration.setAuthenticationType("STANDARD_AUTHENTICATION"); + BoxConfiguration configuration = createBoxConfiguration(); BoxComponent component = new BoxComponent(); component.setConfiguration(configuration); - CamelContext camelContext = new DefaultCamelContext(); - camelContext.addComponent("box", component); - camelContext.addRoutes(new RouteBuilder() { - @Override - public void configure() { - from("direct:start").to(boxUri); - } - }); + try (CamelContext camelContext = createCamelContext(boxUri, component)) { - BoxAPIConnection connection = Mockito.mock(BoxAPIConnection.class); + BoxAPIConnection connection = Mockito.mock(BoxAPIConnection.class); - try (MockedStatic<BoxConnectionHelper> helper = Mockito.mockStatic(BoxConnectionHelper.class)) { - helper.when(() -> BoxConnectionHelper.createConnection(configuration)).thenReturn(connection); + try (MockedStatic<BoxConnectionHelper> helper = Mockito.mockStatic(BoxConnectionHelper.class)) { + helper.when(() -> BoxConnectionHelper.createConnection(configuration)).thenReturn(connection); - camelContext.start(); - try { + camelContext.start(); BoxEndpoint endpoint = camelContext.getEndpoint(boxUri, BoxEndpoint.class); helper.verify(() -> BoxConnectionHelper.createConnection(configuration), Mockito.times(1)); Assertions.assertSame(component.getBoxConnection(), endpoint.getBoxConnection()); - } finally { - camelContext.stop(); } } } @Test - public void testEndpointOverridesSharedConnection() throws Exception { + void testEndpointOverridesSharedConnection() throws Exception { String boxUri = "box:" + PATH_PREFIX + "/getFileInfo?userPassword=0th3rP4ssw0rd"; - BoxConfiguration configuration = new BoxConfiguration(); - configuration.setUserName("ca...@apache.org"); - configuration.setUserPassword("p4ssw0rd"); - configuration.setClientId("camel-client-id"); - configuration.setClientSecret("camel-client-secret"); - configuration.setAuthenticationType("STANDARD_AUTHENTICATION"); - BoxComponent component = new BoxComponent(); - component.setConfiguration(configuration); + component.setConfiguration(createBoxConfiguration()); - CamelContext camelContext = new DefaultCamelContext(); - camelContext.addComponent("box", component); - camelContext.addRoutes(new RouteBuilder() { - @Override - public void configure() { - from("direct:start").to(boxUri); - } - }); - - BoxAPIConnection componentConnection = Mockito.mock(BoxAPIConnection.class); - BoxAPIConnection endpointConnection = Mockito.mock(BoxAPIConnection.class); + try (CamelContext camelContext = createCamelContext(boxUri, component)) { + BoxAPIConnection componentConnection = Mockito.mock(BoxAPIConnection.class); + BoxAPIConnection endpointConnection = Mockito.mock(BoxAPIConnection.class); - try (MockedStatic<BoxConnectionHelper> helper = Mockito.mockStatic(BoxConnectionHelper.class)) { - helper.when(() -> BoxConnectionHelper.createConnection(Mockito.isA(BoxConfiguration.class))) - .thenReturn(componentConnection, endpointConnection); + try (MockedStatic<BoxConnectionHelper> helper = Mockito.mockStatic(BoxConnectionHelper.class)) { + helper.when(() -> BoxConnectionHelper.createConnection(Mockito.isA(BoxConfiguration.class))) + .thenReturn(componentConnection, endpointConnection); - camelContext.start(); - try { + camelContext.start(); BoxEndpoint endpoint = camelContext.getEndpoint(boxUri, BoxEndpoint.class); helper.verify(() -> BoxConnectionHelper.createConnection(Mockito.any()), Mockito.times(2)); Assertions.assertSame(componentConnection, component.getBoxConnection()); Assertions.assertSame(endpointConnection, endpoint.getBoxConnection()); - } finally { - camelContext.stop(); } } } + + private static CamelContext createCamelContext(String boxUri, BoxComponent component) throws Exception { + CamelContext camelContext = new DefaultCamelContext(); + camelContext.addComponent("box", component); + camelContext.addRoutes(new RouteBuilder() { + @Override + public void configure() { + from("direct:start").to(boxUri); + } + }); + return camelContext; + } + + private static BoxConfiguration createBoxConfiguration() { + BoxConfiguration configuration = new BoxConfiguration(); + configuration.setUserName("ca...@apache.org"); + configuration.setUserPassword("p4ssw0rd"); + configuration.setClientId("camel-client-id"); + configuration.setClientSecret("camel-client-secret"); + configuration.setAuthenticationType("STANDARD_AUTHENTICATION"); + return configuration; + } }