From: <fab...@us...> - 2009-03-17 16:51:58
|
Revision: 4142 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4142&view=rev Author: fabiomaulo Date: 2009-03-17 16:51:43 +0000 (Tue, 17 Mar 2009) Log Message: ----------- Fix NH-1671 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Util/SoftLimitMRUCache.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/UtilityTest/SoftLimitMRUCacheFixture.cs Modified: trunk/nhibernate/src/NHibernate/Util/SoftLimitMRUCache.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Util/SoftLimitMRUCache.cs 2009-03-17 05:01:00 UTC (rev 4141) +++ trunk/nhibernate/src/NHibernate/Util/SoftLimitMRUCache.cs 2009-03-17 16:51:43 UTC (rev 4142) @@ -32,8 +32,8 @@ // actual cache of the entries. soft references are used for both the keys and the // values here since the values pertaining to the MRU entries are kept in a // separate hard reference cache (to avoid their enqueuement/garbage-collection). - [NonSerialized] - private readonly IDictionary softReferenceCache = new Hashtable(); + [NonSerialized] + private readonly IDictionary softReferenceCache = new WeakHashtable(); // the MRU cache used to keep hard references to the most recently used query plans; // note : LRU here is a bit of a misnomer, it indicates that LRU entries are removed, the Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-17 05:01:00 UTC (rev 4141) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-17 16:51:43 UTC (rev 4142) @@ -1113,6 +1113,7 @@ <Compile Include="UtilityTest\SafetyEnumerableFixture.cs" /> <Compile Include="UtilityTest\SequencedHashMapFixture.cs" /> <Compile Include="UtilityTest\SingletonEnumerableFixture.cs" /> + <Compile Include="UtilityTest\SoftLimitMRUCacheFixture.cs" /> <Compile Include="UtilityTest\StringHelperFixture.cs" /> <Compile Include="UtilityTest\StringTokenizerFixture.cs" /> <Compile Include="UtilityTest\ThreadSafeDictionaryFixture.cs" /> Added: trunk/nhibernate/src/NHibernate.Test/UtilityTest/SoftLimitMRUCacheFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/UtilityTest/SoftLimitMRUCacheFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/UtilityTest/SoftLimitMRUCacheFixture.cs 2009-03-17 16:51:43 UTC (rev 4142) @@ -0,0 +1,29 @@ +using System; +using NHibernate.Util; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.UtilityTest +{ + [TestFixture] + public class SoftLimitMRUCacheFixture + { + [Test] + public void DontFillUp() + { + // NH-1671 + const int count = 32; + var s = new SoftLimitMRUCache(count); + for (int i = 0; i < count+10; i++) + { + s.Put(new object(), new object()); + } + Assert.That(s.Count, Is.EqualTo(count)); + + GC.Collect(); + s.Put(new object(), new object()); + + Assert.That(s.SoftCount, Is.EqualTo(count + 1)); + } + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |