package events;
import static org.junit.Assert.*;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.junit.Before;
import org.junit.Test;
import com.github.fakemongo.Fongo;
import com.mongodb.DBObject;
import events.collect.EventCollectorThread;
import events.collect.MessageHandler;
import events.collect.SocketClientEndpoint;
import events.collect.WebsocketClientEndpoint;
import events.persist.EventPersister;
import events.util.Constants;
public class EventCollectorTest {
private static final Logger logger = Logger.getLogger( EventCollectorTest.class.getName() );
SocketClientEndpoint endpoint;
Fongo fongo;
@Before
public void setUp() throws Exception {
fongo = new Fongo("mongo server fake");
PersistenceUnit.setInstance(new FakePersister(fongo));
final EventPersister persister = PersistenceUnit.getInstance();
endpoint = new FakeClientEndpoint(new URI(Constants.NORSE_WEBSOCKET_URL));
MessageHandler basicHandler = new MessageHandler(){
public void handleMessage(String message) {
persister.persist(message, Constants.DB_NAME, Constants.NORSE_DB_COLLECTION_NAME);
}
};
endpoint.addMessageHandler(basicHandler);
}
@Test
public void testEndToEnd() {
EventCollectorThread norseCollector = new
EventCollectorThread(endpoint, Boolean.FALSE);
norseCollector.run();
DBObject object = fongo.getDB(Constants.DB_NAME).
getCollection(Constants.NORSE_DB_COLLECTION_NAME).findOne();
assertTrue(object.containsField(TestData.TEST_FIELD_NAME));
assertEquals(TestData.TEST_FIELD_VALUE, object.get(TestData.TEST_FIELD_NAME));
}
public static void main(String[] args) {
try {
PersistenceUnit.setInstance(new FakePersister(new Fongo("mongo server test")));
final EventPersister persister = PersistenceUnit.getInstance();
MessageHandler defaultHandler = new MessageHandler() {
public void handleMessage(String message) {
logger.log(Level.INFO, "Received:" + message);
persister.persist(message, Constants.DB_NAME, Constants.NORSE_DB_COLLECTION_NAME);
}
};
SocketClientEndpoint endpoint = new WebsocketClientEndpoint(
new URI(Constants.NORSE_WEBSOCKET_URL));
endpoint.addMessageHandler(defaultHandler);
EventCollectorThread norseCollector = new EventCollectorThread(endpoint);
norseCollector.run();
} catch (UnknownHostException ex) {
logger.log(Level.SEVERE, "EventCollector failed with UnknownHostException: ", ex);
} catch (URISyntaxException e) {
logger.log(Level.SEVERE, "EventCollector failed with URISyntaxException: ", e);
}
}
}