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 02eb91856e)
Signed-off-by: Steve Loughran <stevel@apache.org>
This commit is contained in:
Da Zhou 2019-03-05 10:39:37 +00:00 committed by Steve Loughran
parent e58ccca3ce
commit ae832ccffe
No known key found for this signature in database
GPG Key ID: D22CF846DBB162A0
2 changed files with 14 additions and 5 deletions

View File

@ -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";

View File

@ -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,