Esempio n. 1
0
        private async void TestAddRemoveServerGroup()
        {
            string        name          = "TestAddRemoveServerGroup" + DateTime.Now.ToString();
            ConnectParams connectParams = await CreateAndConnectWithConnectParams();

            // Prepare for Server group add
            var requestContext1 = new Mock <RequestContext <bool> >();

            requestContext1.Setup((RequestContext <bool> x) => x.SendResult(It.Is <bool>((result) => result == true))).Returns(Task.FromResult(new object()));
            AddServerGroupParams addRegServerParams = new AddServerGroupParams
            {
                GroupName        = name,
                GroupDescription = "My Registered Test Server Group",
                ParentOwnerUri   = connectParams.OwnerUri,
                RelativePath     = null,
            };

            // prepare for Server group list
            var requestContext2 = new Mock <RequestContext <ListRegisteredServersResult> >();

            requestContext2.Setup((RequestContext <ListRegisteredServersResult> x) => x.SendResult(It.Is <ListRegisteredServersResult>((listCmsServersResult) => listCmsServersResult.RegisteredServerGroups.Find(p => p.Name.Contains(name)) != null))).Returns(Task.FromResult(new object()));
            ListRegisteredServersParams listServersParams = new ListRegisteredServersParams
            {
                ParentOwnerUri = connectParams.OwnerUri,
                RelativePath   = null
            };

            // prepare for server group remove
            var requestContext3 = new Mock <RequestContext <bool> >();

            requestContext1.Setup((RequestContext <bool> x) => x.SendResult(It.Is <bool>((result) => result == true))).Returns(Task.FromResult(new object()));
            RemoveServerGroupParams removeRegServerParams = new RemoveServerGroupParams
            {
                ParentOwnerUri = connectParams.OwnerUri,
                GroupName      = name,
                RelativePath   = null
            };

            // Actual test start here
            CmsService cmsService = CmsService.Instance;

            await cmsService.HandleAddServerGroupRequest(addRegServerParams, requestContext1.Object);

            await cmsService.CmsTask;

            requestContext1.VerifyAll();

            await cmsService.HandleListRegisteredServersRequest(listServersParams, requestContext2.Object);

            await cmsService.CmsTask;

            requestContext2.VerifyAll();

            await cmsService.HandleRemoveServerGroupRequest(removeRegServerParams, requestContext3.Object);

            await cmsService.CmsTask;

            requestContext3.VerifyAll();
        }
Esempio n. 2
0
 public async Task HandleAddServerGroupRequest(AddServerGroupParams addServerGroupParams, RequestContext <bool> requestContext)
 {
     Logger.Write(TraceEventType.Verbose, "HandleAddServerGroupRequest");
     try
     {
         CmsTask = Task.Run(async() =>
         {
             try
             {
                 ServerConnection serverConn = ValidateAndCreateConnection(addServerGroupParams.ParentOwnerUri);
                 if (serverConn != null)
                 {
                     ServerGroup parentGroup;
                     RegisteredServersStore store = new RegisteredServersStore(serverConn);
                     // It's a CMS server
                     if (string.IsNullOrEmpty(addServerGroupParams.RelativePath))
                     {
                         parentGroup = store.DatabaseEngineServerGroup;
                     }
                     else
                     {
                         parentGroup = NavigateToServerGroup(store, addServerGroupParams.RelativePath);
                     }
                     // Add the new group (intentionally not cheching existence to reuse the exception message)
                     ServerGroup serverGroup = new ServerGroup(parentGroup, addServerGroupParams.GroupName)
                     {
                         Description = addServerGroupParams.GroupDescription
                     };
                     serverGroup.Create();
                     await requestContext.SendResult(true);
                 }
                 else
                 {
                     await requestContext.SendResult(false);
                 }
             }
             catch (Exception e)
             {
                 await requestContext.SendError(e);
             }
         });
     }
     catch (Exception e)
     {
         await requestContext.SendError(e);
     }
 }
