Ver Fonte

HADOOP-16041. Include Hadoop version in User-Agent string for ABFS.

Contributed by Shweta Yakkali.

Signed-off-by: Sean Mackrory <mackrorysd@apache.org>
(cherry picked from commit 02eb91856e7e8477c62e0f8bf1bac6de3e00a8a4)
Signed-off-by: Steve Loughran <stevel@apache.org>
Da Zhou há 6 anos atrás
pai
commit
ae832ccffe

+ 2 - 1
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/constants/AbfsHttpConstants.java

@@ -20,6 +20,7 @@ package org.apache.hadoop.fs.azurebfs.constants;
 
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.classification.InterfaceStability;
+import org.apache.hadoop.util.VersionInfo;
 
 /**
  * Responsible to keep all constant keys used in abfs rest client here.
@@ -43,7 +44,7 @@ public final class AbfsHttpConstants {
   public static final String OS_NAME = "os.name";
   public static final String OS_VERSION = "os.version";
 
-  public static final String CLIENT_VERSION = "Azure Blob FS/1.0";
+  public static final String CLIENT_VERSION = "Azure Blob FS/" + VersionInfo.getVersion();
 
   // Abfs Http Verb
   public static final String HTTP_METHOD_DELETE = "DELETE";

+ 12 - 4
hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azurebfs/services/TestAbfsClient.java

@@ -28,6 +28,7 @@ import org.apache.hadoop.fs.azurebfs.AbfsConfiguration;
 import org.apache.hadoop.fs.azurebfs.utils.SSLSocketFactoryEx;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.azurebfs.constants.ConfigurationKeys;
+import org.apache.hadoop.util.VersionInfo;
 
 /**
  * Test useragent of abfs client.
@@ -49,12 +50,15 @@ public final class TestAbfsClient {
     }
     String userAgent = client.initializeUserAgent(config, sslProviderName);
     Pattern pattern = Pattern.compile(expectedPattern);
-    Assert.assertTrue(pattern.matcher(userAgent).matches());
+    Assert.assertTrue("Incorrect User Agent String",
+        pattern.matcher(userAgent).matches());
   }
 
   @Test
   public void verifyUnknownUserAgent() throws Exception {
-    String expectedUserAgentPattern = "Azure Blob FS\\/1.0 \\(JavaJRE ([^\\)]+)\\)";
+    String clientVersion = "Azure Blob FS/" + VersionInfo.getVersion();
+    String expectedUserAgentPattern = String.format(clientVersion
+        + " %s", "\\(JavaJRE ([^\\)]+)\\)");
     final Configuration configuration = new Configuration();
     configuration.unset(ConfigurationKeys.FS_AZURE_USER_AGENT_PREFIX_KEY);
     AbfsConfiguration abfsConfiguration = new AbfsConfiguration(configuration, accountName);
@@ -64,7 +68,9 @@ public final class TestAbfsClient {
 
   @Test
   public void verifyUserAgent() throws Exception {
-    String expectedUserAgentPattern = "Azure Blob FS\\/1.0 \\(JavaJRE ([^\\)]+)\\) Partner Service";
+    String clientVersion = "Azure Blob FS/" + VersionInfo.getVersion();
+    String expectedUserAgentPattern = String.format(clientVersion
+        + " %s", "\\(JavaJRE ([^\\)]+)\\) Partner Service");
     final Configuration configuration = new Configuration();
     configuration.set(ConfigurationKeys.FS_AZURE_USER_AGENT_PREFIX_KEY, "Partner Service");
     AbfsConfiguration abfsConfiguration = new AbfsConfiguration(configuration, accountName);
@@ -74,7 +80,9 @@ public final class TestAbfsClient {
 
   @Test
   public void verifyUserAgentWithSSLProvider() throws Exception {
-    String expectedUserAgentPattern = "Azure Blob FS\\/1.0 \\(JavaJRE ([^\\)]+) SunJSSE-1.8\\) Partner Service";
+    String clientVersion = "Azure Blob FS/" + VersionInfo.getVersion();
+    String expectedUserAgentPattern = String.format(clientVersion
+        + " %s", "\\(JavaJRE ([^\\)]+)\\) Partner Service");
     final Configuration configuration = new Configuration();
     configuration.set(ConfigurationKeys.FS_AZURE_USER_AGENT_PREFIX_KEY, "Partner Service");
     configuration.set(ConfigurationKeys.FS_AZURE_SSL_CHANNEL_MODE_KEY,