/* * Copyright to 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.rioproject.eventcollector.service; import org.junit.Assert; import net.jini.config.EmptyConfiguration; import net.jini.core.event.RemoteEvent; import net.jini.discovery.LookupDiscovery; import org.junit.Before; import org.junit.Test; import org.rioproject.event.EventDescriptor; import org.rioproject.event.RemoteServiceEvent; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.LinkedBlockingQueue; /** * Test the {@code TransientEventManager} * * @author Dennis Reedy */ public class TransientEventManagerTest { TransientEventManager eventManager; @Before public void setUp() throws Exception { eventManager = new TransientEventManager(); eventManager.initialize( new EventCollectorContext(EmptyConfiguration.INSTANCE, new LinkedBlockingQueue<RemoteEvent>(), new EventDescriptor[0], new LookupDiscovery(new String[0]), null)); } @Test public void testPostNotify() throws Exception { RemoteServiceEvent event = new RemoteServiceEvent("Test Event"); eventManager.notify(event); Assert.assertEquals(1, eventManager.getEvents().size()); } @Test public void testGetEvents() throws Exception { for(RemoteServiceEvent event : createRemoteServiceEvents(5)) { eventManager.notify(event); } Assert.assertEquals(5, eventManager.getEvents().size()); } @Test public void testGetEventsWithIndex() throws Exception { List<RemoteServiceEvent> events = createRemoteServiceEvents(50); for(RemoteServiceEvent event : events) { eventManager.notify(event); } Date index = events.get(39).getDate(); DateFormat formatter = new SimpleDateFormat("HH:mm:ss,SSS"); int i = 1; for(RemoteEvent event : eventManager.getEvents()) { Date date = ((RemoteServiceEvent)event).getDate(); System.out.println("["+(i++)+"] event date: "+formatter.format(date)); } System.out.print("\nRequested index from: "+formatter.format(index)+"\n\n"); Assert.assertEquals(10, eventManager.getEvents(index).size()); } @Test public void testGetEventsWithNullIndex() throws Exception { for(RemoteServiceEvent event : createRemoteServiceEvents(50)) { eventManager.notify(event); } Assert.assertEquals(50, eventManager.getEvents(null).size()); } static List<RemoteServiceEvent> createRemoteServiceEvents(int count) { List<RemoteServiceEvent> list = new ArrayList<RemoteServiceEvent>(); for(int i=0; i<count; i++) { RemoteServiceEvent event = new RemoteServiceEvent("Test Event "+i); event.setSequenceNumber(i); list.add(event); try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } } Assert.assertEquals(count, list.size()); return list; } }