/******************************************************************************* * Copyright (c) 2011 epyx SA. * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License along * with this program. If not, see <http://www.gnu.org/licenses/>. *******************************************************************************/ package ch.windmobile.server.socialmodel.mogodb; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.FileCopyUtils; import ch.windmobile.server.social.mongodb.MongoDBConstants; import ch.windmobile.server.social.mongodb.MongoDBServiceLocator; import ch.windmobile.server.socialmodel.ServiceLocator; import ch.windmobile.server.socialmodel.UserService; import ch.windmobile.server.socialmodel.xml.Favorite; import com.mongodb.DB; import com.mongodb.Mongo; public class FavoritesTest { private final Logger log = LoggerFactory.getLogger(getClass()); void beforeTest() { Mongo mongo = null; try { mongo = new Mongo(); DB db = mongo.getDB(MongoDBConstants.DATABASE_NAME); InputStream is = getClass().getResourceAsStream("/init-script.js"); ByteArrayOutputStream out = new ByteArrayOutputStream(); FileCopyUtils.copy(is, out); String code = out.toString(); Object result = db.doEval(code); log.info("Create test database: " + result.toString()); } catch (Exception e) { log.error("Error : " + e.getMessage(), e); } finally { if (mongo != null) { mongo.close(); } } } void logFavorites(List<Favorite> favorites) { for (Favorite favorite : favorites) { log.info("stationId=" + favorite.getStationId() + ", lastMessageId=" + favorite.getLastMessageId()); } } void testGetFavorites() throws Exception { ServiceLocator locator = new MongoDBServiceLocator().connect(null); try { final UserService userService = locator.getService(UserService.class); List<Favorite> favorites = userService.getFavorites("yann.savary@epyx.ch"); log.info("testGetFavorites()"); logFavorites(favorites); } finally { locator.disconnect(); } } void testAddToFavorites() throws Exception { ServiceLocator locator = new MongoDBServiceLocator().connect(null); try { final UserService userService = locator.getService(UserService.class); List<Favorite> favorites = new ArrayList<Favorite>(); Favorite favorite = new Favorite(); favorite.setStationId("1"); favorite.setLastMessageId(100); favorites.add(favorite); favorite = new Favorite(); favorite.setStationId("2"); favorite.setLastMessageId(200); favorites.add(favorite); List<Favorite> result = userService.addToFavorites("yann.savary@epyx.ch", favorites); log.info("testAddToFavorites()"); logFavorites(result); } finally { locator.disconnect(); } } void testRemoveFromFavorites() throws Exception { ServiceLocator locator = new MongoDBServiceLocator().connect(null); try { final UserService userService = locator.getService(UserService.class); List<Favorite> favorites = new ArrayList<Favorite>(); Favorite favorite = new Favorite(); favorite.setStationId("2"); favorites.add(favorite); List<Favorite> result = userService.removeFromFavorites("yann.savary@epyx.ch", favorites); log.info("testRemoveFromFavorites()"); logFavorites(result); } finally { locator.disconnect(); } } void testClearFavorites() throws Exception { ServiceLocator locator = new MongoDBServiceLocator().connect(null); try { final UserService userService = locator.getService(UserService.class); userService.clearFavorites("yann.savary@epyx.ch"); } finally { locator.disconnect(); } } public static void main(String[] args) { try { FavoritesTest test = new FavoritesTest(); test.beforeTest(); long before = System.nanoTime(); test.testAddToFavorites(); test.testAddToFavorites(); test.testRemoveFromFavorites(); test.testClearFavorites(); test.testGetFavorites(); System.out.println("Time : " + TimeUnit.NANOSECONDS.toMicros((System.nanoTime() - before)) + " ms"); } catch (Exception e) { e.printStackTrace(); } } }