diff --git a/.github/workflows/ci-feature.yml b/.github/workflows/ci-feature.yml index ca5b1ed..3ef2dc6 100644 --- a/.github/workflows/ci-feature.yml +++ b/.github/workflows/ci-feature.yml @@ -4,6 +4,7 @@ on: push: branches: - "feature/**" + pull_request: jobs: build-and-test: diff --git a/inspectit-gepard-agent/src/main/java/rocks/inspectit/gepard/agent/instrumentation/hook/MethodHookManager.java b/inspectit-gepard-agent/src/main/java/rocks/inspectit/gepard/agent/instrumentation/hook/MethodHookManager.java index da9bd41..4d2bc03 100644 --- a/inspectit-gepard-agent/src/main/java/rocks/inspectit/gepard/agent/instrumentation/hook/MethodHookManager.java +++ b/inspectit-gepard-agent/src/main/java/rocks/inspectit/gepard/agent/instrumentation/hook/MethodHookManager.java @@ -90,6 +90,9 @@ public void updateHooksFor(Class clazz, ClassInstrumentationConfiguration con */ private Set getInstrumentedMethods( Class clazz, ClassInstrumentationConfiguration configuration) { + if (configuration.equals(ClassInstrumentationConfiguration.NO_INSTRUMENTATION)) + return Collections.emptySet(); + ElementMatcher.Junction methodMatcher = configuration.methodMatcher(); TypeDescription type = TypeDescription.ForLoadedType.of(clazz); diff --git a/inspectit-gepard-agent/src/test/java/rocks/inspectit/gepard/agent/instrumentation/hook/MethodHookManagerTest.java b/inspectit-gepard-agent/src/test/java/rocks/inspectit/gepard/agent/instrumentation/hook/MethodHookManagerTest.java index bf1c43d..7b5df43 100644 --- a/inspectit-gepard-agent/src/test/java/rocks/inspectit/gepard/agent/instrumentation/hook/MethodHookManagerTest.java +++ b/inspectit-gepard-agent/src/test/java/rocks/inspectit/gepard/agent/instrumentation/hook/MethodHookManagerTest.java @@ -5,14 +5,13 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; -import java.util.Set; +import java.util.Collections; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import rocks.inspectit.gepard.agent.instrumentation.hook.configuration.ClassHookConfiguration; import rocks.inspectit.gepard.agent.instrumentation.hook.configuration.HookedMethods; import rocks.inspectit.gepard.agent.internal.instrumentation.model.ClassInstrumentationConfiguration; import rocks.inspectit.gepard.bootstrap.Instances; @@ -77,7 +76,17 @@ void shouldUpdateHooksForClassWhenMethodsAreInstrumented() { methodHookManager.updateHooksFor(TEST_CLASS, classConfiguration); - verify(hookState).removeObsoleteHooks(eq(TEST_CLASS), any(Set.class)); - verify(hookState).updateHooks(eq(TEST_CLASS), any(ClassHookConfiguration.class)); + verify(hookState).removeObsoleteHooks(eq(TEST_CLASS), argThat(set -> !set.isEmpty())); + verify(hookState) + .updateHooks(eq(TEST_CLASS), argThat(config -> !config.getMethods().isEmpty())); + } + + @Test + void shouldRemoveHooksForClassWhenScopeIsInactive() { + methodHookManager.updateHooksFor( + TEST_CLASS, ClassInstrumentationConfiguration.NO_INSTRUMENTATION); + + verify(hookState).removeObsoleteHooks(TEST_CLASS, Collections.emptySet()); + verify(hookState).updateHooks(eq(TEST_CLASS), argThat(config -> config.getMethods().isEmpty())); } }