Esempio n. 3
0
        private async void TestAddRemoveNestedGroup()
        {
            string        name          = "TestAddRemoveNestedGroup" + DateTime.Now.ToString();
            ConnectParams connectParams = await CreateAndConnectWithConnectParams();

            // prepare for multi level server group add
            var requestContextAdd = new Mock <RequestContext <bool> >();

            requestContextAdd.Setup((RequestContext <bool> x) => x.SendResult(It.Is <bool>((result) => result == true))).Returns(Task.FromResult(new object()));

            AddServerGroupParams addRegServerParams1 = new AddServerGroupParams
            {
                GroupName        = name + "_level1",
                GroupDescription = "My Registered Test Server Group Level 1",
                ParentOwnerUri   = connectParams.OwnerUri,
                RelativePath     = null, // can do with null on level 1
            };

            AddServerGroupParams addRegServerParams2 = new AddServerGroupParams
            {
                GroupName        = name + "_level2",
                GroupDescription = "My Registered Test Server Group Level 2",
                ParentOwnerUri   = connectParams.OwnerUri,
                RelativePath     = string.Format("RegisteredServersStore/ServerGroup[@Name='DatabaseEngineServerGroup']/ServerGroup[@Name='{0}']", name + "_level1") // parent URN
            };

            AddServerGroupParams addRegServerParams3 = new AddServerGroupParams
            {
                GroupName        = name + "_level3",
                GroupDescription = "My Registered Test Server Group Level 3",
                ParentOwnerUri   = connectParams.OwnerUri,
                RelativePath     = string.Format("RegisteredServersStore/ServerGroup[@Name='DatabaseEngineServerGroup']/ServerGroup[@Name='{0}']/ServerGroup[@Name='{1}']", name + "_level1", name + "_level2") // parent URN
            };

            // prepare for multi level server group list

            var requestContextList1 = new Mock <RequestContext <ListRegisteredServersResult> >();

            requestContextList1.Setup((RequestContext <ListRegisteredServersResult> x) => x.SendResult(It.Is <ListRegisteredServersResult>((listCmsServersResult) => listCmsServersResult.RegisteredServerGroups.Find(p => p.Name.Contains(name + "_level3")) != null))).Returns(Task.FromResult(new object()));

            var requestContextList2 = new Mock <RequestContext <ListRegisteredServersResult> >();

            requestContextList2.Setup((RequestContext <ListRegisteredServersResult> x) => x.SendResult(It.Is <ListRegisteredServersResult>((listCmsServersResult) => listCmsServersResult.RegisteredServerGroups.Find(p => p.Name.Contains(name + "_level3")) == null))).Returns(Task.FromResult(new object()));

            ListRegisteredServersParams listServersParams = new ListRegisteredServersParams
            {
                ParentOwnerUri = connectParams.OwnerUri,
                RelativePath   = string.Format("RegisteredServersStore/ServerGroup[@Name='DatabaseEngineServerGroup']/ServerGroup[@Name='{0}']/ServerGroup[@Name='{1}']", name + "_level1", name + "_level2") // parent URN
            };

            // prepare for multi level server group remove at level 3  and then at level 1
            var requestContextRemove = new Mock <RequestContext <bool> >();

            requestContextRemove.Setup((RequestContext <bool> x) => x.SendResult(It.Is <bool>((result) => result == true))).Returns(Task.FromResult(new object()));

            RemoveServerGroupParams removeRegServerParams = new RemoveServerGroupParams
            {
                ParentOwnerUri = connectParams.OwnerUri,
                GroupName      = name + "_level3",
                RelativePath   = string.Format("RegisteredServersStore/ServerGroup[@Name='DatabaseEngineServerGroup']/ServerGroup[@Name='{0}']/ServerGroup[@Name='{1}']/ServerGroup[@Name='{2}']", name + "_level1", name + "_level2", name + "_level3") // own URN
            };

            RemoveServerGroupParams removeRegServerParamsCleanup = new RemoveServerGroupParams
            {
                ParentOwnerUri = connectParams.OwnerUri,
                GroupName      = name + "_level1",
                RelativePath   = string.Format("RegisteredServersStore/ServerGroup[@Name='DatabaseEngineServerGroup']/ServerGroup[@Name='{0}']", name + "_level1") // own URN
            };

            // Actual test starts here
            CmsService cmsService = CmsService.Instance;

            // Add three levels
            await cmsService.HandleAddServerGroupRequest(addRegServerParams1, requestContextAdd.Object);

            await cmsService.CmsTask;

            requestContextAdd.VerifyAll();

            await cmsService.HandleAddServerGroupRequest(addRegServerParams2, requestContextAdd.Object);

            await cmsService.CmsTask;

            requestContextAdd.VerifyAll();

            await cmsService.HandleAddServerGroupRequest(addRegServerParams3, requestContextAdd.Object);

            await cmsService.CmsTask;

            requestContextAdd.VerifyAll();

            // List Level 2 to find level three
            await cmsService.HandleListRegisteredServersRequest(listServersParams, requestContextList1.Object);

            await cmsService.CmsTask;

            requestContextList1.VerifyAll();

            // Remove level 3
            await cmsService.HandleRemoveServerGroupRequest(removeRegServerParams, requestContextRemove.Object);

            await cmsService.CmsTask;

            requestContextRemove.VerifyAll();

            // List Level 2 to validate Level 3 removal
            await cmsService.HandleListRegisteredServersRequest(listServersParams, requestContextList2.Object);

            await cmsService.CmsTask;

            requestContextList2.VerifyAll();

            // Clean up - Remove Level 1
            await cmsService.HandleRemoveServerGroupRequest(removeRegServerParamsCleanup, requestContextRemove.Object);

            await cmsService.CmsTask;

            requestContextRemove.VerifyAll();
        }