diff --git a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml index f8585231555f..70de649c20ab 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml @@ -165,6 +165,7 @@ META-INF/project.properties META-INF/services/org.apache.spark.sql.sources.DataSourceRegister + azure-cosmos-spark.properties diff --git a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/main/resources/azure-cosmos-spark.properties b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/main/resources/azure-cosmos-spark.properties new file mode 100644 index 000000000000..30846653315a --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/main/resources/azure-cosmos-spark.properties @@ -0,0 +1,2 @@ +name=${project.artifactId} +version=${project.version} \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/main/scala/com/azure/cosmos/spark/CosmosConstants.scala b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/main/scala/com/azure/cosmos/spark/CosmosConstants.scala index 72925ba6e7b3..13133254a242 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/main/scala/com/azure/cosmos/spark/CosmosConstants.scala +++ b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/main/scala/com/azure/cosmos/spark/CosmosConstants.scala @@ -8,9 +8,12 @@ import com.azure.cosmos.implementation.HttpConstants // cosmos db related constants private object CosmosConstants { - private[this] val currentVersion = - CoreUtils.getProperties(HttpConstants.Versions.AZURE_COSMOS_PROPERTIES_FILE_NAME).get("version") - val userAgentSuffix = s" SparkConnector/$currentVersion" + private[this] val propertiesFileName = "azure-cosmos-spark.properties" + val currentVersion: String = + CoreUtils.getProperties(propertiesFileName).get("version") + val currentName: String = + CoreUtils.getProperties(propertiesFileName).get("name") + val userAgentSuffix = s"SparkConnector/$currentName/$currentVersion" object Names { val ItemsDataSourceShortName = "cosmos.oltp" diff --git a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/test/scala/com/azure/cosmos/spark/CosmosConstantsSpec.scala b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/test/scala/com/azure/cosmos/spark/CosmosConstantsSpec.scala new file mode 100644 index 000000000000..38bd042fe06e --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/test/scala/com/azure/cosmos/spark/CosmosConstantsSpec.scala @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.cosmos.spark + +class CosmosConstantsSpec extends UnitSpec { + "CurrentVersion" should "not be null" in { + CosmosConstants.currentVersion == null shouldBe false + CosmosConstants.currentVersion.startsWith("4.") shouldBe true + } + + "CurrentName" should "not be null" in { + CosmosConstants.currentName == null shouldBe false + CosmosConstants.currentName.startsWith("azure-cosmos-spark") shouldBe true + } + + "UserAgentSuffix" should "combine name and version" in { + CosmosConstants.userAgentSuffix shouldBe + s"SparkConnector/${CosmosConstants.currentName}/${CosmosConstants.currentVersion}" + } +} diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/UserAgentContainer.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/UserAgentContainer.java index 72d0d1b44f41..2d5ccf1c9f7f 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/UserAgentContainer.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/UserAgentContainer.java @@ -8,7 +8,8 @@ */ public class UserAgentContainer { - private static final int MAX_SUFFIX_LENGTH = 64; + private static final int MAX_USER_AGENT_LENGTH = 255; + private final int maxSuffixLength; private final String baseUserAgent; private String suffix; private String userAgent; @@ -18,6 +19,7 @@ private UserAgentContainer(String sdkName, String sdkVersion) { this.baseUserAgent = Utils.getUserAgent(sdkName, sdkVersion); this.suffix = ""; this.userAgent = baseUserAgent; + this.maxSuffixLength = MAX_USER_AGENT_LENGTH - 1 - baseUserAgent.length(); } public UserAgentContainer() { @@ -29,8 +31,8 @@ public String getSuffix() { } public void setSuffix(String suffix) { - if (suffix.length() > MAX_SUFFIX_LENGTH) { - suffix = suffix.substring(0, MAX_SUFFIX_LENGTH); + if (suffix.length() > maxSuffixLength) { + suffix = suffix.substring(0, maxSuffixLength); } this.suffix = suffix; diff --git a/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/implementation/UserAgentContainerTest.java b/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/implementation/UserAgentContainerTest.java index 0df64c618889..f4a84dd5a381 100644 --- a/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/implementation/UserAgentContainerTest.java +++ b/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/implementation/UserAgentContainerTest.java @@ -31,10 +31,12 @@ public void userAgentContainerSetSuffix() { assertThat(userAgentContainer.getUserAgent()).isEqualTo(expectedString); //With suffix greater than 64 character - userProvidedSuffix = "greater than 64 characters ###########################################"; + userProvidedSuffix = "greater than 255 characters in total ################################################" + + "##########################################################################################################" + + "##########################################################################################################"; userAgentContainer = new UserAgentContainer(); userAgentContainer.setSuffix(userProvidedSuffix); - expectedString = expectedStringFixedPart + SPACE + userProvidedSuffix.substring(0, 64); + expectedString = (expectedStringFixedPart + SPACE + userProvidedSuffix).substring(0, 255); assertThat(userAgentContainer.getUserAgent()).isEqualTo(expectedString); }