Example #1
0
  @Test
  public void testTimePaging() throws Exception {

    User user = serviceFacade.getUserManager().getUserByEMail("*****@*****.**");
    serviceFacade.getPostManager().deleteAll(user.getId());
    serviceFacade.getRelationManager().deleteAll();
    serviceFacade.getSourceManager().deleteAll(user.getId());

    TestTimeSource tts1 = new TestTimeSource(user, "t1", 51, 2, 50, 0);
    TestTimeSource tts2 = new TestTimeSource(user, "t2", 11, 1, 100, 200);
    TestTimePagedSource tts3 = new TestTimePagedSource(user, "t3", 100, 1, 5, 75);
    TestTimePagedSource tts4 = new TestTimePagedSource(user, "t4", 217, 3, 7, 13);

    serviceFacade.getSourceManager().registerNewBean("t1", tts1);
    serviceFacade.getSourceManager().registerNewBean("t2", tts2);
    serviceFacade.getSourceManager().registerNewBean("t3", tts3);
    serviceFacade.getSourceManager().registerNewBean("t4", tts4);
    SocialSource st = new SocialSource("", "", "", "");
    st.setSourceCode(tts1.getSourceCode());
    st.setUserId(user.getId());
    serviceFacade.getSourceManager().create(st);
    st = new SocialSource("", "", "", "");
    st.setSourceCode(tts2.getSourceCode());
    st.setUserId(user.getId());
    serviceFacade.getSourceManager().create(st);
    st = new SocialSource("", "", "", "");
    st.setSourceCode(tts3.getSourceCode());
    st.setUserId(user.getId());
    serviceFacade.getSourceManager().create(st);
    st = new SocialSource("", "", "", "");
    st.setSourceCode(tts4.getSourceCode());
    st.setUserId(user.getId());
    serviceFacade.getSourceManager().create(st);

    serviceFacade.getSourceManager().getActualSources(user.getId(), RelationType.WALL);
    Assert.assertEquals(tts1.posts.size(), 51);
    Assert.assertEquals(tts2.posts.size(), 11);
    Assert.assertEquals(tts3.posts.size(), 100);
    Assert.assertEquals(tts4.posts.size(), 217);
    Assert.assertEquals(tts3.getTimelineSource(null, null, null).getObjects(0, 10).size(), 10);
    Assert.assertEquals(tts3.getTimelineSource(null, null, null).getObjects(0, 100).size(), 100);
    Assert.assertEquals(tts3.getTimelineSource(null, null, null).getObjects(0, 300).size(), 100);

    // Simple read from sources
    List<Post> posts;
    serviceFacade.getPostManager().deleteAll(user.getId());
    serviceFacade.getRelationManager().deleteAll();
    posts = readFromSource(user, "t1", 0, 2);
    Assert.assertEquals(posts.size(), tts1.posts.size());
    Assert.assertEquals(posts.get(0).getPid(), "t1_50");
    Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t1_0");
    checkTimestamps(posts);

    posts = readFromSource(user, "t2", 0, 4);
    Assert.assertEquals(posts.size(), tts2.posts.size());
    Assert.assertEquals(posts.get(0).getPid(), "t2_10");
    Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t2_0");
    checkTimestamps(posts);

    posts = readFromSource(user, "t3", 0, 11);
    Assert.assertEquals(posts.size(), tts3.posts.size());
    Assert.assertEquals(posts.get(0).getPid(), "t3_99");
    Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t3_0");
    checkTimestamps(posts);

    posts = readFromSource(user, "t4", 0, 13);
    Assert.assertEquals(posts.size(), tts4.posts.size());
    Assert.assertEquals(posts.get(0).getPid(), "t4_216");
    Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t4_0");
    checkTimestamps(posts);

    // Simple read from all sources
    posts = readFromSource(user, null, 0, 15);
    Assert.assertEquals(posts.size(), 379);
    checkTimestamps(posts);
    serviceFacade.getPostManager().deleteAll(user.getId());
    serviceFacade.getRelationManager().deleteAll();
    posts = readFromSource(user, null, 0, 15);
    Assert.assertEquals(posts.size(), 379);
    checkTimestamps(posts);

    // Add new posts to t2 and t4
    ((LinkedList) tts2.posts).addFirst(makePost("t2_new1", tts2.getSourceCode(), user, 2000));
    ((LinkedList) tts2.posts).addFirst(makePost("t2_new2", tts2.getSourceCode(), user, 2010));
    ((LinkedList) tts2.posts).addFirst(makePost("t2_new3", tts2.getSourceCode(), user, 2100));
    ((LinkedList) tts4.posts).addFirst(makePost("t4_new1", tts4.getSourceCode(), user, 1999));
    ((LinkedList) tts4.posts).addFirst(makePost("t4_new2", tts4.getSourceCode(), user, 2010));
    ((LinkedList) tts4.posts).addFirst(makePost("t4_new3", tts4.getSourceCode(), user, 2011));

    posts = readFromSource(user, "t2", 0, 10);
    Assert.assertEquals(posts.size(), tts2.posts.size());
    Assert.assertEquals(posts.get(0).getPid(), "t2_new3");
    Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t2_0");
    checkTimestamps(posts);

    posts = readFromSource(user, "t4", 0, 11);
    Assert.assertEquals(posts.size(), tts4.posts.size());
    Assert.assertEquals(posts.get(0).getPid(), "t4_new3");
    Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t4_0");
    checkTimestamps(posts);

    posts = readFromSource(user, null, 0, 15);
    Assert.assertEquals(385, posts.size());
    checkTimestamps(posts);

    ((LinkedList) tts4.posts).addFirst(makePost("t4_new4", tts4.getSourceCode(), user, 2015));
    ((LinkedList) tts4.posts).addFirst(makePost("t4_new5", tts4.getSourceCode(), user, 2016));
    ((LinkedList) tts4.posts).addFirst(makePost("t4_new6", tts4.getSourceCode(), user, 2017));

    posts = readFromSource(user, "t4", 0, 11);
    Assert.assertEquals(posts.size(), tts4.posts.size());
    Assert.assertEquals(posts.get(0).getPid(), "t4_new6");
    Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t4_0");
    checkTimestamps(posts);

    posts = readFromSource(user, null, 0, 7);
    Assert.assertEquals(388, posts.size());
    checkTimestamps(posts);

    // Connect new source
    TestTimePagedSource tts5 = new TestTimePagedSource(user, "t5", 13, 1, 50, 0);
    serviceFacade.getSourceManager().registerNewBean("t5", tts5);
    st = new SocialSource("", "", "", "");
    st.setSourceCode(tts5.getSourceCode());
    st.setUserId(user.getId());
    serviceFacade.getSourceManager().create(st);

    posts = readFromSource(user, "t5", 0, 20);
    Assert.assertEquals(posts.size(), tts5.posts.size());
    Assert.assertEquals(posts.get(0).getPid(), "t5_12");
    Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t5_0");
    checkTimestamps(posts);

    posts = readFromSource(user, null, 0, 10);
    Assert.assertEquals(401, posts.size());
    checkTimestamps(posts);

    serviceFacade.getSourceManager().unRegisterBean("t1");
    serviceFacade.getSourceManager().unRegisterBean("t2");
    serviceFacade.getSourceManager().unRegisterBean("t3");
    serviceFacade.getSourceManager().unRegisterBean("t4");
    serviceFacade.getSourceManager().unRegisterBean("t5");

    // Read one source then connect and read another
    serviceFacade.getPostManager().deleteAll(user.getId());
    serviceFacade.getRelationManager().deleteAll();
    serviceFacade.getSourceManager().deleteAll(user.getId());
    TestTimePagedSource tts6 = new TestTimePagedSource(user, "t6", 100, 1, 5, 0);
    TestTimePagedSource tts7 = new TestTimePagedSource(user, "t7", 50, 1, 10, 0);
    serviceFacade.getSourceManager().registerNewBean("t6", tts6);
    st = new SocialSource("", "", "", "");
    st.setSourceCode(tts6.getSourceCode());
    st.setUserId(user.getId());
    serviceFacade.getSourceManager().create(st);

    posts = readFromSource(user, "t6", 0, 10);
    Assert.assertEquals(posts.size(), 100);

    serviceFacade.getSourceManager().registerNewBean("t7", tts7);
    st = new SocialSource("", "", "", "");
    st.setSourceCode(tts7.getSourceCode());
    st.setUserId(user.getId());
    serviceFacade.getSourceManager().create(st);

    posts = readFromSource(user, null, 0, 10);
    Assert.assertEquals(posts.size(), 150);

    serviceFacade.getSourceManager().unRegisterBean("t6");
    serviceFacade.getSourceManager().unRegisterBean("t7");

    // Read then delete then read again
    serviceFacade.getPostManager().deleteAll(user.getId());
    serviceFacade.getRelationManager().deleteAll();
    serviceFacade.getSourceManager().deleteAll(user.getId());
    TestTimePagedSource tts8 = new TestTimePagedSource(user, "t8", 100, 1, 10, 0);
    serviceFacade.getSourceManager().registerNewBean("t8", tts8);
    st = new SocialSource("", "", "", "");
    st.setSourceCode(tts8.getSourceCode());
    st.setUserId(user.getId());
    serviceFacade.getSourceManager().create(st);

    // del in the beginning
    posts = readFromSource(user, null, 0, 10);
    Assert.assertEquals(posts.size(), 100);
    posts = tts8.posts;
    for (int i = 0; i < 10; i++) {
      posts.remove(0);
    }
    posts = readFromSource(user, null, 0, 10);
    Assert.assertEquals(posts.size(), 100);

    // in the center
    posts = tts8.posts;
    for (int i = 0; i < 10; i++) {
      posts.remove(50);
    }
    posts = readFromSource(user, null, 0, 10);
    Assert.assertEquals(posts.size(), 100);

    // at the end
    posts = tts8.posts;
    for (int i = 0; i < 10; i++) {
      posts.remove(posts.size() - 1);
    }
    posts = readFromSource(user, null, 0, 10);
    Assert.assertEquals(posts.size(), 100);

    // full
    tts8.posts.clear();
    posts = readFromSource(user, null, 0, 10);
    Assert.assertEquals(posts.size(), 100);

    // Read 50 posts then delete some then read again
    serviceFacade.getPostManager().deleteAll(user.getId());
    serviceFacade.getRelationManager().deleteAll();
    posts.clear();
    tts8 = new TestTimePagedSource(user, "t8", 100, 1, 10, 0);
    serviceFacade.getSourceManager().registerNewBean("t8", tts8);
    TimelineObjectIterator it =
        serviceFacade.getPostManager().getObjectsIterator(RelationType.WALL);
    it.setCount(10);
    it.setOffset(0);
    for (int i = 0; i < 5; i++) {
      it.hasNext(
          user,
          null,
          null,
          null,
          Collections.singleton(tts8.getSourceCode()),
          RelationType.WALL,
          true);
      posts.addAll(it.next());
    }
    Assert.assertEquals(posts.size(), 50);
    posts = tts8.posts;
    for (int i = 0; i < 10; i++) {
      posts.remove(45);
    }
    posts = readFromSource(user, null, 0, 10);
    Assert.assertEquals(posts.size(), 90); // does not work - skips last 10 post (

    serviceFacade.getSourceManager().unRegisterBean("t8");
  }