From: <te...@us...> - 2009-02-06 18:25:57
|
Revision: 4061 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4061&view=rev Author: tehlike Date: 2009-02-06 18:25:52 +0000 (Fri, 06 Feb 2009) Log Message: ----------- Ignored test that verifies SessionFactory is Serializable Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/ trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/Item.cs trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/Item.hbm.xml trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/SessionFactorySerializationFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-06 17:27:04 UTC (rev 4060) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-06 18:25:52 UTC (rev 4061) @@ -920,6 +920,8 @@ <Compile Include="QueryTest\PositionalParametersFixture.cs" /> <Compile Include="QueryTest\QueryParametersFixture.cs" /> <Compile Include="ReflectionOptimizerTest\LcgFixture.cs" /> + <Compile Include="SessionFactoryTest\Item.cs" /> + <Compile Include="SessionFactoryTest\SessionFactorySerializationFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaUpdate\MigrationFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaUpdate\Version.cs" /> <Compile Include="SecondLevelCacheTest\AnotherItem.cs" /> @@ -1643,6 +1645,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="SessionFactoryTest\Item.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1289\Mappings.hbm.xml" /> <EmbeddedResource Include="TypesTest\TimeSpanClass.hbm.xml" /> <EmbeddedResource Include="TypesTest\TimeSpanInt64Class.hbm.xml" /> @@ -1771,4 +1774,4 @@ if exist "$(ProjectDir)hibernate.cfg.xml" (copy "$(ProjectDir)hibernate.cfg.xml" "hibernate.cfg.xml") copy /y "..\..\..\NHibernate.DomainModel\ABC.hbm.xml" "ABC.hbm.xml"</PostBuildEvent> </PropertyGroup> -</Project> +</Project> \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/Item.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/Item.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/Item.cs 2009-02-06 18:25:52 UTC (rev 4061) @@ -0,0 +1,66 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.SessionFactoryTest +{ + public class Item + { + private int id; + private IList children = new ArrayList(); + private Item parent; + private string name; + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual Item Parent + { + get { return parent; } + set { parent = value; } + } + + public virtual int Id + { + get { return id; } + set { id = value; } + } + + public virtual IList Children + { + get { return children; } + set { children = value; } + } + } + public class AnotherItem + { + private int id; + private string name; + + public AnotherItem() + { + + } + + public AnotherItem(string name) + { + this.name = name; + } + + public virtual int Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/Item.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/Item.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/Item.hbm.xml 2009-02-06 18:25:52 UTC (rev 4061) @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.SessionFactoryTest" + assembly="NHibernate.Test"> + <class name="Item"> + <cache usage="read-write"/> + <id name="Id"> + <generator class="assigned"/> + </id> + <property name="Name"/> + <many-to-one name="Parent" column="ParentId" + lazy="proxy" not-found="ignore" + class="Item"/> + <bag name="Children" + table="Item" + lazy="true"> + <cache usage="read-write"/> + <key column="ParentId" foreign-key="none"/> + <one-to-many class="Item"/> + </bag> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/SessionFactorySerializationFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/SessionFactorySerializationFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/SessionFactorySerializationFixture.cs 2009-02-06 18:25:52 UTC (rev 4061) @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Runtime.Serialization.Formatters.Binary; +using System.Text; +using NHibernate.Engine; +using NHibernate.Impl; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.SessionFactoryTest +{ + [TestFixture,Ignore] + public class SessionFactorySerializationFixture:TestCase + { + protected ISessionFactory SerializeAndDeserialize() + { + var ncfg = base.cfg; + ncfg.Properties["session_factory_name"] = "myfactory"; + var sessionFactory = ncfg.BuildSessionFactory(); + var uuidField = typeof (SessionFactoryImpl).GetField("uuid", + BindingFlags.Instance | + BindingFlags.NonPublic | + BindingFlags.GetField); + var uuid = uuidField.GetValue(sessionFactory) as string; + var stream = new MemoryStream(); + var formatter = new BinaryFormatter(); + formatter.Serialize(stream, sessionFactory); + sessionFactory.Dispose(); + stream.Position = 0; + var factory = formatter.Deserialize(stream) as ISessionFactoryImplementor; + stream.Dispose(); + return factory; + } + protected void Serialize(ISessionFactoryImplementor factory,MemoryStream ms) + { + var formatter = new BinaryFormatter(); + formatter.Serialize(ms, this.sessions); + } + [Test] + public void SessionFactory_should_be_serializable() + { + using (var stream = new MemoryStream()) + { + Serialize(this.sessions, stream); + Assert.That(stream.Length, Is.Not.EqualTo(0)); + } + } + + [Test] + public void SessionFactory_should_be_deserialized() + { + var factory = SerializeAndDeserialize(); + Assert.That(factory, Is.Not.Null); + } + [Test] + public void CRUD_works_correctly_after_deserialization() + { + var sessionFactory = SerializeAndDeserialize(); + + using(var session=sessionFactory.OpenSession()) + using(var tran=session.BeginTransaction()) + { + var obj = new Item {Name = "object1"}; + var obj2 = new Item {Name = "object2"}; + obj.Children.Add(obj2); + obj2.Parent = obj; + session.Save(obj); + session.Save(obj); + tran.Commit(); + } + + using (var session = sessionFactory.OpenSession()) + using (var tran = session.BeginTransaction()) + { + var item = session.Get<Item>(1); + Assert.That(item, Is.Not.Null); + Assert.That(item.Children.Count, Is.EqualTo(1)); + + item.Name = "object5"; + session.Save(item); + tran.Commit(); + } + + using(var session=sessionFactory.OpenSession()) + { + var item = session.Get<Item>(1); + Assert.That(item.Name, Is.EqualTo("object5")); + } + + using (var session = sessionFactory.OpenSession()) + { + var item = session.Get<Item>(1); + session.Delete(item); + session.Evict(item); + item = session.Get<Item>(1); + Assert.That(item, Is.Null); + } + + } + protected override System.Collections.IList Mappings + { + get + { + return new string[] + { + "SessionFactoryTest.Item.hbm.xml", + + }; + } + } + protected override string MappingsAssembly + { + get + { + return "NHibernate.Test"; + } + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |