public void TestLoadOarDeededLand()
        {
            TestHelpers.InMethod();
//            TestHelpers.EnableLogging();

            UUID landID = TestHelpers.ParseTail(0x10);

            MockGroupsServicesConnector groupsService = new MockGroupsServicesConnector();

            IConfigSource configSource = new IniConfigSource();
            IConfig config = configSource.AddConfig("Groups");            
            config.Set("Enabled", true);
            config.Set("Module", "GroupsModule");            
            config.Set("DebugEnabled", true);
            SceneHelpers.SetupSceneModules(
                m_scene, configSource, new object[] { new GroupsModule(), groupsService, new LandManagementModule() });

            // Create group in scene for loading
            // FIXME: For now we'll put up with the issue that we'll get a group ID that varies across tests.
            UUID groupID 
                = groupsService.CreateGroup(UUID.Zero, "group1", "", true, UUID.Zero, 3, true, true, true, UUID.Zero);

            // Construct OAR
            MemoryStream oarStream = new MemoryStream();
            TarArchiveWriter tar = new TarArchiveWriter(oarStream);

            tar.WriteDir(ArchiveConstants.LANDDATA_PATH);
            tar.WriteFile(
                ArchiveConstants.CONTROL_FILE_PATH,
                new ArchiveWriteRequest(m_scene, (Stream)null, Guid.Empty).CreateControlFile(new ArchiveScenesGroup()));

            LandObject lo = new LandObject(groupID, true, m_scene);
            lo.SetLandBitmap(lo.BasicFullRegionLandBitmap());
            LandData ld = lo.LandData;
            ld.GlobalID = landID;

            string ldPath = ArchiveConstants.CreateOarLandDataPath(ld);
            Dictionary<string, object> options = new Dictionary<string, object>();
            tar.WriteFile(ldPath, LandDataSerializer.Serialize(ld, options));
            tar.Close();

            oarStream = new MemoryStream(oarStream.ToArray());

            // Load OAR
            lock (this)
            {
                m_scene.EventManager.OnOarFileLoaded += LoadCompleted;
                m_archiverModule.DearchiveRegion(oarStream);
            }

            ILandObject rLo = m_scene.LandChannel.GetLandObject(16, 16);
            LandData rLd = rLo.LandData;

            Assert.That(rLd.GlobalID, Is.EqualTo(landID));
            Assert.That(rLd.OwnerID, Is.EqualTo(groupID));
            Assert.That(rLd.GroupID, Is.EqualTo(groupID));
            Assert.That(rLd.IsGroupOwned, Is.EqualTo(true));
        }
Example #2
0
        public void TestLoadOarDeededLand()
        {
            TestHelpers.InMethod();
//            TestHelpers.EnableLogging();

            UUID landID = TestHelpers.ParseTail(0x10);

            MockGroupsServicesConnector groupsService = new MockGroupsServicesConnector();

            IConfigSource configSource = new IniConfigSource();
            IConfig       config       = configSource.AddConfig("Groups");

            config.Set("Enabled", true);
            config.Set("Module", "GroupsModule");
            config.Set("DebugEnabled", true);
            SceneHelpers.SetupSceneModules(
                m_scene, configSource, new object[] { new GroupsModule(), groupsService, new LandManagementModule() });

            // Create group in scene for loading
            // FIXME: For now we'll put up with the issue that we'll get a group ID that varies across tests.
            UUID groupID
                = groupsService.CreateGroup(UUID.Zero, "group1", "", true, UUID.Zero, 3, true, true, true, UUID.Zero);

            // Construct OAR
            MemoryStream     oarStream = new MemoryStream();
            TarArchiveWriter tar       = new TarArchiveWriter(oarStream);

            tar.WriteDir(ArchiveConstants.LANDDATA_PATH);
            tar.WriteFile(
                ArchiveConstants.CONTROL_FILE_PATH,
                new ArchiveWriteRequest(m_scene, (Stream)null, Guid.Empty).CreateControlFile(new ArchiveScenesGroup()));

            LandObject lo = new LandObject(groupID, true, m_scene);

            lo.SetLandBitmap(lo.BasicFullRegionLandBitmap());
            LandData ld = lo.LandData;

            ld.GlobalID = landID;

            string ldPath = ArchiveConstants.CreateOarLandDataPath(ld);
            Dictionary <string, object> options = new Dictionary <string, object>();

            tar.WriteFile(ldPath, LandDataSerializer.Serialize(ld, options));
            tar.Close();

            oarStream = new MemoryStream(oarStream.ToArray());

            // Load OAR
            lock (this)
            {
                m_scene.EventManager.OnOarFileLoaded += LoadCompleted;
                m_archiverModule.DearchiveRegion(oarStream);
            }

            ILandObject rLo = m_scene.LandChannel.GetLandObject(16, 16);
            LandData    rLd = rLo.LandData;

            Assert.That(rLd.GlobalID, Is.EqualTo(landID));
            Assert.That(rLd.OwnerID, Is.EqualTo(groupID));
            Assert.That(rLd.GroupID, Is.EqualTo(groupID));
            Assert.That(rLd.IsGroupOwned, Is.EqualTo(true));
        }
        public void TestSendGroupNotice()
        {
            TestHelpers.InMethod();
//            TestHelpers.EnableLogging();
            
            TestScene scene = new SceneHelpers().SetupScene();

            MessageTransferModule mtm = new MessageTransferModule();
            GroupsModule gm = new GroupsModule();
            GroupsMessagingModule gmm = new GroupsMessagingModule();
            MockGroupsServicesConnector mgsc = new MockGroupsServicesConnector();

            IConfigSource configSource = new IniConfigSource();

            {
                IConfig config = configSource.AddConfig("Messaging");            
                config.Set("MessageTransferModule", mtm.Name);
            }

            {
                IConfig config = configSource.AddConfig("Groups");            
                config.Set("Enabled", true);
                config.Set("Module", gm.Name);
                config.Set("DebugEnabled", true);
                config.Set("MessagingModule", gmm.Name);
                config.Set("MessagingEnabled", true);
            }

            SceneHelpers.SetupSceneModules(scene, configSource, mgsc, mtm, gm, gmm);

            UUID userId = TestHelpers.ParseTail(0x1);
            string subjectText = "newman";
            string messageText = "Hello";
            string combinedSubjectMessage = string.Format("{0}|{1}", subjectText, messageText);

            ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
            TestClient tc = (TestClient)sp.ControllingClient;

            UUID groupID = gm.CreateGroup(tc, "group1", null, true, UUID.Zero, 0, true, true, true);
            gm.JoinGroupRequest(tc, groupID);

            // Create a second user who doesn't want to receive notices
            ScenePresence sp2 = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x2));
            TestClient tc2 = (TestClient)sp2.ControllingClient;
            gm.JoinGroupRequest(tc2, groupID);
            gm.SetGroupAcceptNotices(tc2, groupID, false, true);

            List<GridInstantMessage> spReceivedMessages = new List<GridInstantMessage>();
            tc.OnReceivedInstantMessage += im => spReceivedMessages.Add(im);

            List<GridInstantMessage> sp2ReceivedMessages = new List<GridInstantMessage>();
            tc2.OnReceivedInstantMessage += im => sp2ReceivedMessages.Add(im);

            GridInstantMessage noticeIm = new GridInstantMessage();
            noticeIm.fromAgentID = userId.Guid;
            noticeIm.toAgentID = groupID.Guid;
            noticeIm.message = combinedSubjectMessage;
            noticeIm.dialog = (byte)InstantMessageDialog.GroupNotice;

            tc.HandleImprovedInstantMessage(noticeIm);

            Assert.That(spReceivedMessages.Count, Is.EqualTo(1));
            Assert.That(spReceivedMessages[0].message, Is.EqualTo(combinedSubjectMessage));

            List<GroupNoticeData> notices = mgsc.GetGroupNotices(UUID.Zero, groupID);
            Assert.AreEqual(1, notices.Count);

            // OpenSimulator (possibly also SL) transport the notice ID as the session ID!
            Assert.AreEqual(notices[0].NoticeID.Guid, spReceivedMessages[0].imSessionID);

            Assert.That(sp2ReceivedMessages.Count, Is.EqualTo(0));
        }
