diff options
author | Melanie | 2013-06-13 02:49:43 +0100 |
---|---|---|
committer | Melanie | 2013-06-13 02:49:43 +0100 |
commit | 9975c5674c002be0e17db02b589c388b684f63a9 (patch) | |
tree | aa727252685987781696db21f9eee58dd6b6d023 /OpenSim/Region/CoreModules | |
parent | Merge branch 'master' into careminster (diff) | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC-9975c5674c002be0e17db02b589c388b684f63a9.zip opensim-SC-9975c5674c002be0e17db02b589c388b684f63a9.tar.gz opensim-SC-9975c5674c002be0e17db02b589c388b684f63a9.tar.bz2 opensim-SC-9975c5674c002be0e17db02b589c388b684f63a9.tar.xz |
Merge branch 'master' into careminster
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs | 102 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs | 64 |
2 files changed, 92 insertions, 74 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs index 1e70b84..864e181 100644 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs | |||
@@ -476,71 +476,71 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement | |||
476 | UserData oldUser; | 476 | UserData oldUser; |
477 | //lock the whole block - prevent concurrent update | 477 | //lock the whole block - prevent concurrent update |
478 | lock (m_UserCache) | 478 | lock (m_UserCache) |
479 | m_UserCache.TryGetValue(id, out oldUser); | ||
480 | |||
481 | if (oldUser != null) | ||
479 | { | 482 | { |
480 | m_UserCache.TryGetValue (id, out oldUser); | 483 | if (creatorData == null || creatorData == String.Empty) |
481 | if (oldUser != null) | ||
482 | { | 484 | { |
483 | if (creatorData == null || creatorData == String.Empty) | 485 | //ignore updates without creator data |
484 | { | 486 | return; |
485 | //ignore updates without creator data | ||
486 | return; | ||
487 | } | ||
488 | |||
489 | //try update unknown users | ||
490 | //and creator's home URL's | ||
491 | if ((oldUser.FirstName == "Unknown" && !creatorData.Contains ("Unknown")) || (oldUser.HomeURL != null && !creatorData.StartsWith (oldUser.HomeURL))) | ||
492 | { | ||
493 | m_UserCache.Remove (id); | ||
494 | m_log.DebugFormat("[USER MANAGEMENT MODULE]: Re-adding user with id {0}, creatorData [{1}] and old HomeURL {2}", id, creatorData, oldUser.HomeURL); | ||
495 | } | ||
496 | else | ||
497 | { | ||
498 | //we have already a valid user within the cache | ||
499 | return; | ||
500 | } | ||
501 | } | 487 | } |
502 | 488 | ||
503 | UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount (m_Scenes [0].RegionInfo.ScopeID, id); | 489 | //try update unknown users |
504 | 490 | //and creator's home URL's | |
505 | if (account != null) | 491 | if ((oldUser.FirstName == "Unknown" && !creatorData.Contains("Unknown")) || (oldUser.HomeURL != null && !creatorData.StartsWith(oldUser.HomeURL))) |
506 | { | 492 | { |
507 | AddUser (id, account.FirstName, account.LastName); | 493 | lock (m_UserCache) |
494 | m_UserCache.Remove(id); | ||
495 | m_log.DebugFormat("[USER MANAGEMENT MODULE]: Re-adding user with id {0}, creatorData [{1}] and old HomeURL {2}", id, creatorData, oldUser.HomeURL); | ||
508 | } | 496 | } |
509 | else | 497 | else |
510 | { | 498 | { |
511 | UserData user = new UserData (); | 499 | //we have already a valid user within the cache |
512 | user.Id = id; | 500 | return; |
501 | } | ||
502 | } | ||
513 | 503 | ||
514 | if (creatorData != null && creatorData != string.Empty) | 504 | UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, id); |
515 | { | 505 | |
516 | //creatorData = <endpoint>;<name> | 506 | if (account != null) |
507 | { | ||
508 | AddUser(id, account.FirstName, account.LastName); | ||
509 | } | ||
510 | else | ||
511 | { | ||
512 | UserData user = new UserData(); | ||
513 | user.Id = id; | ||
517 | 514 | ||
518 | string[] parts = creatorData.Split (';'); | 515 | if (creatorData != null && creatorData != string.Empty) |
519 | if (parts.Length >= 1) | 516 | { |
517 | //creatorData = <endpoint>;<name> | ||
518 | |||
519 | string[] parts = creatorData.Split(';'); | ||
520 | if (parts.Length >= 1) | ||
521 | { | ||
522 | user.HomeURL = parts[0]; | ||
523 | try | ||
520 | { | 524 | { |
521 | user.HomeURL = parts [0]; | 525 | Uri uri = new Uri(parts[0]); |
522 | try | 526 | user.LastName = "@" + uri.Authority; |
523 | { | 527 | } |
524 | Uri uri = new Uri (parts [0]); | 528 | catch (UriFormatException) |
525 | user.LastName = "@" + uri.Authority; | 529 | { |
526 | } | 530 | m_log.DebugFormat("[SCENE]: Unable to parse Uri {0}", parts[0]); |
527 | catch (UriFormatException) | 531 | user.LastName = "@unknown"; |
528 | { | ||
529 | m_log.DebugFormat ("[SCENE]: Unable to parse Uri {0}", parts [0]); | ||
530 | user.LastName = "@unknown"; | ||
531 | } | ||
532 | } | 532 | } |
533 | if (parts.Length >= 2) | ||
534 | user.FirstName = parts [1].Replace (' ', '.'); | ||
535 | } | ||
536 | else | ||
537 | { | ||
538 | user.FirstName = "Unknown"; | ||
539 | user.LastName = "UserUMMAU"; | ||
540 | } | 533 | } |
541 | 534 | if (parts.Length >= 2) | |
542 | AddUserInternal (user); | 535 | user.FirstName = parts[1].Replace(' ', '.'); |
543 | } | 536 | } |
537 | else | ||
538 | { | ||
539 | user.FirstName = "Unknown"; | ||
540 | user.LastName = "UserUMMAU"; | ||
541 | } | ||
542 | |||
543 | AddUserInternal(user); | ||
544 | } | 544 | } |
545 | } | 545 | } |
546 | 546 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs index 7073433..4f75191 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs | |||
@@ -42,7 +42,7 @@ using OpenSim.Tests.Common; | |||
42 | namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | 42 | namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests |
43 | { | 43 | { |
44 | [TestFixture] | 44 | [TestFixture] |
45 | public class AssetConnectorsTests : OpenSimTestCase | 45 | public class AssetConnectorTests : OpenSimTestCase |
46 | { | 46 | { |
47 | [Test] | 47 | [Test] |
48 | public void TestAddAsset() | 48 | public void TestAddAsset() |
@@ -77,7 +77,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | |||
77 | // TODO: Add cache and check that this does receive a copy of the asset | 77 | // TODO: Add cache and check that this does receive a copy of the asset |
78 | } | 78 | } |
79 | 79 | ||
80 | [Test] | ||
81 | public void TestAddTemporaryAsset() | 80 | public void TestAddTemporaryAsset() |
82 | { | 81 | { |
83 | TestHelpers.InMethod(); | 82 | TestHelpers.InMethod(); |
@@ -93,10 +92,45 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | |||
93 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); | 92 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); |
94 | lasc.Initialise(config); | 93 | lasc.Initialise(config); |
95 | 94 | ||
96 | // If it is local, it should not be stored | 95 | // If it is remote, it should be stored |
96 | AssetBase a2 = AssetHelpers.CreateNotecardAsset(); | ||
97 | a2.Local = false; | ||
98 | a2.Temporary = true; | ||
99 | |||
100 | lasc.Store(a2); | ||
101 | |||
102 | AssetBase retreivedA2 = lasc.Get(a2.ID); | ||
103 | Assert.That(retreivedA2.ID, Is.EqualTo(a2.ID)); | ||
104 | Assert.That(retreivedA2.Metadata.ID, Is.EqualTo(a2.Metadata.ID)); | ||
105 | Assert.That(retreivedA2.Data.Length, Is.EqualTo(a2.Data.Length)); | ||
106 | |||
107 | AssetMetadata retrievedA2Metadata = lasc.GetMetadata(a2.ID); | ||
108 | Assert.That(retrievedA2Metadata.ID, Is.EqualTo(a2.ID)); | ||
109 | |||
110 | byte[] retrievedA2Data = lasc.GetData(a2.ID); | ||
111 | Assert.That(retrievedA2Data.Length, Is.EqualTo(a2.Data.Length)); | ||
112 | |||
113 | // TODO: Add cache and check that this does receive a copy of the asset | ||
114 | } | ||
115 | |||
116 | [Test] | ||
117 | public void TestAddLocalAsset() | ||
118 | { | ||
119 | TestHelpers.InMethod(); | ||
120 | // TestHelpers.EnableLogging(); | ||
121 | |||
122 | IConfigSource config = new IniConfigSource(); | ||
123 | config.AddConfig("Modules"); | ||
124 | config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); | ||
125 | config.AddConfig("AssetService"); | ||
126 | config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); | ||
127 | config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); | ||
128 | |||
129 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); | ||
130 | lasc.Initialise(config); | ||
131 | |||
97 | AssetBase a1 = AssetHelpers.CreateNotecardAsset(); | 132 | AssetBase a1 = AssetHelpers.CreateNotecardAsset(); |
98 | a1.Local = true; | 133 | a1.Local = true; |
99 | a1.Temporary = true; | ||
100 | 134 | ||
101 | lasc.Store(a1); | 135 | lasc.Store(a1); |
102 | 136 | ||
@@ -104,29 +138,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | |||
104 | Assert.That(lasc.GetData(a1.ID), Is.Null); | 138 | Assert.That(lasc.GetData(a1.ID), Is.Null); |
105 | Assert.That(lasc.GetMetadata(a1.ID), Is.Null); | 139 | Assert.That(lasc.GetMetadata(a1.ID), Is.Null); |
106 | 140 | ||
107 | // If it is remote, it should be stored | ||
108 | // AssetBase a2 = AssetHelpers.CreateNotecardAsset(); | ||
109 | // a2.Local = false; | ||
110 | // a2.Temporary = true; | ||
111 | |||
112 | // lasc.Store(a2); | ||
113 | |||
114 | // AssetBase retreivedA2 = lasc.Get(a2.ID); | ||
115 | // Assert.That(retreivedA2.ID, Is.EqualTo(a2.ID)); | ||
116 | // Assert.That(retreivedA2.Metadata.ID, Is.EqualTo(a2.Metadata.ID)); | ||
117 | // Assert.That(retreivedA2.Data.Length, Is.EqualTo(a2.Data.Length)); | ||
118 | |||
119 | // AssetMetadata retrievedA2Metadata = lasc.GetMetadata(a2.ID); | ||
120 | // Assert.That(retrievedA2Metadata.ID, Is.EqualTo(a2.ID)); | ||
121 | |||
122 | // byte[] retrievedA2Data = lasc.GetData(a2.ID); | ||
123 | // Assert.That(retrievedA2Data.Length, Is.EqualTo(a2.Data.Length)); | ||
124 | |||
125 | // TODO: Add cache and check that this does receive a copy of the asset | 141 | // TODO: Add cache and check that this does receive a copy of the asset |
126 | } | 142 | } |
127 | 143 | ||
128 | [Test] | 144 | [Test] |
129 | public void TestAddLocalAsset() | 145 | public void TestAddTemporaryLocalAsset() |
130 | { | 146 | { |
131 | TestHelpers.InMethod(); | 147 | TestHelpers.InMethod(); |
132 | // TestHelpers.EnableLogging(); | 148 | // TestHelpers.EnableLogging(); |
@@ -141,8 +157,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | |||
141 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); | 157 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); |
142 | lasc.Initialise(config); | 158 | lasc.Initialise(config); |
143 | 159 | ||
160 | // If it is local, it should not be stored | ||
144 | AssetBase a1 = AssetHelpers.CreateNotecardAsset(); | 161 | AssetBase a1 = AssetHelpers.CreateNotecardAsset(); |
145 | a1.Local = true; | 162 | a1.Local = true; |
163 | a1.Temporary = true; | ||
146 | 164 | ||
147 | lasc.Store(a1); | 165 | lasc.Store(a1); |
148 | 166 | ||