From commits-return-17436-apmail-directory-commits-archive=directory.apache.org@directory.apache.org Sat Mar 15 03:23:39 2008 Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 48635 invoked from network); 15 Mar 2008 03:23:38 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 15 Mar 2008 03:23:38 -0000 Received: (qmail 30715 invoked by uid 500); 15 Mar 2008 03:23:35 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 30670 invoked by uid 500); 15 Mar 2008 03:23:35 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 30659 invoked by uid 99); 15 Mar 2008 03:23:35 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 14 Mar 2008 20:23:35 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 15 Mar 2008 03:23:06 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id F299B1A9832; Fri, 14 Mar 2008 20:23:16 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r637345 - in /directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src: main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java Date: Sat, 15 Mar 2008 03:23:16 -0000 To: commits@directory.apache.org From: akarasulu@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080315032316.F299B1A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: akarasulu Date: Fri Mar 14 20:23:14 2008 New Revision: 637345 URL: http://svn.apache.org/viewvc?rev=637345&view=rev Log: fixed bug in marshalling which does not preserve the last node reference when only one element is in the tree Modified: directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java Modified: directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java?rev=637345&r1=637344&r2=637345&view=diff ============================================================================== --- directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java (original) +++ directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMarshaller.java Fri Mar 14 20:23:14 2008 @@ -116,6 +116,7 @@ return data; } + /** * writes the content of the AVLTree to an output stream. * The current format is @@ -198,7 +199,7 @@ tree.setFirst( nodes[0] ); - if( nodes.length > 1 ) + if( nodes.length >= 1 ) { tree.setLast( nodes[ nodes.length - 1 ] ); } Modified: directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java?rev=637345&r1=637344&r2=637345&view=diff ============================================================================== --- directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java (original) +++ directory/sandbox/akarasulu/bigbang/apacheds/core-avl/src/test/java/org/apache/directory/server/core/avltree/AvlTreeMarshallerTest.java Fri Mar 14 20:23:14 2008 @@ -99,8 +99,7 @@ @Test - @Ignore( "marshaller fails to preserve last node reference" ) - public void testFirstLast() throws IOException + public void testRoundTripOneEntryFirstLast() throws IOException { AvlTree original = new AvlTree( comparator ); original.insert( 0 ); @@ -141,6 +140,34 @@ @Test + public void testRoundTripTwoEntriesFirstLast() throws IOException + { + AvlTree original = new AvlTree( comparator ); + original.insert( 0 ); + original.insert( 1 ); + byte[] bites = treeMarshaller.serialize( original ); + AvlTree deserialized = treeMarshaller.deserialize( bites ); + assertFalse( deserialized.isEmpty() ); + assertEquals( 2, deserialized.getSize() ); + assertEquals( 0, ( int ) deserialized.getFirst().getKey() ); + assertEquals( 1, ( int ) deserialized.getFirst().next.getKey() ); + + assertNotNull( original.getFirst() ); + assertEquals( 0, ( int ) original.getFirst().getKey() ); + + assertNotNull( deserialized.getFirst() ); + assertEquals( 0, ( int ) deserialized.getFirst().getKey() ); + + assertNotNull( original.getLast() ); + assertEquals( 1, ( int ) original.getLast().getKey() ); + + // this marshaller fails to preserve last node reference + assertNotNull( deserialized.getLast() ); + assertEquals( 1, ( int ) deserialized.getLast().getKey() ); + } + + + @Test public void testRoundTripManyEntries() throws Exception { AvlTree original = new AvlTree( comparator ); @@ -160,6 +187,42 @@ assertEquals( ii, ( int ) cursor.get() ); cursor.next(); } + } + + + @Test + public void testRoundTripManyEntriesFirstLast() throws Exception + { + AvlTree original = new AvlTree( comparator ); + for ( int ii = 0; ii < 100; ii++ ) + { + original.insert( ii ); + } + byte[] bites = treeMarshaller.serialize( original ); + AvlTree deserialized = treeMarshaller.deserialize( bites ); + assertFalse( deserialized.isEmpty() ); + assertEquals( 100, deserialized.getSize() ); + + AvlTreeCursor cursor = new AvlTreeCursor( deserialized ); + cursor.first(); + for ( int ii = 0; ii < 100; ii++ ) + { + assertEquals( ii, ( int ) cursor.get() ); + cursor.next(); + } + + assertNotNull( original.getFirst() ); + assertEquals( 0, ( int ) original.getFirst().getKey() ); + + assertNotNull( deserialized.getFirst() ); + assertEquals( 0, ( int ) deserialized.getFirst().getKey() ); + + assertNotNull( original.getLast() ); + assertEquals( 99, ( int ) original.getLast().getKey() ); + + // this marshaller fails to preserve last node reference + assertNotNull( deserialized.getLast() ); + assertEquals( 99, ( int ) deserialized.getLast().getKey() ); }