From 90a1ab7b6cf853af86240cdb4ed0d96878a0b98d Mon Sep 17 00:00:00 2001 From: Sushilkumar Pawar Date: Sat, 27 Jun 2026 19:21:14 +0530 Subject: [PATCH 1/4] Fix review comments of source and test --- .gitignore | 6 ----- build.gradle | 7 ----- .../emc/object/s3/jersey/ChecksumFilter.java | 7 ----- .../com/emc/object/s3/ExtendedConfigTest.java | 13 +++++----- .../com/emc/object/s3/GeoPinningTest.java | 26 ------------------- .../com/emc/object/s3/S3JerseyClientTest.java | 5 ++-- .../emc/object/s3/WriteTruncationTest.java | 3 ++- .../emc/object/s3/WriteTruncationV4Test.java | 4 +-- src/test/resources/log4j2.xml | 2 ++ 9 files changed, 16 insertions(+), 57 deletions(-) diff --git a/.gitignore b/.gitignore index e61e4381..cdd78d64 100644 --- a/.gitignore +++ b/.gitignore @@ -17,10 +17,4 @@ build *.iws dependency-reduced-pom.xml .gradle -# Local workspace files (not part of the repo) -CLIENT_DEMO.md -*.pptx -src/test/java/com/emc/object/demo/ -video_tools/ test.properties -release-notes-*.md diff --git a/build.gradle b/build.gradle index 36e30d0b..59d8eaf3 100644 --- a/build.gradle +++ b/build.gradle @@ -320,13 +320,6 @@ clean { delete aggregatedDocsDir } -task runDemo(type: JavaExec, dependsOn: testClasses) { - group = 'Demo' - description = 'Runs EcsClientDemo against a live ECS cluster (configure via test.properties)' - classpath = sourceSets.test.runtimeClasspath - mainClass = 'com.emc.object.demo.EcsClientDemo' -} - // allow typing in credentials // note: this only works when run without the Gradle daemon (--no-daemon) gradle.taskGraph.whenReady { taskGraph -> diff --git a/src/main/java/com/emc/object/s3/jersey/ChecksumFilter.java b/src/main/java/com/emc/object/s3/jersey/ChecksumFilter.java index e13293a3..81b3baeb 100644 --- a/src/main/java/com/emc/object/s3/jersey/ChecksumFilter.java +++ b/src/main/java/com/emc/object/s3/jersey/ChecksumFilter.java @@ -42,8 +42,6 @@ import com.emc.object.s3.S3Config; import com.emc.object.s3.S3Signer; -import com.emc.object.s3.S3SignerV2; -import com.emc.object.s3.S3SignerV4; import com.emc.object.util.ChecksumAlgorithm; import com.emc.object.util.ChecksumError; import com.emc.object.util.ChecksumValueImpl; @@ -56,14 +54,9 @@ public class ChecksumFilter implements WriterInterceptor, ClientResponseFilter { private static final String PROP_WRITE_CHECKSUM = "com.emc.object.checksumFilter.writeChecksum"; private S3Config s3Config; - private S3Signer signer; public ChecksumFilter(S3Config s3Config) { this.s3Config = s3Config; - if(s3Config.isUseV2Signer()) - this.signer = new S3SignerV2(s3Config); - else - this.signer = new S3SignerV4(s3Config); } @Override diff --git a/src/test/java/com/emc/object/s3/ExtendedConfigTest.java b/src/test/java/com/emc/object/s3/ExtendedConfigTest.java index 7f9dac30..1affa4ea 100644 --- a/src/test/java/com/emc/object/s3/ExtendedConfigTest.java +++ b/src/test/java/com/emc/object/s3/ExtendedConfigTest.java @@ -6,6 +6,7 @@ import javax.ws.rs.client.Client; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.junit.Assert; import org.junit.Test; @@ -46,9 +47,6 @@ private S3Config loadTestConfig() throws IOException { return s3Config; } - // NOTE: In Jersey 2.x with Apache connector, connection pool settings are configured - // through SmartClientFactory which sets up the Apache HttpClient 5.x connection manager. - // This test verifies that a custom connection limit can be set via SmartConfig properties. @Test public void testApacheConnectionLimit() throws IOException { S3Config s3Config = loadTestConfig(); @@ -56,15 +54,18 @@ public void testApacheConnectionLimit() throws IOException { int connectionLimitPerHost = 4; // non-default number int connectionLimitTotal = 39; // non-default number - // In Jersey 2.x, connection limits are set via SmartConfig properties s3Config.setProperty(SmartClientFactory.MAX_CONNECTIONS_PER_HOST, connectionLimitPerHost); s3Config.setProperty(SmartClientFactory.MAX_CONNECTIONS, connectionLimitTotal); TestS3JerseyClient s3Client = new TestS3JerseyClient(s3Config); - // verify the client was created successfully with custom config + // verify actual Apache connection pool settings were applied Client jerseyClient = s3Client.getClient(); - Assert.assertNotNull(jerseyClient); + PoolingHttpClientConnectionManager cm = (PoolingHttpClientConnectionManager) + jerseyClient.getConfiguration().getProperty(SmartClientFactory.CONNECTION_MANAGER_PROPERTY_KEY); + Assert.assertNotNull("Apache connection manager not found in client config", cm); + Assert.assertEquals(connectionLimitPerHost, cm.getDefaultMaxPerRoute()); + Assert.assertEquals(connectionLimitTotal, cm.getMaxTotal()); } static class TestS3JerseyClient extends S3JerseyClient { diff --git a/src/test/java/com/emc/object/s3/GeoPinningTest.java b/src/test/java/com/emc/object/s3/GeoPinningTest.java index 34d8d539..28150677 100644 --- a/src/test/java/com/emc/object/s3/GeoPinningTest.java +++ b/src/test/java/com/emc/object/s3/GeoPinningTest.java @@ -146,32 +146,6 @@ public void testVdcDistribution() { testBucketDistribution(bucket3, bHash3 % vdcs.size()); } - @Test - public void testReadRetryFailoverInFilter() throws Exception { - S3Config s3ConfigF = new S3Config(createS3Config()); - s3ConfigF.setGeoReadRetryFailover(true); - - String bucket = "foo"; - String key = "my/object/key"; - int geoIndex = 0xbb8619 % vdcs.size(); - - // In Jersey 2.x, we test geo-pinning index calculation directly - // since we can't easily construct mock ClientRequestContext - int geoPinIndex = GeoPinningUtil.getGeoPinIndex(GeoPinningUtil.getGeoId(bucket, key), vdcs.size()); - Assert.assertEquals(geoIndex, geoPinIndex); - - // test retry failover indices - int retryIndex1 = (geoIndex + 1) % vdcs.size(); - Assert.assertNotEquals(geoIndex, retryIndex1); - - int retryIndex2 = (geoIndex + 2) % vdcs.size(); - Assert.assertNotEquals(geoIndex, retryIndex2); - - // test 3rd retry (we have 3 VDCs, so this should go back to the primary) - int retryIndex3 = (geoIndex + 3) % vdcs.size(); - Assert.assertEquals(geoIndex, retryIndex3); - } - protected void testKeyDistribution(String key, int vdcIndex) { LoadBalancer loadBalancer = ((S3JerseyClient) client).getLoadBalancer(); loadBalancer.resetStats(); diff --git a/src/test/java/com/emc/object/s3/S3JerseyClientTest.java b/src/test/java/com/emc/object/s3/S3JerseyClientTest.java index 6ad0ad6c..9c2bcd9b 100644 --- a/src/test/java/com/emc/object/s3/S3JerseyClientTest.java +++ b/src/test/java/com/emc/object/s3/S3JerseyClientTest.java @@ -2860,9 +2860,10 @@ public void run() { @Test public void testListMarkerWithSpecialChars() { String marker = "foo/bar/blah%blah&blah"; - ListObjectsResult result = client.listObjects(new ListObjectsRequest(getTestBucket()).withMarker(marker)); - + ListObjectsResult result = client.listObjects(new ListObjectsRequest(getTestBucket()).withMarker(marker) + .withEncodingType(EncodingType.url)); Assert.assertEquals(marker, result.getMarker()); + Assert.assertEquals(EncodingType.url, result.getEncodingType()); } @Test diff --git a/src/test/java/com/emc/object/s3/WriteTruncationTest.java b/src/test/java/com/emc/object/s3/WriteTruncationTest.java index a0dd2e2a..9dc7aaea 100644 --- a/src/test/java/com/emc/object/s3/WriteTruncationTest.java +++ b/src/test/java/com/emc/object/s3/WriteTruncationTest.java @@ -17,6 +17,7 @@ import org.junit.runner.RunWith; import com.emc.object.s3.jersey.S3JerseyClient; +import org.glassfish.jersey.client.HttpUrlConnectorProvider; import com.emc.object.s3.request.CreateBucketRequest; import com.emc.object.s3.request.PutObjectRequest; import com.emc.object.s3.request.UploadPartRequest; @@ -34,7 +35,7 @@ public class WriteTruncationTest extends AbstractS3ClientTest { @Override protected S3Client createS3Client() throws Exception { S3Config s3Config = createS3Config().withRetryEnabled(false); - this.jvmClient = new S3JerseyClient(s3Config); + this.jvmClient = new S3JerseyClient(s3Config, new HttpUrlConnectorProvider()); return new S3JerseyClient(createS3Config().withRetryEnabled(false)); } diff --git a/src/test/java/com/emc/object/s3/WriteTruncationV4Test.java b/src/test/java/com/emc/object/s3/WriteTruncationV4Test.java index f03aa1e1..9ca53307 100644 --- a/src/test/java/com/emc/object/s3/WriteTruncationV4Test.java +++ b/src/test/java/com/emc/object/s3/WriteTruncationV4Test.java @@ -1,13 +1,13 @@ package com.emc.object.s3; import com.emc.object.s3.jersey.S3JerseyClient; -// URLConnectionClientHandler removed in Jersey 2.x migration +import org.glassfish.jersey.client.HttpUrlConnectorProvider; public class WriteTruncationV4Test extends WriteTruncationTest { @Override protected S3Client createS3Client() throws Exception { S3Config s3Config = createS3Config().withRetryEnabled(false).withUseV2Signer(false); - this.jvmClient = new S3JerseyClient(s3Config); + this.jvmClient = new S3JerseyClient(s3Config, new HttpUrlConnectorProvider()); return new S3JerseyClient(createS3Config().withRetryEnabled(false)); } diff --git a/src/test/resources/log4j2.xml b/src/test/resources/log4j2.xml index a7fc26e8..6d10d2ec 100644 --- a/src/test/resources/log4j2.xml +++ b/src/test/resources/log4j2.xml @@ -11,8 +11,10 @@ +