use of org.sonatype.aether.spi.connector.ArtifactUpload in project sonatype-aether by sonatype.
the class ConnectorTestUtils method createTransfers.
/**
* Creates transfer objects according to the given class. If the file parameter is {@code null}, a new temporary
* file will be created for downloads. Uploads will just use the parameter as it is.
*/
public static <T extends Transfer> List<T> createTransfers(Class<T> cls, int count, File file) {
ArrayList<T> ret = new ArrayList<T>();
Object item;
if (ArtifactTransfer.class.isAssignableFrom(cls)) {
item = new StubArtifact("testGroup", "testArtifact", "sources", "jar", "will be replaced");
} else {
item = new StubMetadata("testGroup", "testArtifact", "will be replaced", "jar", Metadata.Nature.RELEASE_OR_SNAPSHOT, file);
}
for (int i = 0; i < count; i++) {
String context = null;
String checksumPolicy = RepositoryPolicy.CHECKSUM_POLICY_IGNORE;
Object obj = null;
if (cls.isAssignableFrom(ArtifactUpload.class)) {
Artifact artifact = ((Artifact) item).setVersion((i + 1) + "-test");
obj = new ArtifactUpload(artifact, file);
} else if (cls.isAssignableFrom(ArtifactDownload.class)) {
try {
Artifact artifact = ((Artifact) item).setVersion((i + 1) + "-test");
obj = new ArtifactDownload(artifact, context, safeFile(file), checksumPolicy);
} catch (IOException e) {
throw new RuntimeException(e.getMessage(), e);
}
} else if (cls.isAssignableFrom(MetadataUpload.class)) {
Metadata metadata = ((StubMetadata) item).setVersion((i + 1) + "-test");
obj = new MetadataUpload(metadata, file);
} else if (cls.isAssignableFrom(MetadataDownload.class)) {
try {
Metadata metadata = ((StubMetadata) item).setVersion((i + 1) + "-test");
obj = new MetadataDownload(metadata, context, safeFile(file), checksumPolicy);
} catch (IOException e) {
throw new RuntimeException(e.getMessage(), e);
}
}
ret.add(cls.cast(obj));
}
return ret;
}
use of org.sonatype.aether.spi.connector.ArtifactUpload in project sonatype-aether by sonatype.
the class TransferEventTester method testFailedTransferEvents.
/**
* Test the order of events and their properties for the unsuccessful up- and download of artifact and metadata.
* Failure is triggered by setting the file to transfer to {@code null} for uploads, and asking for a non-existent
* item for downloads.
*/
public static void testFailedTransferEvents(RepositoryConnectorFactory factory, TestRepositorySystemSession session, RemoteRepository repository) throws NoRepositoryConnectorException, IOException {
RecordingTransferListener listener = new RecordingTransferListener(session.getTransferListener());
session.setTransferListener(listener);
RepositoryConnector connector = factory.newInstance(session, repository);
byte[] pattern = "tmpFile".getBytes("us-ascii");
File tmpFile = TestFileUtils.createTempFile(pattern, 10000);
Collection<ArtifactUpload> artUps = ConnectorTestUtils.createTransfers(ArtifactUpload.class, 1, null);
Collection<ArtifactDownload> artDowns = ConnectorTestUtils.createTransfers(ArtifactDownload.class, 1, tmpFile);
Collection<MetadataUpload> metaUps = ConnectorTestUtils.createTransfers(MetadataUpload.class, 1, null);
Collection<MetadataDownload> metaDowns = ConnectorTestUtils.createTransfers(MetadataDownload.class, 1, tmpFile);
connector.put(artUps, null);
LinkedList<TransferEvent> events = new LinkedList<TransferEvent>(listener.getEvents());
checkFailedEvents(events, null);
listener.clear();
connector.get(artDowns, null);
events = new LinkedList<TransferEvent>(listener.getEvents());
checkFailedEvents(events, null);
listener.clear();
connector.put(null, metaUps);
events = new LinkedList<TransferEvent>(listener.getEvents());
checkFailedEvents(events, null);
listener.clear();
connector.get(null, metaDowns);
events = new LinkedList<TransferEvent>(listener.getEvents());
checkFailedEvents(events, null);
connector.close();
session.setTransferListener(null);
}
use of org.sonatype.aether.spi.connector.ArtifactUpload in project sonatype-aether by sonatype.
the class TransferEventTester method testSuccessfulTransferEvents.
/**
* Test the order of events and their properties for the successful up- and download of artifact and metadata.
*/
public static void testSuccessfulTransferEvents(RepositoryConnectorFactory factory, TestRepositorySystemSession session, RemoteRepository repository) throws NoRepositoryConnectorException, IOException {
RecordingTransferListener listener = new RecordingTransferListener(session.getTransferListener());
session.setTransferListener(listener);
RepositoryConnector connector = factory.newInstance(session, repository);
byte[] pattern = "tmpFile".getBytes();
File tmpFile = TestFileUtils.createTempFile(pattern, 10000);
long expectedBytes = tmpFile.length();
Collection<ArtifactUpload> artUps = ConnectorTestUtils.createTransfers(ArtifactUpload.class, 1, tmpFile);
Collection<ArtifactDownload> artDowns = ConnectorTestUtils.createTransfers(ArtifactDownload.class, 1, tmpFile);
Collection<MetadataUpload> metaUps = ConnectorTestUtils.createTransfers(MetadataUpload.class, 1, tmpFile);
Collection<MetadataDownload> metaDowns = ConnectorTestUtils.createTransfers(MetadataDownload.class, 1, tmpFile);
connector.put(artUps, null);
LinkedList<TransferEvent> events = new LinkedList<TransferEvent>(listener.getEvents());
checkEvents(events, expectedBytes);
listener.clear();
connector.get(artDowns, null);
events = new LinkedList<TransferEvent>(listener.getEvents());
checkEvents(events, expectedBytes);
listener.clear();
connector.put(null, metaUps);
events = new LinkedList<TransferEvent>(listener.getEvents());
checkEvents(events, expectedBytes);
listener.clear();
connector.get(null, metaDowns);
events = new LinkedList<TransferEvent>(listener.getEvents());
checkEvents(events, expectedBytes);
connector.close();
session.setTransferListener(null);
}
use of org.sonatype.aether.spi.connector.ArtifactUpload in project sonatype-aether by sonatype.
the class ConnectorTestSuite method testProgressEventsDataBuffer.
@Test
public void testProgressEventsDataBuffer() throws UnsupportedEncodingException, IOException, NoSuchAlgorithmException, NoRepositoryConnectorException {
byte[] bytes = "These are the test contents.\n".getBytes("UTF-8");
int count = 120000;
MessageDigest digest = MessageDigest.getInstance("SHA-1");
for (int i = 0; i < count; i++) {
digest.update(bytes);
}
byte[] hash = digest.digest();
File file = TestFileUtils.createTempFile(bytes, count);
Artifact artifact = new StubArtifact("gid:aid:ext:ver");
ArtifactUpload upA = new ArtifactUpload(artifact, file);
File dir = TestFileUtils.createTempDir("con-test");
File downAFile = new File(dir, "downA.file");
downAFile.deleteOnExit();
ArtifactDownload downA = new ArtifactDownload(artifact, "", downAFile, RepositoryPolicy.CHECKSUM_POLICY_FAIL);
Metadata metadata = new StubMetadata("gid", "aid", "ver", "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT);
MetadataUpload upM = new MetadataUpload(metadata, file);
File downMFile = new File(dir, "downM.file");
downMFile.deleteOnExit();
MetadataDownload downM = new MetadataDownload(metadata, "", downMFile, RepositoryPolicy.CHECKSUM_POLICY_FAIL);
DigestingTransferListener listener = new DigestingTransferListener();
session.setTransferListener(listener);
RepositoryConnector connector = factory().newInstance(session, repository);
connector.put(Arrays.asList(upA), null);
assertArrayEquals(hash, listener.getHash());
listener.rewind();
connector.put(null, Arrays.asList(upM));
assertArrayEquals(hash, listener.getHash());
listener.rewind();
connector.get(Arrays.asList(downA), null);
assertArrayEquals(hash, listener.getHash());
listener.rewind();
connector.get(null, Arrays.asList(downM));
assertArrayEquals(hash, listener.getHash());
listener.rewind();
connector.close();
}
use of org.sonatype.aether.spi.connector.ArtifactUpload in project sonatype-aether by sonatype.
the class ConnectorTestSuite method testBlocking.
@Test
public void testBlocking() throws NoRepositoryConnectorException, IOException {
RepositoryConnector connector = factory().newInstance(session, repository);
int count = 10;
byte[] pattern = "tmpFile".getBytes("UTF-8");
File tmpFile = TestFileUtils.createTempFile(pattern, 100000);
List<ArtifactUpload> artUps = ConnectorTestUtils.createTransfers(ArtifactUpload.class, count, tmpFile);
List<MetadataUpload> metaUps = ConnectorTestUtils.createTransfers(MetadataUpload.class, count, tmpFile);
List<ArtifactDownload> artDowns = ConnectorTestUtils.createTransfers(ArtifactDownload.class, count, null);
List<MetadataDownload> metaDowns = ConnectorTestUtils.createTransfers(MetadataDownload.class, count, null);
// this should block until all transfers are done - racing condition, better way to test this?
connector.put(artUps, metaUps);
connector.get(artDowns, metaDowns);
for (int i = 0; i < count; i++) {
ArtifactUpload artUp = artUps.get(i);
MetadataUpload metaUp = metaUps.get(i);
ArtifactDownload artDown = artDowns.get(i);
MetadataDownload metaDown = metaDowns.get(i);
assertTrue(Transfer.State.DONE.equals(artUp.getState()));
assertTrue(Transfer.State.DONE.equals(artDown.getState()));
assertTrue(Transfer.State.DONE.equals(metaUp.getState()));
assertTrue(Transfer.State.DONE.equals(metaDown.getState()));
}
connector.close();
}
Aggregations