/*
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.cli.compiler.grape;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.transfer.TransferCancelledException;
import org.eclipse.aether.transfer.TransferEvent;
import org.eclipse.aether.transfer.TransferResource;
import org.junit.Before;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests for {@link DetailedProgressReporter}.
*
* @author Andy Wilkinson
*/
public final class DetailedProgressReporterTests {
private static final String REPOSITORY = "http://my.repository.com/";
private static final String ARTIFACT = "org/alpha/bravo/charlie/1.2.3/charlie-1.2.3.jar";
private final TransferResource resource = new TransferResource(REPOSITORY, ARTIFACT,
null, null);
private final ByteArrayOutputStream baos = new ByteArrayOutputStream();
private final PrintStream out = new PrintStream(this.baos);
private final DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
@Before
public void initialize() {
new DetailedProgressReporter(this.session, this.out);
}
@Test
public void downloading() throws TransferCancelledException {
TransferEvent startedEvent = new TransferEvent.Builder(this.session,
this.resource).build();
this.session.getTransferListener().transferStarted(startedEvent);
assertThat(new String(this.baos.toByteArray()))
.isEqualTo(String.format("Downloading: %s%s%n", REPOSITORY, ARTIFACT));
}
@Test
public void downloaded() throws InterruptedException {
// Ensure some transfer time
Thread.sleep(100);
TransferEvent completedEvent = new TransferEvent.Builder(this.session,
this.resource).addTransferredBytes(4096).build();
this.session.getTransferListener().transferSucceeded(completedEvent);
String message = new String(this.baos.toByteArray()).replace("\\", "/");
assertThat(message).startsWith("Downloaded: " + REPOSITORY + ARTIFACT);
assertThat(message).contains("4KB at");
assertThat(message).contains("KB/sec");
assertThat(message).endsWith("\n");
}
}