/** * Creates a client frontend and subscribes it to the wave bus. * * @throws WaveServerException if the server fails during initialization. */ public static ClientFrontendImpl create(WaveletProvider waveletProvider, WaveBus wavebus, WaveletInfo waveletInfo) throws WaveServerException { ClientFrontendImpl impl = new ClientFrontendImpl(waveletProvider, waveletInfo); wavebus.subscribe(impl); return impl; }
public void testCannotOpenWavesWhenNotLoggedIn() throws Exception { OpenListener listener = mock(OpenListener.class); clientFrontend.openRequest(null, WAVE_ID, IdFilters.ALL_IDS, NO_KNOWN_WAVELETS, listener); verify(listener).onFailure("Not logged in"); CommittedWaveletSnapshot snapshot = provideWavelet(WN1); clientFrontend.waveletUpdate(snapshot.snapshot, DELTAS); Mockito.verifyNoMoreInteractions(listener); }
/** * Tests that submit requests are forwarded to the wavelet provider. */ public void testSubmitForwardedToWaveletProvider() { OpenListener openListener = openWave(IdFilters.ALL_IDS); String channelId = verifyChannelId(openListener); SubmitRequestListener submitListener = mock(SubmitRequestListener.class); clientFrontend.submitRequest(USER, WN1, SERIALIZED_DELTA, channelId, submitListener); verify(waveletProvider).submitRequest(eq(WN1), eq(SERIALIZED_DELTA), any(SubmitRequestListener.class)); verifyZeroInteractions(submitListener); }
/** * Tests that if we open the index wave, we don't get updates from the * original wave if they contain no interesting operations (add/remove * participant or text). */ public void testUninterestingDeltasDontUpdateIndex() throws WaveServerException { provideWaves(Collections.<WaveId> emptySet()); OpenListener listener = openWave(INDEX_WAVE_ID, IdFilters.ALL_IDS); verifyChannelId(listener); verifyMarker(listener, INDEX_WAVE_ID); HashedVersion v1 = HashedVersion.unsigned(1L); TransformedWaveletDelta delta = makeDelta(USER, v1, 0L, UTIL.noOp()); DeltaSequence deltas = DeltaSequence.of(delta); WaveletData wavelet = WaveletDataUtil.createEmptyWavelet(WN1, USER, V0, 1234567890L); clientFrontend.waveletUpdate(wavelet, deltas); WaveletName dummyWaveletName = ClientFrontendImpl.createDummyWaveletName(INDEX_WAVE_ID); verify(listener, Mockito.never()).onUpdate(eq(dummyWaveletName), any(CommittedWaveletSnapshot.class), isDeltasStartingAt(0), any(HashedVersion.class), isNullMarker(), anyString()); }
/** * Tests that a snapshot not matching the subscription filter is not received. * @throws WaveServerException */ @SuppressWarnings("unchecked") // Mock container public void testUnsubscribedSnapshotNotRecieved() throws Exception { OpenListener listener = openWave(IdFilter.ofPrefixes("non-existing")); verifyChannelId(listener); verifyMarker(listener, WAVE_ID); ReadableWaveletData wavelet = provideWavelet(WN1).snapshot; clientFrontend.waveletUpdate(wavelet, DELTAS); verify(listener, Mockito.never()).onUpdate(eq(WN1), any(CommittedWaveletSnapshot.class), Matchers.anyList(), any(HashedVersion.class), isNullMarker(), anyString()); }
String channelId = generateChannelID(); UserManager userManager = waveletInfo.getUserManager(loggedInUser); WaveViewSubscription subscription = WaveletName dummyWaveletName = createDummyWaveletName(waveId); if (waveletIds.size() == 0) {
/** * Opens a wave and returns a mock listener. */ private ClientFrontend.OpenListener openWave(WaveId waveId, IdFilter filter) { OpenListener openListener = mock(OpenListener.class); clientFrontend.openRequest(USER, waveId, filter, NO_KNOWN_WAVELETS, openListener); return openListener; }
private static void initializeFrontend(Injector injector, ServerRpcProvider server, WaveBus waveBus) throws WaveServerException { HashedVersionFactory hashFactory = injector.getInstance(HashedVersionFactory.class); WaveletProvider provider = injector.getInstance(WaveletProvider.class); WaveletInfo waveletInfo = WaveletInfo.create(hashFactory, provider); ClientFrontend frontend = ClientFrontendImpl.create(provider, waveBus, waveletInfo); ProtocolWaveClientRpc.Interface rpcImpl = WaveClientRpcImpl.create(frontend, false); server.registerService(ProtocolWaveClientRpc.newReflectiveService(rpcImpl)); }
ParticipantId p = ((RemoveParticipant) op).getParticipantId(); remainingparticipants.remove(p); participantUpdate(waveletName, p, newDeltas.subList(0, i + 1), newParticipants.remove(p), true); participantUpdate(waveletName, p, newDeltas, isNew, false);
/** * Tests that if we open the index wave, we don't get updates from the * original wave if they contain no interesting operations (add/remove * participant or text). */ public void testUninterestingDeltasDontUpdateIndex() throws WaveServerException { provideWaves(Collections.<WaveId> emptySet()); OpenListener listener = openWave(INDEX_WAVE_ID, IdFilters.ALL_IDS); verifyChannelId(listener); verifyMarker(listener, INDEX_WAVE_ID); HashedVersion v1 = HashedVersion.unsigned(1L); TransformedWaveletDelta delta = makeDelta(USER, v1, 0L, UTIL.noOp()); DeltaSequence deltas = DeltaSequence.of(delta); WaveletData wavelet = WaveletDataUtil.createEmptyWavelet(WN1, USER, V0, 1234567890L); clientFrontend.waveletUpdate(wavelet, deltas); WaveletName dummyWaveletName = ClientFrontendImpl.createDummyWaveletName(INDEX_WAVE_ID); verify(listener, Mockito.never()).onUpdate(eq(dummyWaveletName), any(CommittedWaveletSnapshot.class), isDeltasStartingAt(0), any(HashedVersion.class), isNullMarker(), anyString()); }
/** * Tests that we get deltas. */ public void testReceivedDeltasSentToClient() throws Exception { CommittedWaveletSnapshot snapshot = provideWavelet(WN1); when(waveletProvider.getWaveletIds(WAVE_ID)).thenReturn(ImmutableSet.of(W1)); when(waveletProvider.checkAccessPermission(WN1, USER)).thenReturn(true); OpenListener listener = openWave(IdFilters.ALL_IDS); verify(listener).onUpdate(eq(WN1), eq(snapshot), eq(DeltaSequence.empty()), eq(V1), isNullMarker(), any(String.class)); verifyMarker(listener, WAVE_ID); TransformedWaveletDelta delta = TransformedWaveletDelta.cloneOperations(USER, V2, 1234567890L, Arrays.asList(UTIL.noOp())); DeltaSequence deltas = DeltaSequence.of(delta); clientFrontend.waveletUpdate(snapshot.snapshot, deltas); verify(listener).onUpdate(eq(WN1), isNullSnapshot(), eq(deltas), isNullVersion(), isNullMarker(), anyString()); }
/** * Opens a wave and returns a mock listener. */ private ClientFrontend.OpenListener openWave(WaveId waveId, IdFilter filter) { OpenListener openListener = mock(OpenListener.class); clientFrontend.openRequest(USER, waveId, filter, NO_KNOWN_WAVELETS, openListener); return openListener; }
public void testCannotOpenWavesWhenNotLoggedIn() throws Exception { OpenListener listener = mock(OpenListener.class); clientFrontend.openRequest(null, WAVE_ID, IdFilters.ALL_IDS, NO_KNOWN_WAVELETS, listener); verify(listener).onFailure(new ChannelException(ResponseCode.NOT_LOGGED_IN, "Not Logged in", null, Recoverable.NOT_RECOVERABLE, WAVE_ID, null)); CommittedWaveletSnapshot snapshot = provideWavelet(WN1); clientFrontend.waveletUpdate(snapshot.snapshot, DELTAS); Mockito.verifyNoMoreInteractions(listener); }
@Override protected void setUp() throws Exception { super.setUp(); waveletProvider = mock(WaveletProvider.class); when(waveletProvider.getWaveletIds(any(WaveId.class))).thenReturn(ImmutableSet.<WaveletId>of()); WaveletInfo waveletInfo = WaveletInfo.create(HASH_FACTORY, waveletProvider); clientFrontend = new ClientFrontendImpl(waveletProvider, waveletInfo); }
/** * Tests that a snapshot not matching the subscription filter is not received. * @throws WaveServerException */ @SuppressWarnings("unchecked") // Mock container public void testUnsubscribedSnapshotNotRecieved() throws Exception { OpenListener listener = openWave(IdFilter.ofPrefixes("non-existing")); verifyChannelId(listener); verifyMarker(listener, WAVE_ID); ReadableWaveletData wavelet = provideWavelet(WN1).snapshot; clientFrontend.waveletUpdate(wavelet, DELTAS); verify(listener, Mockito.never()).onUpdate(eq(WN1), any(CommittedWaveletSnapshot.class), Matchers.anyList(), any(HashedVersion.class), isNullMarker(), anyString()); }
/** * Tests that submit requests are forwarded to the wavelet provider. */ public void testSubmitForwardedToWaveletProvider() { OpenListener openListener = openWave(IdFilters.ALL_IDS); String channelId = verifyChannelId(openListener); SubmitRequestListener submitListener = mock(SubmitRequestListener.class); clientFrontend.submitRequest(USER, WN1, SERIALIZED_DELTA, channelId, submitListener); verify(waveletProvider).submitRequest(eq(WN1), eq(SERIALIZED_DELTA), any(SubmitRequestListener.class)); verifyZeroInteractions(submitListener); }
private ClientFrontend.OpenListener openWave(ParticipantId user, WaveId waveId, IdFilter filter) { OpenListener openListener = mock(OpenListener.class); clientFrontend.openRequest(user, waveId, filter, NO_KNOWN_WAVELETS, openListener); return openListener; }
@Override protected void setUp() throws Exception { super.setUp(); waveletProvider = mock(WaveletProvider.class); when(waveletProvider.getWaveletIds(any(WaveId.class))).thenReturn(ImmutableSet.<WaveletId>of()); WaveletInfo waveletInfo = WaveletInfo.create(HASH_FACTORY, waveletProvider); clientFrontend = new ClientFrontendImpl(waveletProvider, waveletInfo, "example.com"); }
/** * Tests that we get deltas. */ public void testReceivedDeltasSentToClient() throws Exception { CommittedWaveletSnapshot snapshot = provideWavelet(WN1); when(waveletProvider.getWaveletIds(WAVE_ID)).thenReturn(ImmutableSet.of(W1)); when(waveletProvider.checkAccessPermission(WN1, USER)).thenReturn(true); OpenListener listener = openWave(IdFilters.ALL_IDS); verify(listener).onUpdate(eq(WN1), eq(snapshot), eq(DeltaSequence.empty()), eq(V0), isNullMarker(), any(String.class)); verifyMarker(listener, WAVE_ID); TransformedWaveletDelta delta = TransformedWaveletDelta.cloneOperations(USER, V2, 1234567890L, Arrays.asList(UTIL.noOp())); DeltaSequence deltas = DeltaSequence.of(delta); clientFrontend.waveletUpdate(snapshot.snapshot, deltas); verify(listener).onUpdate(eq(WN1), isNullSnapshot(), eq(deltas), isNullVersion(), isNullMarker(), anyString()); }
public void testCannotSubmitAsDifferentUser() { ParticipantId otherParticipant = new ParticipantId("another@example.com"); OpenListener openListener = openWave(IdFilters.ALL_IDS); String channelId = verifyChannelId(openListener); SubmitRequestListener submitListener = mock(SubmitRequestListener.class); clientFrontend.submitRequest(otherParticipant, WN1, SERIALIZED_DELTA, channelId, submitListener); verify(submitListener).onFailure(anyString()); verify(submitListener, never()).onSuccess(anyInt(), (HashedVersion) any(), anyLong()); }