use of com.navercorp.pinpoint.bootstrap.plugin.ProfilerPlugin in project pinpoint by naver.
the class ProfilerPluginLoader method load.
public List<SetupResult> load(URL[] pluginJars) {
List<SetupResult> pluginContexts = new ArrayList<SetupResult>(pluginJars.length);
for (URL pluginJar : pluginJars) {
final JarFile pluginJarFile = createJarFile(pluginJar);
final List<String> pluginPackageList = getPluginPackage(pluginJarFile);
final ClassNameFilter pluginFilterChain = createPluginFilterChain(pluginPackageList);
final List<ProfilerPlugin> original = PluginLoader.load(ProfilerPlugin.class, new URL[] { pluginJar });
List<ProfilerPlugin> plugins = filterDisablePlugin(original);
for (ProfilerPlugin plugin : plugins) {
if (logger.isInfoEnabled()) {
logger.info("{} Plugin {}:{}", plugin.getClass(), PluginConfig.PINPOINT_PLUGIN_PACKAGE, pluginPackageList);
}
logger.info("Loading plugin:{} pluginPackage:{}", plugin.getClass().getName(), plugin);
PluginConfig pluginConfig = new PluginConfig(pluginJar, pluginFilterChain);
final ClassInjector classInjector = new JarProfilerPluginClassInjector(pluginConfig, instrumentEngine);
final SetupResult result = pluginSetup.setupPlugin(plugin, classInjector);
pluginContexts.add(result);
}
}
return pluginContexts;
}
use of com.navercorp.pinpoint.bootstrap.plugin.ProfilerPlugin in project pinpoint by naver.
the class MockPluginContextLoadResult method load.
private List<SetupResult> load() {
List<ProfilerPlugin> plugins = PluginLoader.load(ProfilerPlugin.class, ClassLoader.getSystemClassLoader());
List<SetupResult> pluginContexts = new ArrayList<SetupResult>();
ClassInjector classInjector = new TestProfilerPluginClassLoader();
PluginSetup pluginSetup = new MockPluginSetup(profilerConfig, instrumentEngine, dynamicTransformTrigger);
for (ProfilerPlugin plugin : plugins) {
SetupResult context = pluginSetup.setupPlugin(plugin, classInjector);
pluginContexts.add(context);
}
return pluginContexts;
}
use of com.navercorp.pinpoint.bootstrap.plugin.ProfilerPlugin in project pinpoint by naver.
the class ProfilerPluginLoader method filterDisablePlugin.
private List<ProfilerPlugin> filterDisablePlugin(List<ProfilerPlugin> plugins) {
List<String> disabled = profilerConfig.getDisabledPlugins();
List<ProfilerPlugin> result = new ArrayList<ProfilerPlugin>();
for (ProfilerPlugin plugin : plugins) {
if (disabled.contains(plugin.getClass().getName())) {
logger.info("Skip disabled plugin: {}", plugin.getClass().getName());
continue;
}
result.add(plugin);
}
return result;
}
use of com.navercorp.pinpoint.bootstrap.plugin.ProfilerPlugin in project pinpoint by naver.
the class JarProfilerPluginClassInjectorTest method testInjectClass.
@Test
public void testInjectClass() throws Exception {
final URL sampleJar = getSampleJar("org.slf4j.impl.Log4jLoggerAdapter");
final ClassLoader contextTypeMatchClassLoader = createContextTypeMatchClassLoader(new URL[] { sampleJar });
final ProfilerPlugin profilerPlugin = Mockito.mock(ProfilerPlugin.class);
final PluginPackageFilter pluginPackageFilter = new PluginPackageFilter(Arrays.asList(LOG4_IMPL));
PluginConfig pluginConfig = new PluginConfig(sampleJar, pluginPackageFilter);
logger.debug("pluginConfig:{}", pluginConfig);
PlainClassLoaderHandler injector = new PlainClassLoaderHandler(pluginConfig);
final Class<?> loggerClass = injector.injectClass(contextTypeMatchClassLoader, logger.getClass().getName());
logger.debug("ClassLoader{}", loggerClass.getClassLoader());
Assert.assertEquals("check className", loggerClass.getName(), "org.slf4j.impl.Log4jLoggerAdapter");
Assert.assertEquals("check ClassLoader", loggerClass.getClassLoader().getClass().getName(), CONTEXT_TYPE_MATCH_CLASS_LOADER);
}
Aggregations