On Jan 30, 2009, at 12:37 PM, fmancinelli (SVN) wrote:

> Author: fmancinelli
> Date: 2009-01-30 12:37:35 +0100 (Fri, 30 Jan 2009)
> New Revision: 15898
>
> Modified:
>   enterprise/trunk/distribution-test/xmlrpc-tests/src/test/it/org/ 
> xwiki/xmlrpc/PagesTest.java
> Log:
> [Minor] Fixed a stability bug of the page history test.
>
> The problem was due to the fact that if pages are stored too fast,  
> they will have the same timestamp in the modification list (the  
> granularity is 1 sec.) and they will be returned in an arbitrary  
> order (depending on the server side query result).
>
> This means that the modified page in the test, even if it's present  
> in the modification list, could not be returned as the first item of  
> that list, causing the assertion to fail.
>
> The solution was to wait 2 seconds before storing the page. This  
> will guarantee that the timestamp will surely be different from any  
> previous modification (and that the page will be on the top of the  
> list if things work well)
>
> Modified: enterprise/trunk/distribution-test/xmlrpc-tests/src/test/ 
> it/org/xwiki/xmlrpc/PagesTest.java
> ===================================================================
> --- enterprise/trunk/distribution-test/xmlrpc-tests/src/test/it/org/ 
> xwiki/xmlrpc/PagesTest.java   2009-01-30 10:27:52 UTC (rev 15897)
> +++ enterprise/trunk/distribution-test/xmlrpc-tests/src/test/it/org/ 
> xwiki/xmlrpc/PagesTest.java   2009-01-30 11:37:35 UTC (rev 15898)
> @@ -663,13 +663,33 @@
>
>         TestUtils.banner("TEST:  
> getAllModifiedPageHistoryCorrectness()");
>
> +        /*
> +         * Wait 2 seconds before making the modification. This is  
> necessary because if pages are stored in the same
> +         * second, they will have the same timestamp and they could  
> be returned in an arbitrary order making the
> +         * following assert fail randomly
> +         */
> +        try {
> +            Thread.sleep(2000);
> +        } catch (InterruptedException e) {
> +
> +        }

ouch this is bad... We need to find a better way IMO, like changing  
the date and adding 1 second after it's stored or something but not  
using timers.

-Vincent

>
> +
>         XWikiPage page = this.rpc.getPage(pages.get(0).getId());
>
> +        System.out.format("Modifying: %s\n", page);
> +
>         page.setContent(String.format("Modified %d",  
> System.currentTimeMillis()));
>         page = rpc.storePage(page);
>
> -        List<XWikiPageHistorySummary> modifications =  
> rpc.getModifiedPagesHistory(1, 0);
> +        System.out.format("Modified: %s\n", page);
>
> +        List<XWikiPageHistorySummary> modifications =  
> rpc.getModifiedPagesHistory(3, 0);
> +
> +        System.out.format("Modifications:\n");
> +        for (XWikiPageHistorySummary modification : modifications) {
> +            System.out.format("%s\n", modification);
> +        }
> +
>         assertEquals(page.getId(),  
> modifications.get(0).getBasePageId());
>         assertEquals(page.getModified(),  
> modifications.get(0).getModified());
>     }

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to