package org.corfudb.runtime.view;
import lombok.Getter;
import org.corfudb.runtime.CorfuRuntime;
import org.corfudb.runtime.view.stream.IStreamView;
import org.junit.Test;
import java.util.Collections;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Created by mwei on 2/18/16.
*/
public class StreamsViewTest extends AbstractViewTest {
@Getter
final String defaultConfigurationString = getDefaultEndpoint();
@Test
@SuppressWarnings("unchecked")
public void canCopyStream()
throws Exception {
//begin tests
CorfuRuntime r = getDefaultRuntime().connect();
UUID streamA = CorfuRuntime.getStreamID("stream A");
UUID streamACopy = CorfuRuntime.getStreamID("stream A copy");
byte[] testPayload = "hello world".getBytes();
byte[] testPayloadCopy = "hello world copy".getBytes();
IStreamView sv = r.getStreamsView().get(streamA);
sv.append(testPayload);
assertThat(sv.next().getPayload(getRuntime()))
.isEqualTo(testPayload);
assertThat(sv.next())
.isEqualTo(null);
SequencerView sequencerView = r.getSequencerView();
IStreamView svCopy = r.getStreamsView().copy(streamA, streamACopy,
sequencerView.nextToken(
Collections.singleton(sv.getID()),
0).getToken().getTokenValue());
assertThat(svCopy.next().getPayload(getRuntime()))
.isEqualTo(testPayload);
assertThat(svCopy.next())
.isEqualTo(null);
svCopy.append(testPayloadCopy);
assertThat(svCopy.next().getPayload(getRuntime()))
.isEqualTo(testPayloadCopy);
assertThat(svCopy.next())
.isEqualTo(null);
assertThat(sv.next())
.isEqualTo(null);
}
}