@@ -45,6 +45,8 @@ public class RemoteGcsHelper {
4545
4646 private static final Logger log = Logger .getLogger (RemoteGcsHelper .class .getName ());
4747 private static final String BUCKET_NAME_PREFIX = "gcloud-test-bucket-temp-" ;
48+ private static final String PROJECT_ID_ENV_VAR = "GCLOUD_TESTS_PROJECT_ID" ;
49+ private static final String PRIVATE_KEY_ENV_VAR = "GCLOUD_TESTS_KEY" ;
4850 private final StorageOptions options ;
4951
5052 private RemoteGcsHelper (StorageOptions options ) {
@@ -105,7 +107,13 @@ public static RemoteGcsHelper create(String projectId, InputStream keyStream)
105107 StorageOptions storageOptions = StorageOptions .builder ()
106108 .authCredentials (AuthCredentials .createForJson (keyStream ))
107109 .projectId (projectId )
108- .retryParams (retryParams ())
110+ .retryParams (RetryParams .builder ()
111+ .retryMaxAttempts (10 )
112+ .retryMinAttempts (6 )
113+ .maxRetryDelayMillis (30000 )
114+ .totalRetryPeriodMillis (120000 )
115+ .initialRetryDelayMillis (250 )
116+ .build ())
109117 .connectTimeout (60000 )
110118 .readTimeout (60000 )
111119 .build ();
@@ -137,30 +145,41 @@ public static RemoteGcsHelper create(String projectId, String keyPath)
137145 log .log (Level .WARNING , ex .getMessage ());
138146 }
139147 throw GcsHelperException .translate (ex );
148+ } catch (IOException ex ) {
149+ if (log .isLoggable (Level .WARNING )) {
150+ log .log (Level .WARNING , ex .getMessage ());
151+ }
152+ throw GcsHelperException .translate (ex );
140153 }
141154 }
142155
143156 /**
144- * Creates a {@code RemoteGcsHelper} object using default project id and authentication
145- * credentials.
157+ * Creates a {@code RemoteGcsHelper} object. Project id and path to JSON key are read from two
158+ * environment variables: {@code GCLOUD_TESTS_PROJECT_ID} and {@code GCLOUD_TESTS_KEY}.
159+ *
160+ * @return A {@code RemoteGcsHelper} object for the provided options.
161+ * @throws com.google.gcloud.storage.testing.RemoteGcsHelper.GcsHelperException if environment
162+ * variables {@code GCLOUD_TESTS_PROJECT_ID} and {@code GCLOUD_TESTS_KEY} are not set or if
163+ * the file pointed by {@code GCLOUD_TESTS_KEY} does not exist
146164 */
147165 public static RemoteGcsHelper create () throws GcsHelperException {
148- StorageOptions storageOptions = StorageOptions .builder ()
149- .retryParams (retryParams ())
150- .connectTimeout (60000 )
151- .readTimeout (60000 )
152- .build ();
153- return new RemoteGcsHelper (storageOptions );
154- }
155-
156- private static RetryParams retryParams () {
157- return RetryParams .builder ()
158- .retryMaxAttempts (10 )
159- .retryMinAttempts (6 )
160- .maxRetryDelayMillis (30000 )
161- .totalRetryPeriodMillis (120000 )
162- .initialRetryDelayMillis (250 )
163- .build ();
166+ String projectId = System .getenv (PROJECT_ID_ENV_VAR );
167+ String keyPath = System .getenv (PRIVATE_KEY_ENV_VAR );
168+ if (projectId == null ) {
169+ String message = "Environment variable " + PROJECT_ID_ENV_VAR + " not set" ;
170+ if (log .isLoggable (Level .WARNING )) {
171+ log .log (Level .WARNING , message );
172+ }
173+ throw new GcsHelperException (message );
174+ }
175+ if (keyPath == null ) {
176+ String message = "Environment variable " + PRIVATE_KEY_ENV_VAR + " not set" ;
177+ if (log .isLoggable (Level .WARNING )) {
178+ log .log (Level .WARNING , message );
179+ }
180+ throw new GcsHelperException (message );
181+ }
182+ return create (projectId , keyPath );
164183 }
165184
166185 private static class DeleteBucketTask implements Callable <Boolean > {
0 commit comments