diff --git a/gradle/changelog/workingcopy_metrics.yaml b/gradle/changelog/workingcopy_metrics.yaml new file mode 100644 index 0000000000..fde1b4082b --- /dev/null +++ b/gradle/changelog/workingcopy_metrics.yaml @@ -0,0 +1,2 @@ +- type: added + description: Adds metrics over lifetime duration of working copies ([#1591](https://github.com/scm-manager/scm-manager/pull/1591)) diff --git a/scm-core/src/main/java/sonia/scm/metrics/Metrics.java b/scm-core/src/main/java/sonia/scm/metrics/Metrics.java index ba615eba91..e5aa055710 100644 --- a/scm-core/src/main/java/sonia/scm/metrics/Metrics.java +++ b/scm-core/src/main/java/sonia/scm/metrics/Metrics.java @@ -26,6 +26,7 @@ package sonia.scm.metrics; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Tag; +import io.micrometer.core.instrument.Timer; import io.micrometer.core.instrument.binder.jvm.ExecutorServiceMetrics; import java.util.Collections; @@ -56,4 +57,17 @@ public final class Metrics { Collections.singleton(Tag.of("type", type)) ).bindTo(registry); } + + /** + * Collect metrics from an {@link sonia.scm.repository.work.WorkingCopy}. + * + * @param registry meter registry + * @param type type of repository + */ + public static Timer workingCopyTimer(MeterRegistry registry, String type) { + return Timer.builder("scm.workingcopy.duration") + .description("Duration of temporary working copy lifetime") + .tags("type", type) + .register(registry); + } } diff --git a/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java b/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java index a62869d740..9454994d15 100644 --- a/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java +++ b/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java @@ -24,8 +24,12 @@ package sonia.scm.repository.work; +import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.Timer; +import io.micrometer.core.instrument.composite.CompositeMeterRegistry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import sonia.scm.metrics.Metrics; import sonia.scm.repository.Repository; import sonia.scm.repository.RepositoryProvider; @@ -100,9 +104,28 @@ public abstract class SimpleWorkingCopyFactory parentAndClone) { + try { + closeResources(parentAndClone); + } finally { + sample.stop(Metrics.workingCopyTimer(meterRegistry, repositoryContext.get().getType())); + } + } + + private void closeResources(ParentAndClone parentAndClone) { try { closeWorkingCopy(parentAndClone.getClone()); } catch (Exception e) { diff --git a/scm-core/src/test/java/sonia/scm/repository/work/SimpleWorkingCopyFactoryTest.java b/scm-core/src/test/java/sonia/scm/repository/work/SimpleWorkingCopyFactoryTest.java index 426eb388cb..84b56c0f70 100644 --- a/scm-core/src/test/java/sonia/scm/repository/work/SimpleWorkingCopyFactoryTest.java +++ b/scm-core/src/test/java/sonia/scm/repository/work/SimpleWorkingCopyFactoryTest.java @@ -24,6 +24,9 @@ package sonia.scm.repository.work; +import io.micrometer.core.instrument.Meter; +import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -62,8 +65,11 @@ public class SimpleWorkingCopyFactoryTest { private boolean workdirIsCached = false; private File workdir; + private MeterRegistry meterRegistry; + @Before public void initFactory() throws IOException { + meterRegistry = new SimpleMeterRegistry(); WorkdirProvider workdirProvider = new WorkdirProvider(temporaryFolder.newFolder(), repositoryLocationResolver, false); WorkingCopyPool configurableTestWorkingCopyPool = new WorkingCopyPool() { @Override @@ -83,7 +89,7 @@ public class SimpleWorkingCopyFactoryTest { public void shutdown() { } }; - simpleWorkingCopyFactory = new SimpleWorkingCopyFactory(configurableTestWorkingCopyPool) { + simpleWorkingCopyFactory = new SimpleWorkingCopyFactory(configurableTestWorkingCopyPool, meterRegistry) { @Override protected void closeRepository(Closeable repository) throws IOException { repository.close(); @@ -126,6 +132,10 @@ public class SimpleWorkingCopyFactoryTest { try (WorkingCopy workingCopy = simpleWorkingCopyFactory.createWorkingCopy(context, null)) {} verify(parent).close(); + assertThat(meterRegistry.getMeters()).hasSize(1); + Meter.Id meterId = meterRegistry.getMeters().get(0).getId(); + assertThat(meterId.getName()).isEqualTo("scm.workingcopy.duration"); + assertThat(meterId.getTag("type")).isEqualTo("git"); } @Test @@ -134,6 +144,10 @@ public class SimpleWorkingCopyFactoryTest { try (WorkingCopy workingCopy = simpleWorkingCopyFactory.createWorkingCopy(context, null)) {} verify(clone).close(); + assertThat(meterRegistry.getMeters()).hasSize(1); + Meter.Id meterId = meterRegistry.getMeters().get(0).getId(); + assertThat(meterId.getName()).isEqualTo("scm.workingcopy.duration"); + assertThat(meterId.getTag("type")).isEqualTo("git"); } @Test diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/SimpleGitWorkingCopyFactory.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/SimpleGitWorkingCopyFactory.java index a4fa38111e..5dc440fb6e 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/SimpleGitWorkingCopyFactory.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/SimpleGitWorkingCopyFactory.java @@ -24,6 +24,7 @@ package sonia.scm.repository.spi; +import io.micrometer.core.instrument.MeterRegistry; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.transport.ScmTransportProtocol; import sonia.scm.repository.GitWorkingCopyFactory; @@ -37,8 +38,8 @@ import java.io.File; public class SimpleGitWorkingCopyFactory extends SimpleWorkingCopyFactory implements GitWorkingCopyFactory { @Inject - public SimpleGitWorkingCopyFactory(WorkingCopyPool workdirProvider) { - super(workdirProvider); + public SimpleGitWorkingCopyFactory(WorkingCopyPool workdirProvider, MeterRegistry meterRegistry) { + super(workdirProvider, meterRegistry); } @Override diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommandTest.java index c4dd3d46f4..68dc5f6464 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommandTest.java @@ -26,6 +26,7 @@ package sonia.scm.repository.spi; import com.github.sdorra.shiro.ShiroRule; import com.github.sdorra.shiro.SubjectAware; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.apache.shiro.subject.SimplePrincipalCollection; import org.apache.shiro.subject.Subject; import org.eclipse.jgit.api.Git; @@ -516,7 +517,7 @@ public class GitMergeCommandTest extends AbstractGitCommandTestBase { } private GitMergeCommand createCommand(Consumer interceptor) { - return new GitMergeCommand(createContext(), new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver)))) { + return new GitMergeCommand(createContext(), new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver)), new SimpleMeterRegistry())) { @Override > R inClone(Function workerSupplier, GitWorkingCopyFactory workingCopyFactory, String initialBranch) { Function interceptedWorkerSupplier = git -> { diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommand_Conflict_Test.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommand_Conflict_Test.java index 491845fba3..568db57e2e 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommand_Conflict_Test.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommand_Conflict_Test.java @@ -24,6 +24,7 @@ package sonia.scm.repository.spi; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.junit.Rule; import org.junit.Test; import sonia.scm.repository.spi.MergeConflictResult.SingleMergeConflict; @@ -92,7 +93,7 @@ public class GitMergeCommand_Conflict_Test extends AbstractGitCommandTestBase { } private MergeConflictResult computeMergeConflictResult(String branchToMerge, String targetBranch) { - GitMergeCommand gitMergeCommand = new GitMergeCommand(createContext(), new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver)))); + GitMergeCommand gitMergeCommand = new GitMergeCommand(createContext(), new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver)), new SimpleMeterRegistry())); MergeCommandRequest mergeCommandRequest = new MergeCommandRequest(); mergeCommandRequest.setBranchToMerge(branchToMerge); mergeCommandRequest.setTargetBranch(targetBranch); diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTestBase.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTestBase.java index 005d0f8127..b1815b44f2 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTestBase.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTestBase.java @@ -26,6 +26,7 @@ package sonia.scm.repository.spi; import com.github.sdorra.shiro.ShiroRule; import com.github.sdorra.shiro.SubjectAware; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.errors.CorruptObjectException; @@ -72,7 +73,7 @@ class GitModifyCommandTestBase extends AbstractGitCommandTestBase { GitModifyCommand createCommand() { return new GitModifyCommand( createContext(), - new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver))), + new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver)), new SimpleMeterRegistry()), lfsBlobStoreFactory, createGitRepositoryConfigStoreProvider()); } diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/SimpleGitWorkingCopyFactoryTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/SimpleGitWorkingCopyFactoryTest.java index 64532956f2..6c72e1ef30 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/SimpleGitWorkingCopyFactoryTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/SimpleGitWorkingCopyFactoryTest.java @@ -82,7 +82,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase @Test public void emptyPoolShouldCreateNewWorkdir() { - SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); File masterRepo = createRepositoryDirectory(); try (WorkingCopy workingCopy = factory.createWorkingCopy(createContext(), null)) { @@ -100,7 +100,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase @Test public void shouldCheckoutInitialBranch() { - SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); try (WorkingCopy workingCopy = factory.createWorkingCopy(createContext(), "test-branch")) { assertThat(new File(workingCopy.getWorkingRepository().getWorkTree(), "a.txt")) @@ -112,7 +112,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase @Test public void shouldCheckoutDefaultBranch() { - SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); try (WorkingCopy workingCopy = factory.createWorkingCopy(createContext(), null)) { assertThat(new File(workingCopy.getWorkingRepository().getWorkTree(), "a.txt")) @@ -124,7 +124,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase @Test public void cloneFromPoolShouldNotBeReused() { - SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); File firstDirectory; try (WorkingCopy workingCopy = factory.createWorkingCopy(createContext(), null)) { @@ -138,7 +138,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase @Test public void cloneFromPoolShouldBeDeletedOnClose() { - SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); File directory; try (WorkingCopy workingCopy = factory.createWorkingCopy(createContext(), null)) { @@ -149,7 +149,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase @Test public void shouldReclaimCleanDirectoryWithSameBranch() throws Exception { - SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); File workdir = createExistingClone(factory); factory.reclaim(createContext(), workdir, "master"); @@ -159,7 +159,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase @Test public void shouldReclaimCleanDirectoryWithOtherBranch() throws Exception { - SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); File workdir = createExistingClone(factory); factory.reclaim(createContext(), workdir, "test-branch"); @@ -169,7 +169,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase @Test public void shouldReclaimDirectoryWithDeletedFileInIndex() throws Exception { - SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); File workdir = createExistingClone(factory); Git.open(workdir).rm().addFilepattern("a.txt").call(); @@ -180,7 +180,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase @Test public void shouldReclaimDirectoryWithDeletedFileInDirectory() throws Exception { - SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); File workdir = createExistingClone(factory); Files.delete(workdir.toPath().resolve("a.txt")); @@ -191,7 +191,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase @Test public void shouldReclaimDirectoryWithAdditionalFileInDirectory() throws Exception { - SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleGitWorkingCopyFactory factory = new SimpleGitWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); File workdir = createExistingClone(factory); Path newDirectory = workdir.toPath().resolve("new"); Files.createDirectories(newDirectory); diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactory.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactory.java index 57b032e466..fd4541fcbd 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactory.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactory.java @@ -32,6 +32,7 @@ import com.aragost.javahg.commands.PullCommand; import com.aragost.javahg.commands.StatusCommand; import com.aragost.javahg.commands.UpdateCommand; import com.aragost.javahg.commands.flags.CloneCommandFlags; +import io.micrometer.core.instrument.MeterRegistry; import sonia.scm.repository.HgExtensions; import sonia.scm.repository.InternalRepositoryException; import sonia.scm.repository.work.SimpleWorkingCopyFactory; @@ -45,8 +46,8 @@ import java.io.IOException; public class SimpleHgWorkingCopyFactory extends SimpleWorkingCopyFactory implements HgWorkingCopyFactory { @Inject - public SimpleHgWorkingCopyFactory(WorkingCopyPool workdirProvider) { - super(workdirProvider); + public SimpleHgWorkingCopyFactory(WorkingCopyPool workdirProvider, MeterRegistry meterRegistry) { + super(workdirProvider, meterRegistry); } @Override diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBranchCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBranchCommandTest.java index 6b77e23a9f..04f327afdc 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBranchCommandTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBranchCommandTest.java @@ -25,6 +25,7 @@ package sonia.scm.repository.spi; import com.aragost.javahg.commands.PullCommand; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.junit.Before; import org.junit.Test; import sonia.scm.repository.Branch; @@ -45,7 +46,7 @@ public class HgBranchCommandTest extends AbstractHgCommandTestBase { @Before public void initWorkingCopyFactory() { - workingCopyFactory = new SimpleHgWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver))) { + workingCopyFactory = new SimpleHgWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver)), new SimpleMeterRegistry()) { @Override public void configure(PullCommand pullCommand) { // we do not want to configure http hooks in this unit test diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java index 0bf63e1fe8..51756c7cce 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java @@ -24,6 +24,7 @@ package sonia.scm.repository.spi; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -51,7 +52,7 @@ public class HgModifyCommandTest extends AbstractHgCommandTestBase { @Before public void initHgModifyCommand() { - SimpleHgWorkingCopyFactory workingCopyFactory = new SimpleHgWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver))) { + SimpleHgWorkingCopyFactory workingCopyFactory = new SimpleHgWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver)), new SimpleMeterRegistry()) { @Override public void configure(com.aragost.javahg.commands.PullCommand pullCommand) { // we do not want to configure http hooks in this unit test diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgTagCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgTagCommandTest.java index cffa63fb65..d02c73eaa0 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgTagCommandTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgTagCommandTest.java @@ -25,6 +25,7 @@ package sonia.scm.repository.spi; import com.aragost.javahg.commands.PullCommand; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.junit.Before; import org.junit.Test; import sonia.scm.repository.Tag; @@ -44,7 +45,7 @@ public class HgTagCommandTest extends AbstractHgCommandTestBase { @Before public void initWorkingCopyFactory() { - workingCopyFactory = new SimpleHgWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver))) { + workingCopyFactory = new SimpleHgWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(repositoryLocationResolver)), new SimpleMeterRegistry()) { @Override public void configure(PullCommand pullCommand) { // we do not want to configure http hooks in this unit test diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactoryTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactoryTest.java index bfd708faef..61f2551a81 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactoryTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactoryTest.java @@ -25,6 +25,7 @@ package sonia.scm.repository.spi; import com.aragost.javahg.Repository; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -53,7 +54,7 @@ public class SimpleHgWorkingCopyFactoryTest extends AbstractHgCommandTestBase { @Before public void bindScmProtocol() throws IOException { workdirProvider = new WorkdirProvider(temporaryFolder.newFolder(), repositoryLocationResolver, false); - workingCopyFactory = new SimpleHgWorkingCopyFactory(new SimpleCachingWorkingCopyPool(workdirProvider)) { + workingCopyFactory = new SimpleHgWorkingCopyFactory(new SimpleCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()) { @Override public void configure(com.aragost.javahg.commands.PullCommand pullCommand) { // we do not want to configure http hooks in this unit test diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SimpleSvnWorkingCopyFactory.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SimpleSvnWorkingCopyFactory.java index a2996d4148..499f6f118d 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SimpleSvnWorkingCopyFactory.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SimpleSvnWorkingCopyFactory.java @@ -24,6 +24,7 @@ package sonia.scm.repository.spi; +import io.micrometer.core.instrument.MeterRegistry; import sonia.scm.repository.SvnWorkingCopyFactory; import sonia.scm.repository.work.SimpleWorkingCopyFactory; import sonia.scm.repository.work.WorkingCopyPool; @@ -34,8 +35,8 @@ import java.io.File; public class SimpleSvnWorkingCopyFactory extends SimpleWorkingCopyFactory implements SvnWorkingCopyFactory { @Inject - public SimpleSvnWorkingCopyFactory(WorkingCopyPool workingCopyPool) { - super(workingCopyPool); + public SimpleSvnWorkingCopyFactory(WorkingCopyPool workingCopyPool, MeterRegistry meterRegistry) { + super(workingCopyPool, meterRegistry); } @Override diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SimpleSvnWorkingCopyFactoryTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SimpleSvnWorkingCopyFactoryTest.java index 1fc0e0b4d4..30dec01525 100644 --- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SimpleSvnWorkingCopyFactoryTest.java +++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SimpleSvnWorkingCopyFactoryTest.java @@ -24,6 +24,7 @@ package sonia.scm.repository.spi; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -54,7 +55,7 @@ public class SimpleSvnWorkingCopyFactoryTest extends AbstractSvnCommandTestBase @Test public void shouldCheckoutLatestRevision() throws SVNException, IOException { - SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); try (WorkingCopy workingCopy = factory.createWorkingCopy(createContext(), null)) { assertThat(new File(workingCopy.getWorkingRepository(), "a.txt")) @@ -66,7 +67,7 @@ public class SimpleSvnWorkingCopyFactoryTest extends AbstractSvnCommandTestBase @Test public void cloneFromPoolShouldNotBeReused() { - SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); File firstDirectory; try (WorkingCopy workingCopy = factory.createWorkingCopy(createContext(), null)) { @@ -80,7 +81,7 @@ public class SimpleSvnWorkingCopyFactoryTest extends AbstractSvnCommandTestBase @Test public void shouldDeleteCloneOnClose() { - SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); + SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); File directory; File workingRepository; @@ -95,7 +96,7 @@ public class SimpleSvnWorkingCopyFactoryTest extends AbstractSvnCommandTestBase @Test public void shouldDeleteUntrackedFileOnReclaim() throws IOException { - SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new SimpleCachingWorkingCopyPool(workdirProvider)); + SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new SimpleCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); WorkingCopy workingCopy = factory.createWorkingCopy(createContext(), null); File directory = workingCopy.getWorkingRepository(); @@ -113,7 +114,7 @@ public class SimpleSvnWorkingCopyFactoryTest extends AbstractSvnCommandTestBase @Test public void shouldRestoreDeletedFileOnReclaim() throws IOException { - SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new SimpleCachingWorkingCopyPool(workdirProvider)); + SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new SimpleCachingWorkingCopyPool(workdirProvider), new SimpleMeterRegistry()); WorkingCopy workingCopy = factory.createWorkingCopy(createContext(), null); File directory = workingCopy.getWorkingRepository(); diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnModifyCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnModifyCommandTest.java index 832cb647e5..b82b70a717 100644 --- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnModifyCommandTest.java +++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnModifyCommandTest.java @@ -24,6 +24,7 @@ package sonia.scm.repository.spi; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.ThreadContext; import org.junit.After; @@ -57,7 +58,7 @@ public class SvnModifyCommandTest extends AbstractSvnCommandTestBase { @Before public void initSvnModifyCommand() { context = createContext(); - workingCopyFactory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(context.getDirectory(), repositoryLocationResolver, false))); + workingCopyFactory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(context.getDirectory(), repositoryLocationResolver, false)), new SimpleMeterRegistry()); svnModifyCommand = new SvnModifyCommand(context, workingCopyFactory); }