public void testGenerateWaveletSelfRemovedEvent() throws Exception { wavelet.removeParticipant(ROBOT); EventMessageBundle messages = generateAndCheckEvents(EventType.WAVELET_SELF_REMOVED); // Participant changed event, after self removed event is filtered. assertEquals("Expected only one event", 1, messages.getEvents().size()); }
public void testGenerateWaveletParticipantsChangedEventOnRemove() throws Exception { wavelet.removeParticipant(ALEX); EventMessageBundle messages = generateAndCheckEvents(EventType.WAVELET_PARTICIPANTS_CHANGED); assertEquals("Expected one event", 1, messages.getEvents().size()); WaveletParticipantsChangedEvent event = WaveletParticipantsChangedEvent.as(messages.getEvents().get(0)); assertTrue( "Alex should be removed", event.getParticipantsRemoved().contains(ALEX.getAddress())); }
/** * Checks whether events of the given types were put in the bundle. */ private void checkEventTypeWasGenerated(EventMessageBundle messages, EventType... types) { Set<EventType> eventsTypeSet = Sets.newHashSet(); for (EventType eventType : types) { eventsTypeSet.add(eventType); } for (Event event : messages.getEvents()) { if (eventsTypeSet.contains(event.getType())) { eventsTypeSet.remove(event.getType()); } } if (eventsTypeSet.size() != 0) { fail("Event of type " + eventsTypeSet.iterator().next() + " has not been generated"); } }
public void testGenerateWaveletParticipantsChangedEventOnAdd() throws Exception { wavelet.addParticipant(BOB); EventMessageBundle messages = generateAndCheckEvents(EventType.WAVELET_PARTICIPANTS_CHANGED); assertTrue("Only expected one event", messages.getEvents().size() == 1); WaveletParticipantsChangedEvent event = WaveletParticipantsChangedEvent.as(messages.getEvents().get(0)); assertTrue("Bob should be added", event.getParticipantsAdded().contains(BOB.getAddress())); }
public void testEventsFromFirstDeltaAreFiltered() throws Exception { // Robot receives two deltas, it is participant in wavelet before deltas. wavelet.addParticipant(BOB); HashedVersion endVersion = HashedVersion.unsigned(waveletData.getVersion()); List<WaveletOperation> ops1 = Lists.newArrayList(output.getOps()); TransformedWaveletDelta delta1 = makeDeltaFromCapturedOps(ROBOT, ops1, endVersion, 0L); output.clear(); // Delta2 event #1. ObservableConversationView conversation = conversationUtil.buildConversation(wavelet); ObservableConversationBlip newBlip = conversation.getRoot().getRootThread().appendBlip(); XmlStringBuilder builder = XmlStringBuilder.createText("some random content"); // Delta2 event #2. LineContainers.appendToLastLine(newBlip.getContent(), builder); // Delta2 event #3. wavelet.removeParticipant(BOB); List<WaveletOperation> ops2 = Lists.newArrayList(output.getOps()); HashedVersion endVersion2 = HashedVersion.unsigned(waveletData.getVersion()); TransformedWaveletDelta delta2 = makeDeltaFromCapturedOps(ALEX, ops2, endVersion2, 0L); output.clear(); EventMessageBundle messages = generateEventsFromDeltas(delta1, delta2); assertEquals("Expected three events", 3, messages.getEvents().size()); checkEventTypeWasGenerated(messages, EventType.WAVELET_BLIP_CREATED, EventType.DOCUMENT_CHANGED, EventType.WAVELET_PARTICIPANTS_CHANGED); }
TransformedWaveletDelta delta1 = makeDeltaFromCapturedOps(ALEX, ops1, endVersion, 0L); output.clear(); List<WaveletOperation> ops2 = Lists.newArrayList(output.getOps()); HashedVersion endVersion2 = HashedVersion.unsigned(waveletData.getVersion()); TransformedWaveletDelta delta2 = makeDeltaFromCapturedOps(ROBOT, ops2, endVersion2, 0L); output.clear(); assertTrue("Ops should not be empty", (!ops1.isEmpty()) && (!ops2.isEmpty())); EventMessageBundle messages = generateEventsFromDeltas(delta1, delta2); assertEquals("Expected two events", 2, messages.getEvents().size());
HashedVersion endVersion = HashedVersion.unsigned(waveletData.getVersion()); TransformedWaveletDelta delta = makeDeltaFromCapturedOps(participantId, ops, endVersion, 0L); WaveletAndDeltas waveletAndDeltas = WaveletAndDeltas.create(waveletData, DeltaSequence.of(delta)); checkEventTypeWasGenerated(messages, eventType); checkAllEventsAreInCapabilites(messages, capabilities); checkEventTypeWasGenerated(messages, eventType);
TransformedWaveletDelta delta1 = makeDeltaFromCapturedOps(ROBOT, ops1, endVersion, 0L); output.clear(); TransformedWaveletDelta delta2 = makeDeltaFromCapturedOps(ALEX, ops2, endVersion2, 0L); output.clear(); EventMessageBundle messages = generateEventsFromDeltas(delta1, delta2); assertEquals("Expected two events", 2, messages.getEvents().size());
/** * Collects the ops applied to wavelet and creates a delta for processing in * the event generator. The delta author is default human participantId * * @param eventType the type of event that should have been generated. * @return the {@link EventMessageBundle} with the events generated when a * robot is subscribed to all possible events. * * @see #generateAndCheckEvents(EventType, ParticipantId) */ private EventMessageBundle generateAndCheckEvents(EventType eventType) throws Exception { EventMessageBundle eventMessageBundle = generateAndCheckEvents(eventType, ALEX); return eventMessageBundle; }
public void testEventsFromFirstDeltaAreFiltered() throws Exception { // Robot receives two deltas, it is participant in wavelet before deltas. wavelet.addParticipant(BOB); HashedVersion endVersion = HashedVersion.unsigned(waveletData.getVersion()); List<WaveletOperation> ops1 = Lists.newArrayList(output.getOps()); TransformedWaveletDelta delta1 = makeDeltaFromCapturedOps(ROBOT, ops1, endVersion, 0L); output.clear(); // Delta2 event #1. ObservableConversationView conversation = conversationUtil.buildConversation(wavelet); ObservableConversationBlip newBlip = conversation.getRoot().getRootThread().appendBlip(); XmlStringBuilder builder = XmlStringBuilder.createText("some random content"); // Delta2 event #2. LineContainers.appendToLastLine(newBlip.getContent(), builder); // Delta2 event #3. wavelet.removeParticipant(BOB); List<WaveletOperation> ops2 = Lists.newArrayList(output.getOps()); HashedVersion endVersion2 = HashedVersion.unsigned(waveletData.getVersion()); TransformedWaveletDelta delta2 = makeDeltaFromCapturedOps(ALEX, ops2, endVersion2, 0L); output.clear(); EventMessageBundle messages = generateEventsFromDeltas(delta1, delta2); assertEquals("Expected three events", 3, messages.getEvents().size()); checkEventTypeWasGenerated(messages, EventType.WAVELET_BLIP_CREATED, EventType.DOCUMENT_CHANGED, EventType.WAVELET_PARTICIPANTS_CHANGED); }
TransformedWaveletDelta delta1 = makeDeltaFromCapturedOps(ALEX, ops1, endVersion, 0L); output.clear(); List<WaveletOperation> ops2 = Lists.newArrayList(output.getOps()); HashedVersion endVersion2 = HashedVersion.unsigned(waveletData.getVersion()); TransformedWaveletDelta delta2 = makeDeltaFromCapturedOps(ROBOT, ops2, endVersion2, 0L); output.clear(); assertTrue("Ops should not be empty", (!ops1.isEmpty()) && (!ops2.isEmpty())); EventMessageBundle messages = generateEventsFromDeltas(delta1, delta2); assertEquals("Expected two events", 2, messages.getEvents().size());
HashedVersion endVersion = HashedVersion.unsigned(waveletData.getVersion()); TransformedWaveletDelta delta = makeDeltaFromCapturedOps(participantId, ops, endVersion, 0L); WaveletAndDeltas waveletAndDeltas = WaveletAndDeltas.create(waveletData, DeltaSequence.of(delta)); checkEventTypeWasGenerated(messages, eventType); checkAllEventsAreInCapabilites(messages, capabilities); checkEventTypeWasGenerated(messages, eventType);
TransformedWaveletDelta delta1 = makeDeltaFromCapturedOps(ROBOT, ops1, endVersion, 0L); output.clear(); TransformedWaveletDelta delta2 = makeDeltaFromCapturedOps(ALEX, ops2, endVersion2, 0L); output.clear(); EventMessageBundle messages = generateEventsFromDeltas(delta1, delta2); assertEquals("Expected two events", 2, messages.getEvents().size());
public void testGenerateWaveletParticipantsChangedEventOnAdd() throws Exception { wavelet.addParticipant(BOB); EventMessageBundle messages = generateAndCheckEvents(EventType.WAVELET_PARTICIPANTS_CHANGED); assertTrue("Only expected one event", messages.getEvents().size() == 1); WaveletParticipantsChangedEvent event = WaveletParticipantsChangedEvent.as(messages.getEvents().get(0)); assertTrue("Bob should be added", event.getParticipantsAdded().contains(BOB.getAddress())); }
/** * Collects the ops applied to wavelet and creates a delta for processing in * the event generator. The delta author is default human participantId * * @param eventType the type of event that should have been generated. * @return the {@link EventMessageBundle} with the events generated when a * robot is subscribed to all possible events. * * @see #generateAndCheckEvents(EventType, ParticipantId) */ private EventMessageBundle generateAndCheckEvents(EventType eventType) throws Exception { EventMessageBundle eventMessageBundle = generateAndCheckEvents(eventType, ALEX); return eventMessageBundle; }
public void testEventsFromSecondDeltaAreFiltered() throws Exception { // Robot receives two deltas, it is participant in wavelet before deltas // Delta1 event #1 - should be delivered to robot. wavelet.addParticipant(BOB); List<WaveletOperation> ops = output.getOps(); HashedVersion endVersion = HashedVersion.unsigned(waveletData.getVersion()); TransformedWaveletDelta delta1 = makeDeltaFromCapturedOps(ALEX, ops, endVersion, 0L); output.clear(); ObservableConversationView conversation = conversationUtil.buildConversation(wavelet); // Delta2 event #1. ObservableConversationBlip newBlip = conversation.getRoot().getRootThread().appendBlip(); // Delta2 event #2. wavelet.removeParticipant(ROBOT); // Delta2 event #3 - should be filtered. XmlStringBuilder builder = XmlStringBuilder.createText("some random content"); LineContainers.appendToLastLine(newBlip.getContent(), builder); List<WaveletOperation> ops2 = output.getOps(); HashedVersion endVersion2 = HashedVersion.unsigned(waveletData.getVersion()); TransformedWaveletDelta delta2 = makeDeltaFromCapturedOps(ALEX, ops2, endVersion2, 0L); output.clear(); EventMessageBundle messages = generateEventsFromDeltas(delta1, delta2); assertEquals("Expected three events", 3, messages.getEvents().size()); checkEventTypeWasGenerated(messages, EventType.WAVELET_PARTICIPANTS_CHANGED, EventType.WAVELET_BLIP_CREATED, EventType.WAVELET_SELF_REMOVED); }
public void testGenerateWaveletSelfRemovedEvent() throws Exception { wavelet.removeParticipant(ROBOT); EventMessageBundle messages = generateAndCheckEvents(EventType.WAVELET_SELF_REMOVED); // Participant changed event, after self removed event is filtered. assertEquals("Expected only one event", 1, messages.getEvents().size()); }
public void testGenerateWaveletParticipantsChangedEventOnRemove() throws Exception { wavelet.removeParticipant(ALEX); EventMessageBundle messages = generateAndCheckEvents(EventType.WAVELET_PARTICIPANTS_CHANGED); assertEquals("Expected one event", 1, messages.getEvents().size()); WaveletParticipantsChangedEvent event = WaveletParticipantsChangedEvent.as(messages.getEvents().get(0)); assertTrue( "Alex should be removed", event.getParticipantsRemoved().contains(ALEX.getAddress())); }
/** * Checks whether events of the given types were put in the bundle. */ private void checkEventTypeWasGenerated(EventMessageBundle messages, EventType... types) { Set<EventType> eventsTypeSet = Sets.newHashSet(); for (EventType eventType : types) { eventsTypeSet.add(eventType); } for (Event event : messages.getEvents()) { if (eventsTypeSet.contains(event.getType())) { eventsTypeSet.remove(event.getType()); } } if (eventsTypeSet.size() != 0) { fail("Event of type " + eventsTypeSet.iterator().next() + " has not been generated"); } }
public void testEventsFromSecondDeltaAreFiltered() throws Exception { // Robot receives two deltas, it is participant in wavelet before deltas // Delta1 event #1 - should be delivered to robot. wavelet.addParticipant(BOB); List<WaveletOperation> ops = output.getOps(); HashedVersion endVersion = HashedVersion.unsigned(waveletData.getVersion()); TransformedWaveletDelta delta1 = makeDeltaFromCapturedOps(ALEX, ops, endVersion, 0L); output.clear(); ObservableConversationView conversation = conversationUtil.buildConversation(wavelet); // Delta2 event #1. ObservableConversationBlip newBlip = conversation.getRoot().getRootThread().appendBlip(); // Delta2 event #2. wavelet.removeParticipant(ROBOT); // Delta2 event #3 - should be filtered. XmlStringBuilder builder = XmlStringBuilder.createText("some random content"); LineContainers.appendToLastLine(newBlip.getContent(), builder); List<WaveletOperation> ops2 = output.getOps(); HashedVersion endVersion2 = HashedVersion.unsigned(waveletData.getVersion()); TransformedWaveletDelta delta2 = makeDeltaFromCapturedOps(ALEX, ops2, endVersion2, 0L); output.clear(); EventMessageBundle messages = generateEventsFromDeltas(delta1, delta2); assertEquals("Expected three events", 3, messages.getEvents().size()); checkEventTypeWasGenerated(messages, EventType.WAVELET_PARTICIPANTS_CHANGED, EventType.WAVELET_BLIP_CREATED, EventType.WAVELET_SELF_REMOVED); }