Class 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 Detail

      • 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:
        Constant Field Values
      • 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:
        Constant Field Values
      • 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:
        Constant Field Values
      • testResourceNamer

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

      • TestBase

        public TestBase()
    • Method Detail

      • 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.
      • 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.