From 29f54db90a07a51be5ca33f9edb972e1922f51a9 Mon Sep 17 00:00:00 2001 From: Charles Krinke Date: Mon, 9 Feb 2009 22:07:27 +0000 Subject: Thank you kindly, TLaukkan (Timmil) for a patch that: * Fixed and added athursv's BasicEstateTest * Added MySQLEstateTest * Added SQLiteEstateTest --- OpenSim/Data/MySQL/Tests/MySQLEstateTest.cs | 99 +++++++++++++++++ OpenSim/Data/SQLite/Tests/SQLiteEstateTest.cs | 65 +++++++++++ OpenSim/Data/Tests/BasicEstateTest.cs | 154 ++++++++++++++++++++++++++ 3 files changed, 318 insertions(+) create mode 100644 OpenSim/Data/MySQL/Tests/MySQLEstateTest.cs create mode 100644 OpenSim/Data/SQLite/Tests/SQLiteEstateTest.cs create mode 100644 OpenSim/Data/Tests/BasicEstateTest.cs (limited to 'OpenSim/Data') diff --git a/OpenSim/Data/MySQL/Tests/MySQLEstateTest.cs b/OpenSim/Data/MySQL/Tests/MySQLEstateTest.cs new file mode 100644 index 0000000..17e71e1 --- /dev/null +++ b/OpenSim/Data/MySQL/Tests/MySQLEstateTest.cs @@ -0,0 +1,99 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.IO; +using System.Collections.Generic; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; +using OpenSim.Framework; +using OpenSim.Data.Tests; +using OpenSim.Data.MySQL; +using OpenSim.Region.Framework.Scenes; +using OpenMetaverse; + +namespace OpenSim.Data.MySQL.Tests +{ + [TestFixture] + public class MySQLEstateTest : BasicEstateTest + { + public string file; + public MySQLManager database; + public string connect = "Server=localhost;Port=3306;Database=opensim-nunit;User ID=opensim-nunit;Password=opensim-nunit;Pooling=false;"; + + [TestFixtureSetUp] + public void Init() + { + SuperInit(); + // If we manage to connect to the database with the user + // and password above it is our test database, and run + // these tests. If anything goes wrong, ignore these + // tests. + try + { + database = new MySQLManager(connect); + regionDb = new MySQLDataStore(); + regionDb.Initialise(connect); + db = new MySQLEstateStore(); + db.Initialise(connect); + } + catch (Exception e) + { + System.Console.WriteLine("Exception {0}", e); + Assert.Ignore(); + } + } + + [TestFixtureTearDown] + public void Cleanup() + { + if (regionDb != null) + { + regionDb.Dispose(); + } + // if a new table is added, it has to be dropped here + if (database != null) + { + database.ExecuteSql("drop table migrations"); + database.ExecuteSql("drop table prims"); + database.ExecuteSql("drop table primshapes"); + database.ExecuteSql("drop table primitems"); + database.ExecuteSql("drop table terrain"); + database.ExecuteSql("drop table land"); + database.ExecuteSql("drop table landaccesslist"); + database.ExecuteSql("drop table regionban"); + database.ExecuteSql("drop table regionsettings"); + database.ExecuteSql("drop table estate_managers"); + database.ExecuteSql("drop table estate_groups"); + database.ExecuteSql("drop table estate_users"); + database.ExecuteSql("drop table estateban"); + database.ExecuteSql("drop table estate_settings"); + database.ExecuteSql("drop table estate_map"); + } + } + } +} diff --git a/OpenSim/Data/SQLite/Tests/SQLiteEstateTest.cs b/OpenSim/Data/SQLite/Tests/SQLiteEstateTest.cs new file mode 100644 index 0000000..8f27b65 --- /dev/null +++ b/OpenSim/Data/SQLite/Tests/SQLiteEstateTest.cs @@ -0,0 +1,65 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.IO; +using System.Collections.Generic; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; +using OpenSim.Framework; +using OpenSim.Data.Tests; +using OpenSim.Data.SQLite; +using OpenSim.Region.Framework.Scenes; +using OpenMetaverse; + +namespace OpenSim.Data.SQLite.Tests +{ + [TestFixture] + public class SQLiteEstateTest : BasicEstateTest + { + public string file = "regiontest.db"; + public string connect; + + [TestFixtureSetUp] + public void Init() + { + SuperInit(); + file = Path.GetTempFileName() + ".db"; + connect = "URI=file:" + file + ",version=3"; + db = new SQLiteEstateStore(); + db.Initialise(connect); + regionDb = new SQLiteRegionData(); + regionDb.Initialise(connect); + } + + [TestFixtureTearDown] + public void Cleanup() + { + regionDb.Dispose(); + } + } +} diff --git a/OpenSim/Data/Tests/BasicEstateTest.cs b/OpenSim/Data/Tests/BasicEstateTest.cs new file mode 100644 index 0000000..ef15150 --- /dev/null +++ b/OpenSim/Data/Tests/BasicEstateTest.cs @@ -0,0 +1,154 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Text; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; +using OpenSim.Framework; +using OpenSim.Data; +using OpenMetaverse; +using OpenSim.Region.Framework.Interfaces; + +namespace OpenSim.Data.Tests +{ + public class BasicEstateTest + { + public IEstateDataStore db; + public IRegionDataStore regionDb; + public UUID prim1; + public static Random random; + + public void SuperInit() + { + try + { + log4net.Config.XmlConfigurator.Configure(); + } + catch (Exception) + { + // I don't care, just leave log4net off + } + prim1 = UUID.Random(); + random = new Random(); + + } + + [Test] + public void T010_StoreEstateSettings() + { + // Initializing field values. Avoid randomness. For checking ranges use different parameter sets + // for mix and max values. If you use random values the tests are not _repeatable_. + string estateName = "test-estate"; + uint parentEstateID = 2; + float billableFactor = 3; + int priceMeter = 4; + int redirectGridX = 5; + int redirectGridY = 6; + bool useGlobalTime = true; + bool fixedSun = true; + double sunPosition = 7; + bool allowVoice = true; + bool allowDirectTeleport = true; + bool denyAnonymous = true; + bool denyIdentified = true; + bool denyTransacted = true; + bool abuseEmailtoEstateOwner = true; + bool blockDwell = true; + bool estateskipScripts = true; + bool taxFree = true; + bool publicAccess = true; + string abuseMail = "test-email@nowhere.com"; + UUID estateOwner = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed7"); + bool denyMinors = (random.NextDouble() > 0.5)? true : false; + + // Lets choose random region ID + UUID regionId = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed7"); + + // Letting estate store generate rows to database for us + EstateSettings es = db.LoadEstateSettings(regionId); + + // Setting field values to the on demand create settings object. + es.EstateName = estateName; + es.ParentEstateID = parentEstateID; + es.BillableFactor = billableFactor; + es.PricePerMeter = priceMeter; + es.RedirectGridX = redirectGridX; + es.RedirectGridY = redirectGridY; + es.UseGlobalTime = useGlobalTime; + es.FixedSun = fixedSun; + es.SunPosition = sunPosition; + es.AllowVoice = allowVoice; + es.AllowDirectTeleport = allowDirectTeleport; + es.DenyAnonymous = denyAnonymous; + es.DenyIdentified = denyIdentified; + es.DenyTransacted = denyTransacted; + es.AbuseEmailToEstateOwner = abuseEmailtoEstateOwner; + es.BlockDwell = blockDwell; + es.EstateSkipScripts = estateskipScripts; + es.TaxFree = taxFree; + es.PublicAccess = publicAccess; + es.AbuseEmail = abuseMail; + es.EstateOwner = estateOwner; + es.DenyMinors = denyMinors; + + // Saving settings. + db.StoreEstateSettings(es); + + // Loading settings to another instance variable. + EstateSettings nes = db.LoadEstateSettings(regionId); + + // Checking that loaded values are correct. + Assert.That(estateName, Is.EqualTo(nes.EstateName)); + Assert.That(parentEstateID, Is.EqualTo(nes.ParentEstateID)); + Assert.That(billableFactor, Is.EqualTo(nes.BillableFactor)); + Assert.That(priceMeter, Is.EqualTo(nes.PricePerMeter)); + Assert.That(redirectGridX, Is.EqualTo(nes.RedirectGridX)); + Assert.That(redirectGridY, Is.EqualTo(nes.RedirectGridY)); + Assert.That(useGlobalTime, Is.EqualTo(nes.UseGlobalTime)); + Assert.That(fixedSun, Is.EqualTo(nes.FixedSun)); + Assert.That(sunPosition, Is.EqualTo(nes.SunPosition)); + Assert.That(allowVoice, Is.EqualTo(nes.AllowVoice)); + Assert.That(allowDirectTeleport, Is.EqualTo(nes.AllowDirectTeleport)); + Assert.That(denyAnonymous, Is.EqualTo(nes.DenyAnonymous)); + Assert.That(denyIdentified, Is.EqualTo(nes.DenyIdentified)); + Assert.That(denyTransacted, Is.EqualTo(nes.DenyTransacted)); + Assert.That(abuseEmailtoEstateOwner, Is.EqualTo(nes.AbuseEmailToEstateOwner)); + Assert.That(blockDwell, Is.EqualTo(nes.BlockDwell)); + Assert.That(estateskipScripts, Is.EqualTo(nes.EstateSkipScripts)); + Assert.That(taxFree, Is.EqualTo(nes.TaxFree)); + Assert.That(publicAccess, Is.EqualTo(nes.PublicAccess)); + Assert.That(abuseMail, Is.EqualTo(nes.AbuseEmail)); + Assert.That(estateOwner, Is.EqualTo(nes.EstateOwner)); + Assert.That(denyMinors, Is.EqualTo(nes.DenyMinors)); + + } + + } +} -- cgit v1.1