package org.gcube.portal.databook.server; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Random; import java.util.UUID; import org.gcube.portal.databook.shared.Comment; import org.gcube.portal.databook.shared.Feed; import org.gcube.portal.databook.shared.FeedType; import org.gcube.portal.databook.shared.Like; import org.gcube.portal.databook.shared.Notification; import org.gcube.portal.databook.shared.NotificationChannelType; import org.gcube.portal.databook.shared.NotificationType; import org.gcube.portal.databook.shared.PrivacyLevel; import org.gcube.portal.databook.shared.RangeFeeds; import org.gcube.portal.databook.shared.ex.FeedIDNotFoundException; import org.gcube.portal.databook.shared.ex.NotificationChannelTypeNotFoundException; import org.gcube.portal.databook.shared.ex.NotificationTypeNotFoundException; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class DatabookCassandraTest { private static DatabookStore store; @BeforeClass public static void setup() throws Exception { store = new DBCassandraAstyanaxImpl(); //set to true if you want to drop the KeySpace and recreate it } @AfterClass public static void close(){ store.closeConnection(); System.out.println("End"); } // // /** // * use exclusively to add a new CF to a keyspace // */ // @Test // public void addNotifPreferencesColumnFamily() { // // ColumnFamily cf_UserNotificationsPreferences = new ColumnFamily( // // DBCassandraAstyanaxImpl.USER_NOTIFICATIONS_PREFERENCES, // Column Family Name // // StringSerializer.get(), // Key Serializer // // StringSerializer.get()); // Column Serializer // // // // try { // // new CassandraClusterConnection(false).getKeyspace().createColumnFamily(cf_UserNotificationsPreferences, ImmutableMap.builder() // // .put("default_validation_class", "UTF8Type") // // .put("key_validation_class", "UTF8Type") // // .put("comparator_type", "UTF8Type") // // .build()); // // } catch (ConnectionException e) { // // e.printStackTrace(); // // } // } // // @Test // public void testFriendships() { // assertTrue(store.requestFriendship("massimiliano.assante", "leonardo.candela")); // assertTrue(store.requestFriendship("massimiliano.assante", "ermit")); // assertTrue(store.requestFriendship("massimiliano.assante", "giorgino")); // assertTrue(store.requestFriendship("barabba", "massimiliano.assante")); // // assertTrue(store.approveFriendship("leonardo.candela", "massimiliano.assante")); // assertTrue(store.approveFriendship("ermit", "massimiliano.assante")); // // assertTrue(store.denyFriendship("giorgino", "massimiliano.assante")); // System.out.println("Pending Connections for massimiliano.assante:"); // for (String userid: store.getPendingFriendRequests("massimiliano.assante")) { // System.out.println(userid); // } // // System.out.println("Connections for massimiliano.assante:"); // for (String userid: store.getFriends("massimiliano.assante")) { // System.out.println(userid); // } // // } // @Test // public void testLikedFeedsRetrieval() { // try { // for (Feed feed : store.getAllLikedFeedsByUser("luca.frosini", 10)) { // System.out.println(feed); // } // } catch (Exception e) { // e.printStackTrace(); // } // } // // // @Test // public void testSingleNotificationPreference() { // try { // for (NotificationChannelType channel : store.getUserNotificationChannels("massimiliano.assante", NotificationType.COMMENT)) { // System.out.println(channel); // } // } catch (NotificationChannelTypeNotFoundException e) { // e.printStackTrace(); // } catch (NotificationTypeNotFoundException e) { // e.printStackTrace(); // }; // HashMap toCreate = new HashMap(); // for (int i = 0; i < NotificationType.values().length; i++) { // if (i == 0) // toCreate.put(NotificationType.values()[i], null); // else if (i ==3) { // NotificationChannelType[] nots = {NotificationChannelType.PORTAL}; // toCreate.put(NotificationType.values()[i], nots); // } // else // toCreate.put(NotificationType.values()[i], NotificationChannelType.values()); // } // store.setUserNotificationPreferences("antonio.gioia", toCreate); // // // try { // for (NotificationChannelType channel : store.getUserNotificationChannels("antonio.gioia", NotificationType.WP_FOLDER_RENAMED)) { //i == 3 // System.out.println(channel); // } // } catch (Exception e) { // e.printStackTrace(); // } // } // // @Test // public void testSingleNotification() { // Notification not = new Notification( // UUID.randomUUID().toString(), // NotificationType.LIKE, // "leonardo.candela", // "MESSAGEID", // new Date(), // "uri", // "This is notification about a like", // false, // "leonardo.candela", "Leonardo Candela", // "thumburl"); // assertTrue(store.saveNotification(not)); // // not = new Notification( // UUID.randomUUID().toString(), // NotificationType.MESSAGE, // "massimiliano.assante", // "MESSAGEID", // new Date(), // "uri", // "This is notification about a like", // false, // "antonio.gioia", "Antonio Gioia", // "thumburl"); // assertTrue(store.saveNotification(not)); // System.out.println("Writing one Notification " + not); // } // // @Test // public void testNotifications() { // Notification not = null; // System.out.println("Writing 18 Notifications"); // int count = 18; // for (int i = 0; i < count; i++) { // if (i % 2 != 0) { // not = new Notification(UUID.randomUUID().toString(), NotificationType.JOB_COMPLETED_OK, // "leonardo.candela", "TWEETID", new Date(), "uri", "This is notification about job completed OK #"+i, false, "pasquale.pagano", "Pasquale Pagano", "thumburl"); // } else { // not = new Notification(UUID.randomUUID().toString(), NotificationType.JOB_COMPLETED_NOK, // "massimiliano.assante", "MESSAGEID", new Date(), "uri", "This is notification about completed NOK #"+i, false, "leonardo.candela", "Leonardo Candela", "thumburl"); // } // assertTrue(store.saveNotification(not)); // try { // Thread.sleep(150); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } // // Notification rNot= null; // try { // // //read // rNot = store.readNotification(not.getKey().toString()); // assertNotNull(rNot); // System.out.println("Reading one Notification " + rNot.getKey() + ": " + rNot.getDescription() + " Type: " + rNot.getType()); // // //set Read // assertTrue(store.setNotificationRead(rNot.getKey().toString())); // // System.out.println("Notification " + rNot.getKey() + " of Type: " + rNot.getType() + " was set to READ"); // // not = new Notification(UUID.randomUUID().toString(), NotificationType.LIKE, // "leonardo.candela", "FEEDID", new Date(), "uri", "This is notification of a Liked Leo feed by Massi", false, "massimiliano.assante", "Massimiliano Assante", "thumburl"); // assertTrue(store.saveNotification(not)); // try { // Thread.sleep(150); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // rNot = store.readNotification(not.getKey().toString()); // System.out.println("Reading another Notification " + rNot.getKey() + " of Type: " + rNot.getType() + " Read:? " + rNot.isRead()); // // //set Read // // assertTrue(store.setNotificationRead(rNot.getKey().toString())); // // System.out.println("Notification " + rNot.getKey() + " of Type: " + rNot.getType() + " was set to READ subject was this: " + rNot.getSubjectid()); // // // Random randomGenerator = new Random(); // // System.out.println("leonardo.candela Notifications: "); // List recentNots = store.getAllNotificationByUser("leonardo.candela", randomGenerator.nextInt(50)); // assertNotNull(recentNots); // for (Notification notif :recentNots) // System.out.println(notif); // // // System.out.println("massimiliano.assante Notifications: "); // recentNots = store.getUnreadNotificationsByUser("massimiliano.assante"); // assertNotNull(recentNots); // for (Notification notif :recentNots) // System.out.println(notif); // } catch (Exception e) { // e.printStackTrace(); // } // } // // @Test public void testFeeds() { // int count = 18; // Feed feed = null; // for (int i = 0; i < count; i++) { // if (i % 2 != 0) { // feed = new Feed(UUID.randomUUID().toString(), FeedType.JOIN, "massimiliano.assante", new Date(), "/gcube/devsec/devVRE", // "www.d4science.org/monitor", "thumbUri", "This is feed# "+ i, PrivacyLevel.VRES, "Massimiliano Assante", "massimiliano.assante@isti.cnr.it", "thumburl", "linkTitle", "linkDesc", "host"); // } else { // feed = new Feed(UUID.randomUUID().toString(), FeedType.TWEET, "leonardo.candela", new Date(), "", // "www.d4science.org/web/guest", "thumbUri", "This is feed# "+ i, PrivacyLevel.PORTAL, "Leonardo Candela", "leonardo.candela@isti.cnr.it", "thumburl", "linkTitle", "linkDesc", "host"); // } // assertTrue(store.saveUserFeed(feed)); // try { // Thread.sleep(150); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } // // Feed rFeed = null; // try { // rFeed = store.readFeed(feed.getKey().toString()); // rFeed = store.readFeed(feed.getKey().toString()); // rFeed = store.readFeed(feed.getKey().toString()); // rFeed = store.readFeed(feed.getKey().toString()); // assertNotNull(rFeed); // // String feedIdToDelete = UUID.randomUUID().toString(); // feed = new Feed(feedIdToDelete, FeedType.PUBLISH, "massimiliano.assante", new Date(), "/gcube/devsec/devVRE", // "www.d4science.org/monitor", "thumbUri", "This is feed to be deleted", PrivacyLevel.VRES, "Massimiliano Assante", "massimiliano.assante@isti.cnr.it", "thumburl", "linkTitle", "linkDesc", "host", false); // assertTrue(store.saveUserFeed(feed)); // try { // Thread.sleep(250); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // System.out.println("Test Delete Feed "); // assertTrue(store.deleteFeed(feedIdToDelete)); // // System.out.println("massimiliano.assante ALL FEEDS: "); // for (Feed recFeed : store.getAllFeedsByUser("massimiliano.assante")) // System.out.println(recFeed); // // Random randomGenerator = new Random(); // // System.out.println("leonardo.candela TIMELINE: "); // List recentFeeds = store.getRecentFeedsByUser("leonardo.candela", randomGenerator.nextInt(50)); // assertNotNull(recentFeeds); // for (Feed recFeed :recentFeeds) // System.out.println(recFeed); try { System.out.println("/gcube/devsec/devVRE TIMELINE: "); int from = 1; for (int i = 0; i < 5; i++) { System.out.println("\nFROM="+from); RangeFeeds range = store.getRecentFeedsByVREAndRange("/gcube/devsec/TestVREFolder2", from, 5); List recentFeeds = range.getFeeds(); assertNotNull(recentFeeds); for (Feed recFeed :recentFeeds) System.out.println("->"+recFeed.getDescription()); from = range.getLastReturnedFeedTimelineIndex()-1; } // System.out.println("PORTAL TIMELINE: "); // recentFeeds = store.getAllPortalPrivacyLevelFeeds(); // assertNotNull(recentFeeds); // for (Feed recFeed :recentFeeds) // System.out.println(recFeed); } catch (Exception e) { e.printStackTrace(); } } // // // @Test // // public void testNotifications() { // // int count = 10; // // Notification notf = null; // // for (int i = 0; i < count; i++) { // // notf = new Notification(UUID.randomUUID().toString(), NotificationType.MESSAGE, "massimiliano.assante", new Date(), "http://urir.com", "Desc #"+i, "Gino Camillo", false); // // assertTrue(store.saveNotification(notf)); // // } // // try { // // assertNotNull(store.getAllNotificationByUser("massimiliano.assante")); // // } catch (Exception e) { // // e.printStackTrace(); // // } // // } // // @Test // public void testComments() { // int count = 10; // Feed feed = new Feed(UUID.randomUUID().toString(), FeedType.SHARE, "massimiliano.assante", new Date(), "/gcube/devsec/devVRE", // "http://www.d4science.org/monitor", "thumbUri", "This is feed that is going to be commented ", PrivacyLevel.PUBLIC, "Massimiliano Assante", // "massimiliano.assante@isti.cnr.it", "thumburl", "linkTitle", "linkDesc", "host", false); // assertTrue(store.saveUserFeed(feed)); // // Comment toDelete = null; // for (int i = 0; i < count; i++) { // try { // toDelete = new Comment(UUID.randomUUID().toString(),"leonardo.candela", // new Date(), feed.getKey().toString(), "This comment #"+i, "Leonardo Candela", "thumbUrl"); // assertTrue(store.addComment(toDelete)); // // } catch (FeedIDNotFoundException e) { // System.out.println("Exception feed id not found"); // } // } // System.out.println("GetAllCOmmentsByFeed "); // for (Comment cm : store.getAllCommentByFeed(feed.getKey().toString())) { // System.out.println(cm.getText()); // }; // // try { // assertTrue(store.deleteComment(toDelete.getKey(), toDelete.getFeedid())); // } catch (Exception e) { // System.out.println("Exception feed id not found"); // } // } // // @Test // public void testLikes() { // int count = 10; // Feed feed = new Feed(UUID.randomUUID().toString(), FeedType.SHARE, "massimiliano.assante", new Date(), "/gcube/devsec/devVRE", // "http://www.d4science.org/monitor", "thumbUri", "This feed is Liked ", PrivacyLevel.PUBLIC, // "Massimiliano Assante", "massimiliano.assante@isti.cnr.it", "thumburl", "linkTitle", "linkDesc", "host", false); // assertTrue(store.saveUserFeed(feed)); // Like toUnlike = new Like(UUID.randomUUID().toString(),"massimiliano.assante", // new Date(), feed.getKey().toString(), "Massi Pallino", "thumbUrl"); // // try { // assertTrue(store.like(toUnlike)); // for (int i = 0; i < count; i++) // assertTrue(store.like(new Like(UUID.randomUUID().toString(),"massimiliano.assante", // new Date(), feed.getKey().toString(), "Rino Pallino", "thumbUrl"))); // // System.out.println("massimiliano.assante liked the following feeds: "); // for (String feedid : store.getAllLikedFeedIdsByUser("massimiliano.assante")) { // System.out.println(feedid); // } // // for (Like like : store.getAllLikesByFeed(feed.getKey().toString())) { // System.out.println(like); // } // // System.out.println("trying unlike"); // assertTrue(store.unlike(toUnlike.getKey(), toUnlike.getFeedid())); // // } catch (Exception e) { // System.out.println("Exception feed id not found"); // } // } }