NHibernate Performance Testing
From OpenSimulator
(Difference between revisions)
m (→Remote MySQL results with MyISAM) |
(→NHibernate Performance Testing) |
||
Line 1: | Line 1: | ||
− | |||
− | |||
Here are results from performance tests run on SQLite and MySQL database. | Here are results from performance tests run on SQLite and MySQL database. | ||
Line 11: | Line 9: | ||
Performance test is execute with NAnt and .NET-framework 2.0. | Performance test is execute with NAnt and .NET-framework 2.0. | ||
− | + | == Results with Empty Tables == | |
− | + | === Remote MySQL results with MyISAM === | |
<pre> | <pre> | ||
Line 28: | Line 26: | ||
</pre> | </pre> | ||
− | + | === Local MySQL results with InnoDB === | |
<pre> | <pre> | ||
Line 43: | Line 41: | ||
</pre> | </pre> | ||
− | + | === Local MySQL results with MyISAM === | |
<pre> | <pre> | ||
Line 58: | Line 56: | ||
</pre> | </pre> | ||
− | + | === Local SQLite results === | |
<pre> | <pre> | ||
Line 73: | Line 71: | ||
</pre> | </pre> | ||
− | === Performance Test Code and Configuration | + | == Results with Tables Containing 10000 Objects == |
+ | |||
+ | === Remote MySQL results with MyISAM === | ||
+ | |||
+ | <pre> | ||
+ | 2009-01-01 19:14:09,439 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. | ||
+ | 2009-01-01 19:14:10,720 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:01.2630000 | ||
+ | 2009-01-01 19:14:10,721 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. | ||
+ | 2009-01-01 19:14:13,226 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:02.5050000 | ||
+ | 2009-01-01 19:14:13,226 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. | ||
+ | 2009-01-01 19:14:17,847 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:04.6210000 | ||
+ | 2009-01-01 19:14:17,848 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. | ||
+ | 2009-01-01 19:14:17,887 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0390000 | ||
+ | 2009-01-01 19:14:17,887 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. | ||
+ | 2009-01-01 19:14:19,078 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:01.1910000 | ||
+ | </pre> | ||
+ | |||
+ | === Local MySQL results with InnoDB === | ||
+ | |||
+ | <pre> | ||
+ | 2009-01-01 19:17:44,493 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. | ||
+ | 2009-01-01 19:17:44,525 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0200000 | ||
+ | 2009-01-01 19:17:44,525 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. | ||
+ | 2009-01-01 19:17:44,591 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0660000 | ||
+ | 2009-01-01 19:17:44,592 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. | ||
+ | 2009-01-01 19:17:44,642 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0500000 | ||
+ | 2009-01-01 19:17:44,643 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. | ||
+ | 2009-01-01 19:17:44,649 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0060000 | ||
+ | 2009-01-01 19:17:44,649 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. | ||
+ | 2009-01-01 19:17:44,675 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0260000 | ||
+ | </pre> | ||
+ | |||
+ | === Local MySQL results with MyISAM === | ||
+ | |||
+ | <pre> | ||
+ | 2009-01-01 19:20:07,657 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. | ||
+ | 2009-01-01 19:20:07,683 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0130000 | ||
+ | 2009-01-01 19:20:07,685 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. | ||
+ | 2009-01-01 19:20:07,727 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0420000 | ||
+ | 2009-01-01 19:20:07,728 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. | ||
+ | 2009-01-01 19:20:07,774 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0460000 | ||
+ | 2009-01-01 19:20:07,776 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. | ||
+ | 2009-01-01 19:20:07,781 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0050000 | ||
+ | 2009-01-01 19:20:07,782 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. | ||
+ | 2009-01-01 19:20:07,799 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0170000 | ||
+ | </pre> | ||
+ | |||
+ | === Local SQLite results === | ||
+ | |||
+ | <pre> | ||
+ | 2009-01-01 19:20:51,578 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. | ||
+ | 2009-01-01 19:20:51,969 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.3180000 | ||
+ | 2009-01-01 19:20:51,970 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. | ||
+ | 2009-01-01 19:20:52,037 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0670000 | ||
+ | 2009-01-01 19:20:52,037 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. | ||
+ | 2009-01-01 19:20:52,101 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0640000 | ||
+ | 2009-01-01 19:20:52,101 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. | ||
+ | 2009-01-01 19:20:52,121 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0200000 | ||
+ | 2009-01-01 19:20:52,122 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. | ||
+ | 2009-01-01 19:20:52,452 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.3300000 | ||
+ | </pre> | ||
+ | |||
+ | == Performance Test Code and Configuration == | ||
<pre> | <pre> |
Revision as of 09:21, 1 January 2009
Here are results from performance tests run on SQLite and MySQL database.
Local machine is Windows Vista 64 bit with Quad Core processor with 4G memory. MySQL has factory settings.
Remote mysql database machine is Ubuntu Linux virtual machine with one virtual processor and 2G memory. MySQL has factory settings.
Local machine ping is 10 ms to the remote machine.
Performance test is execute with NAnt and .NET-framework 2.0.
Contents |
Results with Empty Tables
Remote MySQL results with MyISAM
2009-01-01 18:41:08,928 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. 2009-01-01 18:41:10,182 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:01.2540000 2009-01-01 18:41:10,183 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. 2009-01-01 18:41:12,691 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:02.5080000 2009-01-01 18:41:12,691 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. 2009-01-01 18:41:17,160 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:04.4690000 2009-01-01 18:41:17,161 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. 2009-01-01 18:41:17,299 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.1380000 2009-01-01 18:41:17,299 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. 2009-01-01 18:41:18,664 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:01.3650000
Local MySQL results with InnoDB
2009-01-01 18:39:23,637 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. 2009-01-01 18:39:23,661 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0230000 2009-01-01 18:39:23,663 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. 2009-01-01 18:39:23,724 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0610000 2009-01-01 18:39:23,726 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. 2009-01-01 18:39:23,769 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0430000 2009-01-01 18:39:23,771 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. 2009-01-01 18:39:23,844 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0730000 2009-01-01 18:39:23,846 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. 2009-01-01 18:39:23,866 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0200000
Local MySQL results with MyISAM
2009-01-01 18:38:39,584 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. 2009-01-01 18:38:39,598 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0130000 2009-01-01 18:38:39,599 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. 2009-01-01 18:38:39,639 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0400000 2009-01-01 18:38:39,640 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. 2009-01-01 18:38:39,686 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0460000 2009-01-01 18:38:39,686 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. 2009-01-01 18:38:39,762 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0760000 2009-01-01 18:38:39,763 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. 2009-01-01 18:38:39,777 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0140000
Local SQLite results
2009-01-01 18:44:02,623 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. 2009-01-01 18:44:02,660 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0370000 2009-01-01 18:44:02,660 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. 2009-01-01 18:44:02,710 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0500000 2009-01-01 18:44:02,711 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. 2009-01-01 18:44:02,751 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0400000 2009-01-01 18:44:02,752 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. 2009-01-01 18:44:02,823 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0710000 2009-01-01 18:44:02,823 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. 2009-01-01 18:44:02,860 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0370000
Results with Tables Containing 10000 Objects
Remote MySQL results with MyISAM
2009-01-01 19:14:09,439 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. 2009-01-01 19:14:10,720 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:01.2630000 2009-01-01 19:14:10,721 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. 2009-01-01 19:14:13,226 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:02.5050000 2009-01-01 19:14:13,226 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. 2009-01-01 19:14:17,847 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:04.6210000 2009-01-01 19:14:17,848 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. 2009-01-01 19:14:17,887 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0390000 2009-01-01 19:14:17,887 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. 2009-01-01 19:14:19,078 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:01.1910000
Local MySQL results with InnoDB
2009-01-01 19:17:44,493 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. 2009-01-01 19:17:44,525 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0200000 2009-01-01 19:17:44,525 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. 2009-01-01 19:17:44,591 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0660000 2009-01-01 19:17:44,592 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. 2009-01-01 19:17:44,642 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0500000 2009-01-01 19:17:44,643 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. 2009-01-01 19:17:44,649 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0060000 2009-01-01 19:17:44,649 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. 2009-01-01 19:17:44,675 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0260000
Local MySQL results with MyISAM
2009-01-01 19:20:07,657 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. 2009-01-01 19:20:07,683 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0130000 2009-01-01 19:20:07,685 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. 2009-01-01 19:20:07,727 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0420000 2009-01-01 19:20:07,728 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. 2009-01-01 19:20:07,774 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0460000 2009-01-01 19:20:07,776 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. 2009-01-01 19:20:07,781 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0050000 2009-01-01 19:20:07,782 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. 2009-01-01 19:20:07,799 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0170000
Local SQLite results
2009-01-01 19:20:51,578 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Inserting 100 objects. 2009-01-01 19:20:51,969 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.3180000 2009-01-01 19:20:51,970 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Updating 100 objects. 2009-01-01 19:20:52,037 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0670000 2009-01-01 19:20:52,037 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects by id. 2009-01-01 19:20:52,101 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0640000 2009-01-01 19:20:52,101 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Selecting 100 objects at once. 2009-01-01 19:20:52,121 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.0200000 2009-01-01 19:20:52,122 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Deleting 100 objects. 2009-01-01 19:20:52,452 [TestRunnerThread] INFO Example.Library.Resources.DatabaseTest [(null)] - Took: 00:00:00.3300000
Performance Test Code and Configuration
using System; using System.Collections.Generic; using System.Text; using NUnit.Framework; using NHibernate; using NHibernate.Cfg; using System.IO; using NHibernate.Tool.hbm2ddl; using log4net.Repository.Hierarchy; using log4net; using log4net.Config; using System.Collections; namespace Example.Library.Resources { [TestFixture] public class DatabasePerformanceTest { private static readonly ILog log = LogManager.GetLogger(typeof(DatabaseTest)); private ISessionFactory sessions; private const int INITIAL_OBJECT_COUNT = 10000; private const int TEST_OBJECT_COUNT = 100; [SetUp] public void SetUp() { // log4net configuration XmlConfigurator.Configure(); // hibernate configuration Configuration configuration = new Configuration(); configuration.AddAssembly(this.GetType().Assembly); if (configuration.Properties["dialect"].Equals("NHibernate.Driver.SQLite20Driver")&& !File.Exists("OpenSimExample.db")) { SchemaExport schemaExport = new SchemaExport(configuration); schemaExport.Create(true, true); } sessions = configuration.BuildSessionFactory(); using (IStatelessSession session = sessions.OpenStatelessSession()) { using (ITransaction transaction = session.BeginTransaction()) { IQuery q = session.CreateQuery("from Example.Library.Resources.TestObject"); IList loadedObjects = q.List(); foreach (TestObject testObject in loadedObjects) { session.Delete(testObject); } transaction.Commit(); } using (ITransaction transaction = session.BeginTransaction()) { for (int i = 0; i < INITIAL_OBJECT_COUNT; i++) { TestObject newObject = new TestObject(); newObject.TestId = Guid.NewGuid(); newObject.Name = "test-object-" + i; session.Insert(newObject); } transaction.Commit(); } } } [Test] public void TestDatabasePerformance() { List<TestObject> testObjects = new List<TestObject>(); DateTime timeStamp; log.Info("Inserting " + TEST_OBJECT_COUNT + " objects."); timeStamp = DateTime.Now; using (IStatelessSession session = sessions.OpenStatelessSession()) { using (ITransaction transaction = session.BeginTransaction()) { for (int i = 0; i < TEST_OBJECT_COUNT; i++) { TestObject newObject = new TestObject(); newObject.TestId = Guid.NewGuid(); newObject.Name = "test-object-" + i; session.Insert(newObject); testObjects.Add(newObject); } transaction.Commit(); } } log.Info("Took: " + DateTime.Now.Subtract(timeStamp)); timeStamp = DateTime.Now; log.Info("Updating " + TEST_OBJECT_COUNT + " objects."); using (IStatelessSession session = sessions.OpenStatelessSession()) { using (ITransaction transaction = session.BeginTransaction()) { for (int i = 0; i < TEST_OBJECT_COUNT; i++) { TestObject oldObject = testObjects[i]; TestObject loadedObject = (TestObject)session.Get("Example.Library.Resources.TestObject", oldObject.TestId); session.Update(loadedObject); } transaction.Commit(); } } log.Info("Took: " + DateTime.Now.Subtract(timeStamp)); timeStamp = DateTime.Now; log.Info("Selecting " + TEST_OBJECT_COUNT + " objects by id."); using (IStatelessSession session = sessions.OpenStatelessSession()) { for (int i = 0; i < TEST_OBJECT_COUNT; i++) { TestObject oldObject = testObjects[i]; TestObject loadedObject = (TestObject)session.Get("Example.Library.Resources.TestObject", oldObject.TestId); Assert.AreEqual(oldObject.Name, loadedObject.Name); testObjects[i] = loadedObject; } } log.Info("Took: " + DateTime.Now.Subtract(timeStamp)); timeStamp = DateTime.Now; log.Info("Selecting " + TEST_OBJECT_COUNT + " objects at once."); using (IStatelessSession session = sessions.OpenStatelessSession()) { IQuery q = session.CreateQuery("from Example.Library.Resources.TestObject"); q.SetMaxResults(TEST_OBJECT_COUNT); IList loadedObjects = q.List(); foreach (TestObject testObject in loadedObjects) { // Make sure object is not lazy loaded. Guid id = testObject.TestId; String name = testObject.Name; } Assert.AreEqual(TEST_OBJECT_COUNT, testObjects.Count); } log.Info("Took: " + DateTime.Now.Subtract(timeStamp)); timeStamp = DateTime.Now; log.Info("Deleting " + TEST_OBJECT_COUNT + " objects."); using (IStatelessSession session = sessions.OpenStatelessSession()) { using (ITransaction transaction = session.BeginTransaction()) { for (int i = 0; i < TEST_OBJECT_COUNT; i++) { TestObject loadedObject = testObjects[i]; session.Delete(loadedObject); } transaction.Commit(); } } log.Info("Took: " + DateTime.Now.Subtract(timeStamp)); timeStamp = DateTime.Now; } } }
The configuration for the test dll:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" /> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <!-- <session-factory> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.driver_class">NHibernate.Driver.SQLite20Driver</property> <property name="connection.connection_string"> Data Source=OpenSimExample.db;Version=3 </property> <property name="dialect">NHibernate.Dialect.SQLiteDialect</property> <property name="query.substitutions">true=1;false=0</property> <property name="show_sql">false</property> </session-factory> --> <session-factory> <property name="connection.provider"> NHibernate.Connection.DriverConnectionProvider, NHibernate </property> <property name="connection.connection_string"> Server=server;Database=database;User ID=user;Password=password </property> <property name="dialect">NHibernate.Dialect.MySQL5Dialect</property> </session-factory> </hibernate-configuration> <log4net debug="false"> <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="White" /> <backColor value="Red, HighIntensity" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <root> <priority value="ERROR" /> <appender-ref ref="ColoredConsoleAppender" /> </root> <logger name="Example.Library"> <level value="INFO" /> </logger> </log4net> </configuration>