All data tests made DBMS-independent

soprefactor
AlexRa 2010-05-17 15:54:43 +03:00
parent 91ad1f4ee7
commit 7f70ae0ebd
10 changed files with 158 additions and 608 deletions

View File

@ -37,7 +37,7 @@ using OpenSim.Region.Framework.Interfaces;
namespace OpenSim.Data.MSSQL namespace OpenSim.Data.MSSQL
{ {
public class MSSQLEstateData : IEstateDataStore public class MSSQLEstateStore : IEstateDataStore
{ {
private const string _migrationStore = "EstateStore"; private const string _migrationStore = "EstateStore";

View File

@ -1,116 +0,0 @@
/*
* 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 OpenSimulator 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 NUnit.Framework;
using OpenSim.Data.Tests;
using log4net;
using System.Reflection;
using OpenSim.Tests.Common;
using MySql.Data.MySqlClient;
namespace OpenSim.Data.MySQL.Tests
{
[TestFixture, DatabaseTest]
public class MySQLEstateTest : BasicEstateTest
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public string file;
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
{
// clear db incase to ensure we are in a clean state
ClearDB();
regionDb = new MySQLDataStore();
regionDb.Initialise(connect);
db = new MySQLEstateStore();
db.Initialise(connect);
}
catch (Exception e)
{
m_log.Error("Exception {0}", e);
Assert.Ignore();
}
}
[TestFixtureTearDown]
public void Cleanup()
{
if (regionDb != null)
{
regionDb.Dispose();
}
ClearDB();
}
private void ClearDB()
{
// if a new table is added, it has to be dropped here
ExecuteSql("drop table if exists migrations");
ExecuteSql("drop table if exists prims");
ExecuteSql("drop table if exists primshapes");
ExecuteSql("drop table if exists primitems");
ExecuteSql("drop table if exists terrain");
ExecuteSql("drop table if exists land");
ExecuteSql("drop table if exists landaccesslist");
ExecuteSql("drop table if exists regionban");
ExecuteSql("drop table if exists regionsettings");
ExecuteSql("drop table if exists estate_managers");
ExecuteSql("drop table if exists estate_groups");
ExecuteSql("drop table if exists estate_users");
ExecuteSql("drop table if exists estateban");
ExecuteSql("drop table if exists estate_settings");
ExecuteSql("drop table if exists estate_map");
}
/// <summary>
/// Execute a MySqlCommand
/// </summary>
/// <param name="sql">sql string to execute</param>
private void ExecuteSql(string sql)
{
using (MySqlConnection dbcon = new MySqlConnection(connect))
{
dbcon.Open();
MySqlCommand cmd = new MySqlCommand(sql, dbcon);
cmd.ExecuteNonQuery();
}
}
}
}

View File

@ -1,99 +0,0 @@
/*
* 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 OpenSimulator 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 NUnit.Framework;
using OpenSim.Data.Tests;
using log4net;
using System.Reflection;
using OpenSim.Tests.Common;
using MySql.Data.MySqlClient;
namespace OpenSim.Data.MySQL.Tests
{
[TestFixture, DatabaseTest]
public class MySQLInventoryTest : BasicInventoryTest
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public string file;
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
{
DropTables();
db = new MySQLInventoryData();
db.Initialise(connect);
}
catch (Exception e)
{
m_log.Error("Exception {0}", e);
Assert.Ignore();
}
}
[TestFixtureTearDown]
public void Cleanup()
{
if (db != null)
{
db.Dispose();
}
DropTables();
}
private void DropTables()
{
ExecuteSql("drop table IF EXISTS inventoryitems");
ExecuteSql("drop table IF EXISTS inventoryfolders");
ExecuteSql("drop table IF EXISTS migrations");
}
/// <summary>
/// Execute a MySqlCommand
/// </summary>
/// <param name="sql">sql string to execute</param>
private void ExecuteSql(string sql)
{
using (MySqlConnection dbcon = new MySqlConnection(connect))
{
dbcon.Open();
MySqlCommand cmd = new MySqlCommand(sql, dbcon);
cmd.ExecuteNonQuery();
}
}
}
}

View File

@ -1,112 +0,0 @@
/*
* 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 OpenSimulator 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 NUnit.Framework;
using OpenSim.Data.Tests;
using log4net;
using System.Reflection;
using OpenSim.Tests.Common;
using MySql.Data.MySqlClient;
namespace OpenSim.Data.MySQL.Tests
{
[TestFixture, DatabaseTest]
public class MySQLRegionTest : BasicRegionTest
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public string file;
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
{
// this is important in case a previous run ended badly
ClearDB();
db = new MySQLDataStore();
db.Initialise(connect);
}
catch (Exception e)
{
m_log.Error("Exception {0}", e);
Assert.Ignore();
}
}
[TestFixtureTearDown]
public void Cleanup()
{
if (db != null)
{
db.Dispose();
}
ClearDB();
}
private void ClearDB()
{
ExecuteSql("drop table if exists migrations");
ExecuteSql("drop table if exists prims");
ExecuteSql("drop table if exists primshapes");
ExecuteSql("drop table if exists primitems");
ExecuteSql("drop table if exists terrain");
ExecuteSql("drop table if exists land");
ExecuteSql("drop table if exists landaccesslist");
ExecuteSql("drop table if exists regionban");
ExecuteSql("drop table if exists regionsettings");
ExecuteSql("drop table if exists estate_managers");
ExecuteSql("drop table if exists estate_groups");
ExecuteSql("drop table if exists estate_users");
ExecuteSql("drop table if exists estateban");
ExecuteSql("drop table if exists estate_settings");
ExecuteSql("drop table if exists estate_map");
}
/// <summary>
/// Execute a MySqlCommand
/// </summary>
/// <param name="sql">sql string to execute</param>
private void ExecuteSql(string sql)
{
using (MySqlConnection dbcon = new MySqlConnection(connect))
{
dbcon.Open();
MySqlCommand cmd = new MySqlCommand(sql, dbcon);
cmd.ExecuteNonQuery();
}
}
}
}

View File

@ -1,65 +0,0 @@
/*
* 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 OpenSimulator 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.IO;
using NUnit.Framework;
using OpenSim.Data.Tests;
using OpenSim.Tests.Common;
namespace OpenSim.Data.SQLite.Tests
{
[TestFixture, DatabaseTest]
public class SQLiteEstateTest : BasicEstateTest
{
public string file = "regiontest.db";
public string connect;
[TestFixtureSetUp]
public void Init()
{
// SQLite doesn't work on power or z linux
if (Directory.Exists("/proc/ppc64") || Directory.Exists("/proc/dasd"))
{
Assert.Ignore();
}
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();
}
}
}

View File

@ -1,66 +0,0 @@
/*
* 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 OpenSimulator 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.IO;
using NUnit.Framework;
using OpenSim.Data.Tests;
using OpenSim.Tests.Common;
namespace OpenSim.Data.SQLite.Tests
{
[TestFixture, DatabaseTest]
public class SQLiteInventoryTest : BasicInventoryTest
{
public string file;
public string connect;
[TestFixtureSetUp]
public void Init()
{
// SQLite doesn't work on power or z linux
if (Directory.Exists("/proc/ppc64") || Directory.Exists("/proc/dasd"))
{
Assert.Ignore();
}
SuperInit();
file = Path.GetTempFileName() + ".db";
connect = "URI=file:" + file + ",version=3";
db = new SQLiteInventoryStore();
db.Initialise(connect);
}
[TestFixtureTearDown]
public void Cleanup()
{
db.Dispose();
File.Delete(file);
}
}
}

View File

@ -1,64 +0,0 @@
/*
* 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 OpenSimulator 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.IO;
using NUnit.Framework;
using OpenSim.Data.Tests;
using OpenSim.Tests.Common;
namespace OpenSim.Data.SQLite.Tests
{
[TestFixture, DatabaseTest]
public class SQLiteRegionTest : BasicRegionTest
{
public string file = "regiontest.db";
public string connect;
[TestFixtureSetUp]
public void Init()
{
// SQLite doesn't work on power or z linux
if (Directory.Exists("/proc/ppc64") || Directory.Exists("/proc/dasd"))
{
Assert.Ignore();
}
SuperInit();
file = Path.GetTempFileName() + ".db";
connect = "URI=file:" + file + ",version=3";
db = new SQLiteRegionData();
db.Initialise(connect);
}
[TestFixtureTearDown]
public void Cleanup()
{
db.Dispose();
File.Delete(file);
}
}
}

View File

@ -35,13 +35,31 @@ using OpenSim.Region.Framework.Interfaces;
using System.Text; using System.Text;
using log4net; using log4net;
using System.Reflection; using System.Reflection;
using System.Data.Common;
// DBMS-specific:
using MySql.Data.MySqlClient;
using OpenSim.Data.MySQL;
using System.Data.SqlClient;
using OpenSim.Data.MSSQL;
using Mono.Data.Sqlite;
using OpenSim.Data.SQLite;
namespace OpenSim.Data.Tests namespace OpenSim.Data.Tests
{ {
public class BasicEstateTest [TestFixture(typeof(MySqlConnection), typeof(MySQLEstateStore), Description = "Estate store tests (MySQL)")]
[TestFixture(typeof(SqlConnection), typeof(MSSQLEstateStore), Description = "Estate store tests (MS SQL Server)")]
[TestFixture(typeof(SqliteConnection), typeof(SQLiteEstateStore), Description = "Estate store tests (SQLite)")]
public class EstateTests<TConn, TEstateStore> : BasicDataServiceTest<TConn, TEstateStore>
where TConn : DbConnection, new()
where TEstateStore : class, IEstateDataStore, new()
{ {
public IEstateDataStore db; public IEstateDataStore db;
public IRegionDataStore regionDb;
public static UUID REGION_ID = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed7"); public static UUID REGION_ID = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed7");
@ -54,9 +72,34 @@ namespace OpenSim.Data.Tests
public static UUID GROUP_ID_1 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed5"); public static UUID GROUP_ID_1 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed5");
public static UUID GROUP_ID_2 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed6"); public static UUID GROUP_ID_2 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed6");
public void SuperInit() protected override void InitService(object service)
{ {
OpenSim.Tests.Common.TestLogging.LogToConsole(); db = (IEstateDataStore)service;
db.Initialise(m_connStr);
ClearDB();
}
private void ClearDB()
{
// if a new table is added, it has to be dropped here
ExecuteSql("delete from migrations where name='EstateStore';");
DropTables(
"prims",
"primshapes",
"primitems",
"terrain",
"land",
"landaccesslist",
"regionban",
"regionsettings",
"estate_managers",
"estate_groups",
"estate_users",
"estateban",
"estate_settings",
"estate_map"
);
} }
#region 0Tests #region 0Tests

View File

@ -33,62 +33,70 @@ using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using log4net; using log4net;
using System.Reflection; using System.Reflection;
using System.Data.Common;
// DBMS-specific:
using MySql.Data.MySqlClient;
using OpenSim.Data.MySQL;
using System.Data.SqlClient;
using OpenSim.Data.MSSQL;
using Mono.Data.Sqlite;
using OpenSim.Data.SQLite;
namespace OpenSim.Data.Tests namespace OpenSim.Data.Tests
{ {
public class BasicInventoryTest [TestFixture(typeof(MySqlConnection), typeof(MySQLInventoryData), Description = "Inventory store tests (MySQL)")]
[TestFixture(typeof(SqlConnection), typeof(MSSQLInventoryData), Description = "Inventory store tests (MS SQL Server)")]
[TestFixture(typeof(SqliteConnection), typeof(SQLiteInventoryStore), Description = "Inventory store tests (SQLite)")]
public class InventoryTests<TConn, TInvStore> : BasicDataServiceTest<TConn, TInvStore>
where TConn : DbConnection, new()
where TInvStore : class, IInventoryDataPlugin, new()
{ {
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public IInventoryDataPlugin db; public IInventoryDataPlugin db;
public UUID zero = UUID.Zero; public UUID zero = UUID.Zero;
public UUID folder1; public UUID folder1 = UUID.Random();
public UUID folder2; public UUID folder2 = UUID.Random();
public UUID folder3; public UUID folder3 = UUID.Random();
public UUID owner1; public UUID owner1 = UUID.Random();
public UUID owner2; public UUID owner2 = UUID.Random();
public UUID owner3; public UUID owner3 = UUID.Random();
public UUID item1; public UUID item1 = UUID.Random();
public UUID item2; public UUID item2 = UUID.Random();
public UUID item3; public UUID item3 = UUID.Random();
public UUID asset1; public UUID asset1 = UUID.Random();
public UUID asset2; public UUID asset2 = UUID.Random();
public UUID asset3; public UUID asset3 = UUID.Random();
public string name1; public string name1;
public string name2; public string name2 = "First Level folder";
public string name3; public string name3 = "First Level folder 2";
public string niname1; public string niname1 = "My Shirt";
public string iname1; public string iname1 = "Shirt";
public string iname2; public string iname2 = "Text Board";
public string iname3; public string iname3 = "No Pants Barrel";
public void SuperInit() public InventoryTests(string conn) : base(conn)
{ {
OpenSim.Tests.Common.TestLogging.LogToConsole();
folder1 = UUID.Random();
folder2 = UUID.Random();
folder3 = UUID.Random();
owner1 = UUID.Random();
owner2 = UUID.Random();
owner3 = UUID.Random();
item1 = UUID.Random();
item2 = UUID.Random();
item3 = UUID.Random();
asset1 = UUID.Random();
asset2 = UUID.Random();
asset3 = UUID.Random();
name1 = "Root Folder for " + owner1.ToString(); name1 = "Root Folder for " + owner1.ToString();
name2 = "First Level folder"; }
name3 = "First Level folder 2";
niname1 = "My Shirt";
iname1 = "Shirt";
iname2 = "Text Board";
iname3 = "No Pants Barrel";
protected override void InitService(object service)
{
db = (IInventoryDataPlugin)service;
db.Initialise(m_connStr);
ClearDB();
}
private void ClearDB()
{
DropTables("inventoryitems", "inventoryfolders");
ExecuteSql("delete from migrations where name='Inventory'");
} }
[Test] [Test]

View File

@ -38,59 +38,80 @@ using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
using log4net; using log4net;
using System.Reflection; using System.Reflection;
using System.Data.Common;
// DBMS-specific:
using MySql.Data.MySqlClient;
using OpenSim.Data.MySQL;
using System.Data.SqlClient;
using OpenSim.Data.MSSQL;
using Mono.Data.Sqlite;
using OpenSim.Data.SQLite;
namespace OpenSim.Data.Tests namespace OpenSim.Data.Tests
{ {
public class BasicRegionTest [TestFixture(typeof(MySqlConnection), typeof(MySqlRegionData), Description = "Region store tests (MySQL)")]
[TestFixture(typeof(SqlConnection), typeof(MSSQLRegionData), Description = "Region store tests (MS SQL Server)")]
[TestFixture(typeof(SqliteConnection), typeof(SQLiteRegionData), Description = "Region store tests (SQLite)")]
public class RegionTests<TConn, TRegStore> : BasicDataServiceTest<TConn, TRegStore>
where TConn : DbConnection, new()
where TRegStore : class, IRegionDataStore, new()
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public IRegionDataStore db; public IRegionDataStore db;
public UUID zero = UUID.Zero; public UUID zero = UUID.Zero;
public UUID region1; public UUID region1 = UUID.Random();
public UUID region2; public UUID region2 = UUID.Random();
public UUID region3; public UUID region3 = UUID.Random();
public UUID region4; public UUID region4 = UUID.Random();
public UUID prim1; public UUID prim1 = UUID.Random();
public UUID prim2; public UUID prim2 = UUID.Random();
public UUID prim3; public UUID prim3 = UUID.Random();
public UUID prim4; public UUID prim4 = UUID.Random();
public UUID prim5; public UUID prim5 = UUID.Random();
public UUID prim6; public UUID prim6 = UUID.Random();
public UUID item1; public UUID item1 = UUID.Random();
public UUID item2; public UUID item2 = UUID.Random();
public UUID item3; public UUID item3 = UUID.Random();
public static Random random; public static Random random = new Random();
public string itemname1 = "item1"; public string itemname1 = "item1";
public uint localID; public uint localID = 1;
public double height1; public double height1 = 20;
public double height2; public double height2 = 100;
public void SuperInit()
protected override void InitService(object service)
{ {
OpenSim.Tests.Common.TestLogging.LogToConsole(); db = (IRegionDataStore)service;
db.Initialise(m_connStr);
region1 = UUID.Random(); ClearDB();
region3 = UUID.Random();
region4 = UUID.Random();
prim1 = UUID.Random();
prim2 = UUID.Random();
prim3 = UUID.Random();
prim4 = UUID.Random();
prim5 = UUID.Random();
prim6 = UUID.Random();
item1 = UUID.Random();
item2 = UUID.Random();
item3 = UUID.Random();
random = new Random();
localID = 1;
height1 = 20;
height2 = 100;
} }
private void ClearDB()
{
// if a new table is added, it has to be dropped here
ExecuteSql("delete from migrations where name='RegionStore';");
DropTables(
"prims",
"primshapes",
"primitems",
"terrain",
"land",
"landaccesslist",
"regionban",
"regionsettings"
);
}
// Test Plan // Test Plan
// Prims // Prims
// - empty test - 001 // - empty test - 001