Skip to content

Commit

Permalink
Run the MavenDeployer in threads-per-leaf node
Browse files Browse the repository at this point in the history
This change allows for the configuration of the provisioner/deployer
with a thread count. It makes the MavenRepositoryDeployer a singleton
and copies the leaf-node deployment code into a Callable class

Signed-off-by: Samuel Dacanay <[email protected]>
  • Loading branch information
dakaneye committed Oct 20, 2024
1 parent dcdb4ce commit e1dbb79
Show file tree
Hide file tree
Showing 4 changed files with 220 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ release.properties
local-cache
maven-repository-provisioner.log
.checkstyle
**/*.iml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public class Configuration
private Boolean verifyOnly = false;

@Parameter( names = {"-dt", "-deployThreads"},
description = "Number of threads to use for deploying artifacts, default is 5." )
description = "Number of threads to use for deploying artifacts. Defaults to 5." )
private int deployThreads = 5;

public void setSourceUrl( String sourceUrl )
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package com.simpligility.maven.provisioner;

import com.simpligility.maven.Gav;
import com.simpligility.maven.MavenConstants;
import com.simpligility.maven.provisioner.helpers.RepositorySystemImpl;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.repository.RemoteRepository;
import org.junit.Before;
import org.junit.Test;

import java.io.File;
import java.util.Arrays;
import java.util.Collection;

import static org.junit.Assert.assertEquals;

public class MavenRepositoryDeploymentCallableTest
{

private Gav gav;
private Collection<File> artifacts;
private RemoteRepository distRepo;
private RepositorySystem system;
private DefaultRepositorySystemSession session;
private MavenRepositoryDeploymentCallable callable;

@Before
public void setUp( )
{
gav = new Gav( "groupId", "artifactId", "version", "jar" );
artifacts = Arrays.asList( new File( "artifact1.jar" ), new File( "artifact2.jar" ) );
distRepo = new RemoteRepository.Builder( "id", "type", "url" ).build();
system = new RepositorySystemImpl();
session = new DefaultRepositorySystemSession();
callable = new MavenRepositoryDeploymentCallable( gav, artifacts, distRepo, false, system, session );
}

@Test
public void testGetExtension( )
{
File file1 = new File( "artifact1.jar" );
File file2 = new File( "archive.tar.gz" );
File file3 = new File( "document.txt" );

assertEquals( "jar", callable.getExtension( file1 ) );
assertEquals( "tar.gz", callable.getExtension( file2 ) );
assertEquals( "txt", callable.getExtension( file3 ) );
}

@Test
public void testGetArtifact( )
{
File pomFile = new File( "artifactId-version.pom" );
File jarFile = new File( "artifactId-version.jar" );
File sourceFile = new File( "artifactId-version-sources.jar" );
File javadocFile = new File( "artifactId-version-javadoc.jar" );
File customFile = new File( "artifactId-version-custom.ext" );

assertEquals( new DefaultArtifact( "groupId", "artifactId", MavenConstants.POM, "version" ),
callable.getArtifact( gav, pomFile ) );
assertEquals( new DefaultArtifact( "groupId", "artifactId", MavenConstants.JAR, "version" ),
callable.getArtifact( gav, jarFile ) );
assertEquals( new DefaultArtifact( "groupId",
"artifactId",
MavenConstants.SOURCES,
MavenConstants.JAR,
"version" ), callable.getArtifact( gav, sourceFile ) );
assertEquals( new DefaultArtifact( "groupId",
"artifactId",
MavenConstants.JAVADOC,
MavenConstants.JAR,
"version" ), callable.getArtifact( gav, javadocFile ) );
assertEquals( new DefaultArtifact( "groupId", "artifactId", "custom", "ext", "version" ),
callable.getArtifact( gav, customFile ) );
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
package com.simpligility.maven.provisioner.helpers;

import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.SyncContext;
import org.eclipse.aether.collection.CollectRequest;
import org.eclipse.aether.collection.CollectResult;
import org.eclipse.aether.collection.DependencyCollectionException;
import org.eclipse.aether.deployment.DeployRequest;
import org.eclipse.aether.deployment.DeployResult;
import org.eclipse.aether.deployment.DeploymentException;
import org.eclipse.aether.installation.InstallRequest;
import org.eclipse.aether.installation.InstallResult;
import org.eclipse.aether.installation.InstallationException;
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.repository.LocalRepositoryManager;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.resolution.ArtifactDescriptorException;
import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
import org.eclipse.aether.resolution.ArtifactDescriptorResult;
import org.eclipse.aether.resolution.ArtifactRequest;
import org.eclipse.aether.resolution.ArtifactResolutionException;
import org.eclipse.aether.resolution.ArtifactResult;
import org.eclipse.aether.resolution.DependencyRequest;
import org.eclipse.aether.resolution.DependencyResolutionException;
import org.eclipse.aether.resolution.DependencyResult;
import org.eclipse.aether.resolution.MetadataRequest;
import org.eclipse.aether.resolution.MetadataResult;
import org.eclipse.aether.resolution.VersionRangeRequest;
import org.eclipse.aether.resolution.VersionRangeResolutionException;
import org.eclipse.aether.resolution.VersionRangeResult;
import org.eclipse.aether.resolution.VersionRequest;
import org.eclipse.aether.resolution.VersionResolutionException;
import org.eclipse.aether.resolution.VersionResult;

import java.util.Collection;
import java.util.List;

public class RepositorySystemImpl implements RepositorySystem
{
@Override
public VersionRangeResult resolveVersionRange( RepositorySystemSession repositorySystemSession,
VersionRangeRequest versionRangeRequest )
throws VersionRangeResolutionException
{
return null;
}

@Override
public VersionResult resolveVersion( RepositorySystemSession repositorySystemSession,
VersionRequest versionRequest ) throws VersionResolutionException
{
return null;
}

@Override
public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession repositorySystemSession,
ArtifactDescriptorRequest artifactDescriptorRequest )
throws ArtifactDescriptorException
{
return null;
}

@Override
public CollectResult collectDependencies( RepositorySystemSession repositorySystemSession,
CollectRequest collectRequest ) throws DependencyCollectionException
{
return null;
}

@Override
public DependencyResult resolveDependencies( RepositorySystemSession repositorySystemSession,
DependencyRequest dependencyRequest )
throws DependencyResolutionException
{
return null;
}

@Override
public ArtifactResult resolveArtifact( RepositorySystemSession repositorySystemSession,
ArtifactRequest artifactRequest ) throws ArtifactResolutionException
{
return null;
}

@Override
public List<ArtifactResult> resolveArtifacts( RepositorySystemSession repositorySystemSession,
Collection<? extends ArtifactRequest> collection )
throws ArtifactResolutionException
{
return List.of();
}

@Override
public List<MetadataResult> resolveMetadata( RepositorySystemSession repositorySystemSession,
Collection<? extends MetadataRequest> collection )
{
return List.of();
}

@Override
public InstallResult install( RepositorySystemSession repositorySystemSession,
InstallRequest installRequest ) throws InstallationException
{
return null;
}

@Override
public DeployResult deploy( RepositorySystemSession repositorySystemSession,
DeployRequest deployRequest ) throws DeploymentException
{
return null;
}

@Override
public LocalRepositoryManager newLocalRepositoryManager( RepositorySystemSession repositorySystemSession,
LocalRepository localRepository )
{
return null;
}

@Override public SyncContext newSyncContext( RepositorySystemSession repositorySystemSession, boolean b )
{
return null;
}

@Override
public List<RemoteRepository> newResolutionRepositories( RepositorySystemSession repositorySystemSession,
List<RemoteRepository> list )
{
return List.of();
}

@Override
public RemoteRepository newDeploymentRepository( RepositorySystemSession repositorySystemSession,
RemoteRepository remoteRepository )
{
return null;
}
}

0 comments on commit e1dbb79

Please sign in to comment.