mirror of
				https://github.com/scm-manager/scm-manager.git
				synced 2025-10-31 10:35:56 +01:00 
			
		
		
		
	Collect metrics over lifetime of working copies (#1591)
Capture metrics about the lifetime of working copies used, for example, by the merge and modify commands. Working copies are internal repository clones that can place a large load on the server. Therefore, these metrics can be helpful in identifying sources of large server load. Co-authored-by: Sebastian Sdorra <sebastian.sdorra@cloudogu.com>
This commit is contained in:
		| @@ -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<File, File, SvnContext> implements SvnWorkingCopyFactory { | ||||
|  | ||||
|   @Inject | ||||
|   public SimpleSvnWorkingCopyFactory(WorkingCopyPool workingCopyPool) { | ||||
|     super(workingCopyPool); | ||||
|   public SimpleSvnWorkingCopyFactory(WorkingCopyPool workingCopyPool, MeterRegistry meterRegistry) { | ||||
|     super(workingCopyPool, meterRegistry); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   | ||||
| @@ -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<File, File> 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<File, File> 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<File, File> 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<File, File> workingCopy = factory.createWorkingCopy(createContext(), null); | ||||
|     File directory = workingCopy.getWorkingRepository(); | ||||
|   | ||||
| @@ -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); | ||||
|   } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user