예제 #1
0
  /**
   * Compare two pages (WikiPage version). Compares them by name first. If the same name, compares
   * their versions.
   *
   * @param page1 the first page
   * @param page2 the second page
   * @return see java.util.Comparator
   * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
   */
  public int compare(WikiPage page1, WikiPage page2) {
    if (page1 == page2) return 0; // the same object

    int res = m_comparator.compare(page1.getName(), page2.getName());
    if (res == 0) res = page1.getVersion() - page2.getVersion();
    return res;
  }
  public void testMillionChanges() throws Exception {
    String text = "";
    String name = NAME1;
    int maxver = 2000; // Save 2000 versions.
    Benchmark mark = new Benchmark();

    mark.start();
    for (int i = 0; i < maxver; i++) {
      text = text + ".";
      engine.saveText(name, text);
    }

    mark.stop();

    System.out.println("Benchmark: " + mark.toString(2000) + " pages/second");
    WikiPage pageinfo = engine.getPage(NAME1);

    assertEquals("wrong version", maxver, pageinfo.getVersion());

    // +2 comes from \r\n.
    assertEquals("wrong text", maxver + 2, engine.getText(NAME1).length());
  }