Class TestExtensionsTracker

java.lang.Object
ru.vyarus.dropwizard.guice.test.jupiter.ext.conf.track.TestExtensionsTracker

public class TestExtensionsTracker extends Object
Tracks registration of hooks and support objects during test initialization in order to log used additions (to simplify applied objects tracking). Also, tracks applied configuration overrides, but only after application start (the only way to show actually applied values).

Also, tracks guicey extensions performance to simplify test performance problems resolution.

Since:
27.05.2022
  • Field Details

    • GUICEY_EXTENSIONS_DEBUG

      public static final String GUICEY_EXTENSIONS_DEBUG
      System property enables debug output for all used guicey extensions.
      See Also:
    • DEBUG_ENABLED

      public static final String DEBUG_ENABLED
      Enabled value for GUICEY_EXTENSIONS_DEBUG system property.
      See Also:
    • debug

      public boolean debug
      Extension debug state.
    • extensionsSource

      protected final List<String> extensionsSource
      Setup objects registration sources.
    • hooksSource

      protected final List<String> hooksSource
      Hooks registration sources.
    • configModifierSource

      protected final List<String> configModifierSource
      Configuration modifiers registration sources.
  • Constructor Details

    • TestExtensionsTracker

      public TestExtensionsTracker()
  • Method Details

    • setContextSetupObject

      public void setContextSetupObject(Class<? extends TestEnvironmentSetup> setup)
      Parameters:
      setup - context test extension
    • extensionsFromFields

      public final void extensionsFromFields(List<AnnotatedField<EnableSetup,TestEnvironmentSetup>> fields, Object instance)
      Register setup objects from test fields.
      Parameters:
      fields - fields
      instance - test instance
    • extensionsFromAnnotation

      @SafeVarargs public final void extensionsFromAnnotation(Class<? extends Annotation> ann, Class<? extends TestEnvironmentSetup>... exts)
      Register setup objects from annotation.
      Parameters:
      ann - annotation type
      exts - setup objects
    • hooksFromFields

      public final void hooksFromFields(List<AnnotatedField<EnableHook,GuiceyConfigurationHook>> fields, boolean baseHooks, Object instance)
      Register hooks from test fields.
      Parameters:
      fields - fields
      baseHooks - hooks from base class
      instance - test instance
    • hooksFromAnnotation

      @SafeVarargs public final void hooksFromAnnotation(Class<? extends Annotation> ann, Class<? extends GuiceyConfigurationHook>... exts)
      Register hooks from annotation.
      Parameters:
      ann - annotation type
      exts - hooks
    • extensionInstances

      public final void extensionInstances(TestEnvironmentSetup... exts)
      Register setup objects instances.
      Parameters:
      exts - setup objects
    • extensionClasses

      @SafeVarargs public final void extensionClasses(Class<? extends TestEnvironmentSetup>... exts)
      Register setup objects classes.
      Parameters:
      exts - setup object classes
    • lookupExtensions

      @SafeVarargs public final List<TestEnvironmentSetup> lookupExtensions(TestEnvironmentSetup... exts)
      Register setup objects resolved with service loader.
      Parameters:
      exts - setup objects
      Returns:
      setup object instances
    • defaultExtensions

      @SafeVarargs public final List<TestEnvironmentSetup> defaultExtensions(TestEnvironmentSetup... exts)
      Register default setup objects (which must be registered last due to AOP usage).
      Parameters:
      exts - setup objects
      Returns:
      setup objects instances
    • hookInstances

      public final void hookInstances(GuiceyConfigurationHook... exts)
      Register hook instances.
      Parameters:
      exts - hooks
    • hookClasses

      @SafeVarargs public final void hookClasses(Class<? extends GuiceyConfigurationHook>... exts)
      Register hook classes.
      Parameters:
      exts - hooks
    • configModifiersFromAnnotation

      @SafeVarargs public final void configModifiersFromAnnotation(Class<? extends Annotation> ann, Class<? extends ConfigModifier>... exts)
      Register config modifiers from annotation.
      Parameters:
      ann - annotation type
      exts - modifiers
    • configModifierClasses

      @SafeVarargs public final void configModifierClasses(Class<? extends ConfigModifier>... mods)
      Register config modifier classes.
      Parameters:
      mods - modifiers
    • configModifierInstances

      public final void configModifierInstances(ConfigModifier... exts)
      Register config modifier instances.
      Parameters:
      exts - modifiers
    • lifecyclePhase

      public void lifecyclePhase(org.junit.jupiter.api.extension.ExtensionContext context, GuiceyTestTime phase)
      Indicate current phase.
      Parameters:
      context - junit context
      phase - phase
    • performanceTrack

      public void performanceTrack(GuiceyTestTime name, Duration duration)
      Record performance.
      Parameters:
      name - tracker name
      duration - duration
    • enableDebugFromSystemProperty

      public void enableDebugFromSystemProperty()
      In some cases it might be simpler to use system property to enable debug: -Dguicey.extensions.debug=true.
    • logUsedHooksAndSetupObjects

      public void logUsedHooksAndSetupObjects(String configPrefix)
      Logs registered setup objects and hooks. Do nothing if no setup objects or hooks registered.
      Parameters:
      configPrefix - configuration prefix
    • logOverriddenConfigs

      public void logOverriddenConfigs(String configPrefix)
      Logs overridden configurations. Show values already applied to system properties.
      Parameters:
      configPrefix - configuration prefix
    • logGuiceyTestTime

      public void logGuiceyTestTime(GuiceyTestTime phase, org.junit.jupiter.api.extension.ExtensionContext context)
      Record guicey time.
      Parameters:
      phase - phase
      context - junit context