Example #4
0
        public void TestSendGroupNotice()
        {
            TestHelpers.InMethod();
//            TestHelpers.EnableLogging();

            TestScene scene = new SceneHelpers().SetupScene();

            MessageTransferModule       mtm  = new MessageTransferModule();
            GroupsModule                gm   = new GroupsModule();
            GroupsMessagingModule       gmm  = new GroupsMessagingModule();
            MockGroupsServicesConnector mgsc = new MockGroupsServicesConnector();

            IConfigSource configSource = new IniConfigSource();

            {
                IConfig config = configSource.AddConfig("Messaging");
                config.Set("MessageTransferModule", mtm.Name);
            }

            {
                IConfig config = configSource.AddConfig("Groups");
                config.Set("Enabled", true);
                config.Set("Module", gm.Name);
                config.Set("DebugEnabled", true);
                config.Set("MessagingModule", gmm.Name);
                config.Set("MessagingEnabled", true);
            }

            SceneHelpers.SetupSceneModules(scene, configSource, mgsc, mtm, gm, gmm);

            UUID   userId                 = TestHelpers.ParseTail(0x1);
            string subjectText            = "newman";
            string messageText            = "Hello";
            string combinedSubjectMessage = string.Format("{0}|{1}", subjectText, messageText);

            ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
            TestClient    tc = (TestClient)sp.ControllingClient;

            UUID groupID = gm.CreateGroup(tc, "group1", null, true, UUID.Zero, 0, true, true, true);

            gm.JoinGroupRequest(tc, groupID);

            // Create a second user who doesn't want to receive notices
            ScenePresence sp2 = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x2));
            TestClient    tc2 = (TestClient)sp2.ControllingClient;

            gm.JoinGroupRequest(tc2, groupID);
            gm.SetGroupAcceptNotices(tc2, groupID, false, true);

            List <GridInstantMessage> spReceivedMessages = new List <GridInstantMessage>();

            tc.OnReceivedInstantMessage += im => spReceivedMessages.Add(im);

            List <GridInstantMessage> sp2ReceivedMessages = new List <GridInstantMessage>();

            tc2.OnReceivedInstantMessage += im => sp2ReceivedMessages.Add(im);

            GridInstantMessage noticeIm = new GridInstantMessage();

            noticeIm.fromAgentID = userId.Guid;
            noticeIm.toAgentID   = groupID.Guid;
            noticeIm.message     = combinedSubjectMessage;
            noticeIm.dialog      = (byte)InstantMessageDialog.GroupNotice;

            tc.HandleImprovedInstantMessage(noticeIm);

            Assert.That(spReceivedMessages.Count, Is.EqualTo(1));
            Assert.That(spReceivedMessages[0].message, Is.EqualTo(combinedSubjectMessage));

            List <GroupNoticeData> notices = mgsc.GetGroupNotices(UUID.Zero, groupID);

            Assert.AreEqual(1, notices.Count);

            // OpenSimulator (possibly also SL) transport the notice ID as the session ID!
            Assert.AreEqual(notices[0].NoticeID.Guid, spReceivedMessages[0].imSessionID);

            Assert.That(sp2ReceivedMessages.Count, Is.EqualTo(0));
        }