test_class.file: util/src/test/java/com/google/cloud/hadoop/util/RetryDeterminerTest.java
test_class.identifier: RetryDeterminerTest
test_case.body: @Test
    public void defaultRetriesCorrectly() throws Exception {
      assertThat(RetryDeterminer.DEFAULT.shouldRetry(new SocketTimeoutException())).isTrue();
      assertThat(
              RetryDeterminer.SOCKET_ERRORS.shouldRetry(
                  new SSLException("test", new SocketException())))
          .isTrue();
      assertThat(RetryDeterminer.SOCKET_ERRORS.shouldRetry(new SSLException("invalid certificate")))
          .isFalse();
      assertThat(RetryDeterminer.DEFAULT.shouldRetry(new IllegalArgumentException())).isFalse();
      assertThat(RetryDeterminer.DEFAULT.shouldRetry(new InterruptedException())).isFalse();
      assertThat(RetryDeterminer.DEFAULT.shouldRetry(makeHttpException(300))).isFalse();
      assertThat(RetryDeterminer.DEFAULT.shouldRetry(makeHttpException(504))).isTrue();
      assertThat(RetryDeterminer.DEFAULT.shouldRetry(makeHttpException(500))).isTrue();
      assertThat(RetryDeterminer.DEFAULT.shouldRetry(makeHttpException(599))).isTrue();
      assertThat(RetryDeterminer.DEFAULT.shouldRetry(makeHttpException(499))).isFalse();
    }
test_case.class_method_signature: RetryDeterminerTest.defaultRetriesCorrectly()
test_case.full_signature: @Test public void defaultRetriesCorrectly()
test_case.identifier: defaultRetriesCorrectly
test_case.invocations: isTrue assertThat shouldRetry isTrue assertThat shouldRetry isFalse assertThat shouldRetry isFalse assertThat shouldRetry isFalse assertThat shouldRetry isFalse assertThat shouldRetry makeHttpException isTrue assertThat shouldRetry makeHttpException isTrue assertThat shouldRetry makeHttpException isTrue assertThat shouldRetry makeHttpException isFalse assertThat shouldRetry makeHttpException
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void defaultRetriesCorrectly()
focal_class.declarator: DEFAULT = new RetryDeterminer<Exception>() {
      @Override
      public boolean shouldRetry(Exception e) {
        if (e instanceof IOException) {
          return SOCKET_ERRORS.shouldRetry((IOException) e)
              || SERVER_ERRORS.shouldRetry((IOException) e);
        }
        return false;
      }
    }
focal_class.modifier: public static final
focal_class.original_string: public static final RetryDeterminer<Exception> DEFAULT = new RetryDeterminer<Exception>() {
      @Override
      public boolean shouldRetry(Exception e) {
        if (e instanceof IOException) {
          return SOCKET_ERRORS.shouldRetry((IOException) e)
              || SERVER_ERRORS.shouldRetry((IOException) e);
        }
        return false;
      }
    };
focal_class.type: RetryDeterminer<Exception>
focal_class.var_name: DEFAULT
focal_class.declarator: SOCKET_ERRORS =
        createSocketErrorRetryDeterminer(ApiErrorExtractor.INSTANCE)
focal_class.modifier: public static final
focal_class.original_string: public static final RetryDeterminer<IOException> SOCKET_ERRORS =
        createSocketErrorRetryDeterminer(ApiErrorExtractor.INSTANCE);
focal_class.type: RetryDeterminer<IOException>
focal_class.var_name: SOCKET_ERRORS
focal_class.declarator: SERVER_ERRORS =
        new RetryDeterminer<IOException>() {
      @Override
      public boolean shouldRetry(IOException e) {
        if (e instanceof HttpResponseException) {
          HttpResponseException httpException = (HttpResponseException) e;
          // TODO: Find what we should do for 500 codes that are not always transient.
          return httpException.getStatusCode() / 100 == 5;
        }
        return false;
      }
    }
focal_class.modifier: public static final
focal_class.original_string: public static final RetryDeterminer<IOException> SERVER_ERRORS =
        new RetryDeterminer<IOException>() {
      @Override
      public boolean shouldRetry(IOException e) {
        if (e instanceof HttpResponseException) {
          HttpResponseException httpException = (HttpResponseException) e;
          // TODO: Find what we should do for 500 codes that are not always transient.
          return httpException.getStatusCode() / 100 == 5;
        }
        return false;
      }
    };
focal_class.type: RetryDeterminer<IOException>
focal_class.var_name: SERVER_ERRORS
focal_class.declarator: RATE_LIMIT_ERRORS =
        createRateLimitedRetryDeterminer(ApiErrorExtractor.INSTANCE)
focal_class.modifier: public static final
focal_class.original_string: public static final RetryDeterminer<IOException> RATE_LIMIT_ERRORS =
        createRateLimitedRetryDeterminer(ApiErrorExtractor.INSTANCE);
focal_class.type: RetryDeterminer<IOException>
focal_class.var_name: RATE_LIMIT_ERRORS
focal_class.file: util/src/main/java/com/google/cloud/hadoop/util/RetryDeterminer.java
focal_class.identifier: RetryDeterminer
focal_class.class_method_signature: RetryDeterminer.shouldRetry(X e)
focal_class.full_signature: public abstract boolean shouldRetry(X e)
focal_class.identifier: shouldRetry
focal_class.modifiers: public abstract
focal_class.parameters: (X e)
focal_class.return: boolean
focal_class.signature: boolean shouldRetry(X e)
focal_class.class_method_signature: RetryDeterminer.createRateLimitedRetryDeterminer(
        final ApiErrorExtractor errorExtractor)
focal_class.full_signature: public static RetryDeterminer<IOException> createRateLimitedRetryDeterminer(
        final ApiErrorExtractor errorExtractor)
focal_class.identifier: createRateLimitedRetryDeterminer
focal_class.modifiers: public static
focal_class.parameters: (
        final ApiErrorExtractor errorExtractor)
focal_class.return: RetryDeterminer<IOException>
focal_class.signature: RetryDeterminer<IOException> createRateLimitedRetryDeterminer(
        final ApiErrorExtractor errorExtractor)
focal_class.class_method_signature: RetryDeterminer.createSocketErrorRetryDeterminer(
        final ApiErrorExtractor errorExtractor)
focal_class.full_signature: private static RetryDeterminer<IOException> createSocketErrorRetryDeterminer(
        final ApiErrorExtractor errorExtractor)
focal_class.identifier: createSocketErrorRetryDeterminer
focal_class.modifiers: private static
focal_class.parameters: (
        final ApiErrorExtractor errorExtractor)
focal_class.return: RetryDeterminer<IOException>
focal_class.signature: RetryDeterminer<IOException> createSocketErrorRetryDeterminer(
        final ApiErrorExtractor errorExtractor)
focal_method.body: public abstract boolean shouldRetry(X e);
focal_method.class_method_signature: RetryDeterminer.shouldRetry(X e)
focal_method.full_signature: public abstract boolean shouldRetry(X e)
focal_method.identifier: shouldRetry
focal_method.modifiers: public abstract
focal_method.parameters: (X e)
focal_method.return: boolean
focal_method.signature: boolean shouldRetry(X e)