From c04786da9fd63c4dbea4edbed777356295a9ff34 Mon Sep 17 00:00:00 2001 From: Emily Wang Date: Wed, 19 Oct 2022 11:36:54 -0400 Subject: [PATCH 1/2] WIP: Expose parsing for apiShortName and apiVersion as public static methods --- .../generator/gapic/composer/Composer.java | 49 ++++++++++--------- .../gapic/composer/ComposerTest.java | 8 +-- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/google/api/generator/gapic/composer/Composer.java b/src/main/java/com/google/api/generator/gapic/composer/Composer.java index 60d4f5dde2..ce053fafbb 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/Composer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/Composer.java @@ -192,8 +192,25 @@ public static List generateTestClasses(GapicContext context) { return clazzes; } - @VisibleForTesting - static List prepareExecutableSamples(List clazzes, String protoPackage) { + // Parse defaultHost for apiShortName for the RegionTag. Need to account for regional default + // endpoints like + // "us-east1-pubsub.googleapis.com". + public static String parseApiShortName(String defaultHost) { + // If the defaultHost is of the format "**.googleapis.com", take the name before the first + // period. + String apiShortName = Iterables.getFirst(Splitter.on(".").split(defaultHost), defaultHost); + // If the defaultHost is of the format "**-**-**.googleapis.com", take the section before the + // first period and after the last dash to follow CSharp's implementation here: + // https://github.com/googleapis/gapic-generator-csharp/blob/main/Google.Api.Generator/Generation/ServiceDetails.cs#L70 + apiShortName = Iterables.getLast(Splitter.on("-").split(apiShortName), defaultHost); + // `iam-meta-api` service is an exceptional case and is handled as a one-off + if (defaultHost.contains("iam-meta-api")) { + apiShortName = "iam"; + } + return apiShortName; + } + + public static String parseApiVersion(String protoPackage) { // parse protoPackage for apiVersion String[] pakkage = protoPackage.split("\\."); String apiVersion; @@ -203,6 +220,11 @@ static List prepareExecutableSamples(List clazzes, Strin } else { apiVersion = ""; } + return apiVersion; + } + + @VisibleForTesting + static List prepareExecutableSamples(List clazzes, String protoPackage) { // Include license header, apiShortName, and apiVersion List clazzesWithSamples = new ArrayList<>(); clazzes.forEach( @@ -214,31 +236,14 @@ static List prepareExecutableSamples(List clazzes, Strin sample -> samples.add( addRegionTagAndHeaderToSample( - sample, parseDefaultHost(gapicClass.defaultHost()), apiVersion))); + sample, + parseApiShortName(gapicClass.defaultHost()), + parseApiVersion(protoPackage)))); clazzesWithSamples.add(gapicClass.withSamples(samples)); }); return clazzesWithSamples; } - // Parse defaultHost for apiShortName for the RegionTag. Need to account for regional default - // endpoints like - // "us-east1-pubsub.googleapis.com". - @VisibleForTesting - protected static String parseDefaultHost(String defaultHost) { - // If the defaultHost is of the format "**.googleapis.com", take the name before the first - // period. - String apiShortName = Iterables.getFirst(Splitter.on(".").split(defaultHost), defaultHost); - // If the defaultHost is of the format "**-**-**.googleapis.com", take the section before the - // first period and after the last dash to follow CSharp's implementation here: - // https://github.com/googleapis/gapic-generator-csharp/blob/main/Google.Api.Generator/Generation/ServiceDetails.cs#L70 - apiShortName = Iterables.getLast(Splitter.on("-").split(apiShortName), defaultHost); - // `iam-meta-api` service is an exceptional case and is handled as a one-off - if (defaultHost.contains("iam-meta-api")) { - apiShortName = "iam"; - } - return apiShortName; - } - @VisibleForTesting protected static Sample addRegionTagAndHeaderToSample( Sample sample, String apiShortName, String apiVersion) { diff --git a/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java b/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java index caf070682c..79465828af 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java +++ b/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java @@ -91,28 +91,28 @@ public void composeSamples_showcase() { @Test public void parseDefaultHost_shouldReturnApiShortNameIfHostContainsRegionalEndpoint() { String defaultHost = "us-east1-pubsub.googleapis.com"; - String apiShortName = Composer.parseDefaultHost(defaultHost); + String apiShortName = Composer.parseApiShortName(defaultHost); assertEquals("pubsub", apiShortName); } @Test public void parseDefaultHost_shouldReturnApiShortName() { String defaultHost = "logging.googleapis.com"; - String apiShortName = Composer.parseDefaultHost(defaultHost); + String apiShortName = Composer.parseApiShortName(defaultHost); assertEquals("logging", apiShortName); } @Test public void parseDefaultHost_shouldReturnApiShortNameForIam() { String defaultHost = "iam-meta-api.googleapis.com"; - String apiShortName = Composer.parseDefaultHost(defaultHost); + String apiShortName = Composer.parseApiShortName(defaultHost); assertEquals("iam", apiShortName); } @Test public void parseDefaultHost_shouldReturnHostIfNoPeriods() { String defaultHost = "logging:7469"; - String apiShortName = Composer.parseDefaultHost(defaultHost); + String apiShortName = Composer.parseApiShortName(defaultHost); assertEquals("logging:7469", apiShortName); } From b600f183b866ef4af52a2023464d4985e368a74c Mon Sep 17 00:00:00 2001 From: Emily Wang Date: Mon, 24 Oct 2022 09:13:14 -0400 Subject: [PATCH 2/2] Update unit tests --- .../gapic/composer/ComposerTest.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java b/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java index 79465828af..0c5e1a7fb9 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java +++ b/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java @@ -89,33 +89,47 @@ public void composeSamples_showcase() { } @Test - public void parseDefaultHost_shouldReturnApiShortNameIfHostContainsRegionalEndpoint() { + public void parseApiShortName_shouldReturnApiShortNameIfHostContainsRegionalEndpoint() { String defaultHost = "us-east1-pubsub.googleapis.com"; String apiShortName = Composer.parseApiShortName(defaultHost); assertEquals("pubsub", apiShortName); } @Test - public void parseDefaultHost_shouldReturnApiShortName() { + public void parseApiShortName_shouldReturnApiShortName() { String defaultHost = "logging.googleapis.com"; String apiShortName = Composer.parseApiShortName(defaultHost); assertEquals("logging", apiShortName); } @Test - public void parseDefaultHost_shouldReturnApiShortNameForIam() { + public void parseApiShortName_shouldReturnApiShortNameForIam() { String defaultHost = "iam-meta-api.googleapis.com"; String apiShortName = Composer.parseApiShortName(defaultHost); assertEquals("iam", apiShortName); } @Test - public void parseDefaultHost_shouldReturnHostIfNoPeriods() { + public void parseApiShortName_shouldReturnHostIfNoPeriods() { String defaultHost = "logging:7469"; String apiShortName = Composer.parseApiShortName(defaultHost); assertEquals("logging:7469", apiShortName); } + @Test + public void parseApiVersion_shouldReturnApiVersion() { + String protoPackage = "google.cloud.accessapproval.v1"; + String apiVersion = Composer.parseApiVersion(protoPackage); + assertEquals("v1", apiVersion); + } + + @Test + public void parseApiVersion_shouldReturnEmptyIfNoMatch() { + String protoPackage = "google.cloud.accessapproval"; + String apiVersion = Composer.parseApiVersion(protoPackage); + assertEquals("", apiVersion); + } + @Test public void gapicClass_addRegionTagAndHeaderToSample() { Sample testSample;