@@ -1178,20 +1178,51 @@ void getProjectId_explicitSet_noMDsCall() {
11781178 }
11791179
11801180 @ Test
1181- void isOnGce_forbidden_doesNotRetry () {
1181+ void isOnGce_clientError_doesNotRetry_returnsFalseOnUnknownOs () {
11821182 MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory ();
1183- transportFactory .transport .setStatusCode (HttpStatusCodes .STATUS_CODE_FORBIDDEN );
1184- UnknownOsCredentialsProvider provider = new UnknownOsCredentialsProvider ();
1183+ transportFactory .transport .setStatusCode (HttpStatusCodes .STATUS_CODE_NOT_FOUND );
1184+ DefaultCredentialsProvider provider = new DefaultCredentialsProvider () {
1185+ @ Override
1186+ String getEnv (String name ) {
1187+ if (DefaultCredentialsProvider .NO_GCE_CHECK_ENV_VAR .equals (name )) {
1188+ return "false" ;
1189+ }
1190+ return super .getEnv (name );
1191+ }
1192+ @ Override
1193+ String getOsName () {
1194+ return "Unknown" ;
1195+ }
1196+ };
11851197 boolean isOnGce = ComputeEngineCredentials .isOnGce (transportFactory , provider );
11861198 assertFalse (isOnGce );
11871199 assertEquals (1 , transportFactory .transport .getRequestCount ());
11881200 }
11891201
1190- static class UnknownOsCredentialsProvider extends DefaultCredentialsProvider {
1191- @ Override
1192- String getOsName () {
1193- return "Unknown" ;
1194- }
1202+ @ Test
1203+ void isOnGce_clientError_doesNotRetry_returnsTrueOnLinuxGce () {
1204+ MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory ();
1205+ transportFactory .transport .setStatusCode (HttpStatusCodes .STATUS_CODE_FORBIDDEN );
1206+ DefaultCredentialsProvider provider = new DefaultCredentialsProvider () {
1207+ @ Override
1208+ String getEnv (String name ) {
1209+ if (DefaultCredentialsProvider .NO_GCE_CHECK_ENV_VAR .equals (name )) {
1210+ return "false" ;
1211+ }
1212+ return super .getEnv (name );
1213+ }
1214+ @ Override
1215+ String getOsName () {
1216+ return "Linux" ;
1217+ }
1218+ @ Override
1219+ java .io .InputStream readStream (java .io .File file ) throws java .io .FileNotFoundException {
1220+ return new java .io .ByteArrayInputStream ("Google Compute Engine" .getBytes (java .nio .charset .StandardCharsets .UTF_8 ));
1221+ }
1222+ };
1223+ boolean isOnGce = ComputeEngineCredentials .isOnGce (transportFactory , provider );
1224+ assertTrue (isOnGce );
1225+ assertEquals (1 , transportFactory .transport .getRequestCount ());
11951226 }
11961227
11971228 static class MockMetadataServerTransportFactory implements HttpTransportFactory {
0 commit comments