From 538ea1d4f20f7d5fde9fe9e1c20721b67ffd2539 Mon Sep 17 00:00:00 2001 From: Hanwen Wu Date: Wed, 29 Jan 2020 00:22:13 -0500 Subject: [PATCH] test: refresh VPCSC tests (#52) * Refresh VPCSC tests. Refresh VPCSC tests to cover AgentTranslationService/CollectdTimeSeries endpoint. * Remove Java 8 specifics. The stream is Java 8 specific, which breaks Java 7 tests. Remove its usage. * Add test dependency. Add a test dependency on com.google.auth:google-auth-library-oauth2-http * use 0.19.0 auth library Co-authored-by: Jeff Ching --- google-cloud-monitoring/pom.xml | 9 +- .../v3/ITVPCServiceControlTest.java | 90 ++++++++++++++++++- 2 files changed, 97 insertions(+), 2 deletions(-) diff --git a/google-cloud-monitoring/pom.xml b/google-cloud-monitoring/pom.xml index fbed537c..77e9d4c5 100644 --- a/google-cloud-monitoring/pom.xml +++ b/google-cloud-monitoring/pom.xml @@ -75,6 +75,13 @@ grpc-google-cloud-monitoring-v3 test + + + com.google.auth + google-auth-library-oauth2-http + 0.19.0 + test + com.google.api @@ -98,4 +105,4 @@ - \ No newline at end of file + diff --git a/google-cloud-monitoring/src/test/java/com/google/cloud/monitoring/v3/ITVPCServiceControlTest.java b/google-cloud-monitoring/src/test/java/com/google/cloud/monitoring/v3/ITVPCServiceControlTest.java index fca6b742..e090222d 100644 --- a/google-cloud-monitoring/src/test/java/com/google/cloud/monitoring/v3/ITVPCServiceControlTest.java +++ b/google-cloud-monitoring/src/test/java/com/google/cloud/monitoring/v3/ITVPCServiceControlTest.java @@ -15,12 +15,21 @@ */ // DO NOT MODIFY! THIS FILE IS AUTO-GENERATED. -// This file is auto-generated on 03 Dec 19 00:46 UTC. +// This file is auto-generated on 28 Jan 20 00:11 UTC. package com.google.cloud.monitoring.v3; +import com.google.api.gax.grpc.GrpcStatusCode; import com.google.api.gax.rpc.PermissionDeniedException; +import com.google.auth.oauth2.GoogleCredentials; +import com.google.common.collect.ImmutableList; import com.google.monitoring.v3.*; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.logging.Level; @@ -36,6 +45,7 @@ public class ITVPCServiceControlTest { static final String PROJECT_OUTSIDE = System.getenv("GOOGLE_CLOUD_TESTS_VPCSC_OUTSIDE_PERIMETER_PROJECT"); static final String IS_INSIDE_VPCSC = System.getenv("GOOGLE_CLOUD_TESTS_IN_VPCSC"); + static final String COLLECTD_TIME_SERIES_REQUEST_TEMPLATE = "{ \"name\": \"%s\" }"; private static final Logger logger = Logger.getLogger(ITVPCServiceControlTest.class.getName()); private static Exception getError(Callable callable) { @@ -82,6 +92,84 @@ public static void setUpClass() { PROJECT_OUTSIDE != null && !PROJECT_OUTSIDE.isEmpty()); } + private static void postJSON(URL url, String payload) throws Exception { + GoogleCredentials adc = + GoogleCredentials.getApplicationDefault() + .createScoped( + ImmutableList.of( + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.write", + "https://www.googleapis.com/auth/cloud-platform")); + adc.refresh(); + + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("POST"); + conn.setRequestProperty("Authorization", "Bearer " + adc.getAccessToken().getTokenValue()); + conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); + conn.setRequestProperty("Accept", "application/json, */*"); + conn.setDoOutput(true); + + OutputStream body = conn.getOutputStream(); + body.write(payload.getBytes("UTF-8")); + body.close(); + + conn.getResponseMessage(); + + BufferedReader reader = + new BufferedReader(new InputStreamReader((InputStream) conn.getErrorStream())); + StringBuilder response = new StringBuilder(); + + for (String line; (line = reader.readLine()) != null; ) { + response.append(line).append("\n"); + } + + if (conn.getResponseCode() == 403) { + throw new PermissionDeniedException( + response.toString(), + null, + GrpcStatusCode.of(io.grpc.Status.Code.PERMISSION_DENIED), + false); + } else if (conn.getResponseCode() != 200) { + throw new RuntimeException(response.toString()); + } + return; + } + + @Test + @SuppressWarnings("all") + public void collectdTimeSeriesTest() throws Exception { + final String prefix = "https://monitoring.googleapis.com/v3/"; + final String endpoint = "/collectdTimeSeries"; + + Callable delayedInside = + new Callable() { + public Object call() throws Exception { + ProjectName nameInside = ProjectName.of(PROJECT_INSIDE); + URL url = new URL(prefix + nameInside.toString() + endpoint); + logger.log(Level.INFO, "collectdTimeSeriesTest: requesting {0}", url.toString()); + postJSON( + url, String.format(COLLECTD_TIME_SERIES_REQUEST_TEMPLATE, nameInside.toString())); + return null; + } + }; + Callable delayedOutside = + new Callable() { + public Object call() throws Exception { + ProjectName nameOutside = ProjectName.of(PROJECT_OUTSIDE); + URL url = new URL(prefix + nameOutside.toString() + endpoint); + logger.log(Level.INFO, "collectdTimeSeriesTest: requesting {0}", url.toString()); + postJSON( + url, String.format(COLLECTD_TIME_SERIES_REQUEST_TEMPLATE, nameOutside.toString())); + return null; + } + }; + try { + doTest(delayedInside, delayedOutside); + } finally { + // no clean up + } + } + @Test @SuppressWarnings("all") public void createAlertPolicyTest() throws Exception {