Class TestBase

java.lang.Object
com.azure.core.test.TestBase
All Implemented Interfaces:
org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.Extension

public abstract class TestBase extends Object implements org.junit.jupiter.api.extension.BeforeEachCallback
Base class for running live and playback tests using InterceptorManager.
  • Field Details

    • AZURE_TEST_HTTP_CLIENTS_VALUE_ALL

      public static final String AZURE_TEST_HTTP_CLIENTS_VALUE_ALL
      Specifies to use all HttpClient implementations in testing.
      See Also:
    • AZURE_TEST_HTTP_CLIENTS_VALUE_NETTY

      public static final String AZURE_TEST_HTTP_CLIENTS_VALUE_NETTY
      Specifies to use Netty HttpClient implementation in testing.
      See Also:
    • AZURE_TEST_SERVICE_VERSIONS_VALUE_ALL

      public static final String AZURE_TEST_SERVICE_VERSIONS_VALUE_ALL
      Specifies to use all service versions in testing.
      See Also:
    • interceptorManager

      protected InterceptorManager interceptorManager
      InterceptorManager used for this test run.
    • testResourceNamer

      protected com.azure.core.test.utils.TestResourceNamer testResourceNamer
      TestResourceNamer used for this test run.
    • testContextManager

      protected TestContextManager testContextManager
      TestContextManager used for this test run.
  • Constructor Details

    • TestBase

      public TestBase()
  • Method Details

    • setupClass

      @BeforeAll public static void setupClass()
      Before tests are executed, determines the test mode by reading the AZURE_TEST_MODE environment variable. If it is not set, TestMode.PLAYBACK
    • beforeEach

      public void beforeEach(org.junit.jupiter.api.extension.ExtensionContext extensionContext)
      Specified by:
      beforeEach in interface org.junit.jupiter.api.extension.BeforeEachCallback
    • setupTest

      @BeforeEach public void setupTest(org.junit.jupiter.api.TestInfo testInfo)
      Sets-up the testResourceNamer and interceptorManager before each test case is run. Then calls its implementing class to perform any other set-up commands.
      Parameters:
      testInfo - TestInfo to retrieve test method name.
    • teardownTest

      @AfterEach public void teardownTest(org.junit.jupiter.api.TestInfo testInfo)
      Disposes of InterceptorManager and its inheriting class' resources.
      Parameters:
      testInfo - the injected testInfo
    • getTestMode

      public TestMode getTestMode()
      Gets the TestMode that has been initialized.
      Returns:
      The TestMode that has been initialized.
    • getTestName

      @Deprecated protected String getTestName()
      Deprecated.
      This method is deprecated as JUnit 5 provides a simpler mechanism to get the test method name through TestInfo. Keeping this for backward compatability of other client libraries that still override this method. This method can be deleted when all client libraries remove this method. See setupTest(TestInfo).
      Gets the name of the current test being run.
      Returns:
      The name of the current test.
    • beforeTest

      protected void beforeTest()
      Performs any set-up before each test case. Any initialization that occurs in TestBase occurs first before this. Can be overridden in an inheriting class to add additional functionality during test set-up.
    • afterTest

      protected void afterTest()
      Dispose of any resources and clean-up after a test case runs. Can be overridden in an inheriting class to add additional functionality during test teardown.
    • getHttpClients

      public static Stream<HttpClient> getHttpClients()
      Returns a list of HttpClients that should be tested.
      Returns:
      A list of HttpClients to be tested.
    • shouldClientBeTested

      public static boolean shouldClientBeTested(HttpClient client)
      Returns whether the given http clients match the rules of test framework.
      • Using Netty http client as default if no environment variable is set.
      • If it's set to ALL, all HttpClients in the classpath will be tested.
      • Otherwise, the name of the HttpClient class should match env variable.
      Environment values currently supported are: "ALL", "netty", "okhttp" which is case insensitive. Use comma to separate http clients want to test. e.g. set AZURE_TEST_HTTP_CLIENTS = NettyAsyncHttpClient, OkHttpAsyncHttpClient
      Parameters:
      client - Http client needs to check
      Returns:
      Boolean indicates whether filters out the client or not.
    • sleepIfRunningAgainstService

      protected void sleepIfRunningAgainstService(long millis)
      Sleeps the test for the given amount of milliseconds if TestMode isn't TestMode.PLAYBACK.
      Parameters:
      millis - Number of milliseconds to sleep the test.
      Throws:
      IllegalStateException - If the sleep is interrupted.
    • setPlaybackSyncPollerPollInterval

      protected <T, U> SyncPoller<T,U> setPlaybackSyncPollerPollInterval(SyncPoller<T,U> syncPoller)
      Sets the polling interval for the passed SyncPoller.

      This configures the SyncPoller to use a poll interval of one millisecond if the test mode is playback. In live or record test mode the polling interval is left as-is.

      Type Parameters:
      T - The type of poll response value.
      U - The type of the final result of long-running operation.
      Parameters:
      syncPoller - The SyncPoller.
      Returns:
      The updated SyncPoller.
    • setPlaybackPollerFluxPollInterval

      protected <T, U> PollerFlux<T,U> setPlaybackPollerFluxPollInterval(PollerFlux<T,U> pollerFlux)
      Sets the polling interval for the passed PollerFlux.

      This configures the PollerFlux to use a poll interval of one millisecond if the test mode is playback. In live or record test mode the polling interval is left as-is.

      Type Parameters:
      T - The type of poll response value.
      U - The type of the final result of long-running operation.
      Parameters:
      pollerFlux - The PollerFlux.
      Returns:
      The updated PollerFlux.
    • getHttpClientOrUsePlayback

      protected HttpClient getHttpClientOrUsePlayback(HttpClient httpClient)
      Convenience method which either returned the passed HttpClient or returns a PlaybackClient depending on whether the test mode is playback.

      When the test mode is playback the PlaybackClient corresponding to the test will be returned, otherwise the passed HttpClient will be returned.

      Parameters:
      httpClient - The initial HttpClient that will be used.
      Returns:
      Either the passed HttpClient or PlaybackClient based on the test mode.