mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-12-21 15:59:48 +01:00
Core metrics (#1586)
Expose metrics for http requests and executor services.
This commit is contained in:
@@ -25,8 +25,10 @@
|
||||
package sonia.scm.web;
|
||||
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
import io.micrometer.core.instrument.MeterRegistry;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import sonia.scm.metrics.Metrics;
|
||||
import sonia.scm.repository.RepositoryHookType;
|
||||
import sonia.scm.repository.spi.GitHookContextProvider;
|
||||
import sonia.scm.repository.spi.HookEventFacade;
|
||||
@@ -59,9 +61,9 @@ public class GitHookEventFacade implements Closeable {
|
||||
private final ExecutorService internalThreadHookHandler;
|
||||
|
||||
@Inject
|
||||
public GitHookEventFacade(HookEventFacade hookEventFacade) {
|
||||
public GitHookEventFacade(HookEventFacade hookEventFacade, MeterRegistry registry) {
|
||||
this.hookEventFacade = hookEventFacade;
|
||||
this.internalThreadHookHandler = createInternalThreadHookHandlerPool();
|
||||
this.internalThreadHookHandler = createInternalThreadHookHandlerPool(registry);
|
||||
}
|
||||
|
||||
public void fire(RepositoryHookType type, GitHookContextProvider context) {
|
||||
@@ -122,12 +124,14 @@ public class GitHookEventFacade implements Closeable {
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
private ExecutorService createInternalThreadHookHandlerPool() {
|
||||
return Executors.newCachedThreadPool(
|
||||
private ExecutorService createInternalThreadHookHandlerPool(MeterRegistry registry) {
|
||||
ExecutorService executorService = Executors.newCachedThreadPool(
|
||||
new ThreadFactoryBuilder()
|
||||
.setNameFormat("GitInternalThreadHookHandler-%d")
|
||||
.build()
|
||||
);
|
||||
Metrics.executor(registry, executorService, "GitInternalHookHandler", "cached");
|
||||
return executorService;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
|
||||
import org.eclipse.jgit.transport.ScmTransportProtocol;
|
||||
import org.eclipse.jgit.transport.Transport;
|
||||
import org.junit.rules.ExternalResource;
|
||||
@@ -49,7 +50,7 @@ class BindTransportProtocolRule extends ExternalResource {
|
||||
@Override
|
||||
protected void before() {
|
||||
HookContextFactory hookContextFactory = new HookContextFactory(mock(PreProcessorUtil.class));
|
||||
hookEventFacade = new GitHookEventFacade(new HookEventFacade(of(repositoryManager), hookContextFactory));
|
||||
hookEventFacade = new GitHookEventFacade(new HookEventFacade(of(repositoryManager), hookContextFactory), new SimpleMeterRegistry());
|
||||
GitRepositoryHandler gitRepositoryHandler = mock(GitRepositoryHandler.class);
|
||||
scmTransportProtocol = new ScmTransportProtocol(of(GitTestHelper.createConverterFactory()), of(hookEventFacade), of(gitRepositoryHandler));
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.Status;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
@@ -67,7 +68,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase
|
||||
@Before
|
||||
public void bindScmProtocol() throws IOException {
|
||||
HookContextFactory hookContextFactory = new HookContextFactory(mock(PreProcessorUtil.class));
|
||||
hookEventFacade = new GitHookEventFacade(new HookEventFacade(of(mock(RepositoryManager.class)), hookContextFactory));
|
||||
hookEventFacade = new GitHookEventFacade(new HookEventFacade(of(mock(RepositoryManager.class)), hookContextFactory), new SimpleMeterRegistry());
|
||||
GitRepositoryHandler gitRepositoryHandler = mock(GitRepositoryHandler.class);
|
||||
proto = new ScmTransportProtocol(of(GitTestHelper.createConverterFactory()), of(hookEventFacade), of(gitRepositoryHandler));
|
||||
Transport.register(proto);
|
||||
|
||||
Reference in New Issue
Block a user