Пример #1
0
        /// <summary>
        /// Performs the call to export database using the server data service context channel.
        /// </summary>
        /// <param name="serverName">The name of the server to connect to.</param>
        /// <param name="userName">The username for authentication</param>
        /// <param name="password">The password for authentication</param>
        /// <param name="requestId">The request Id of the operation to query</param>
        /// <returns>The status of the import/export operation</returns>
        internal ArrayOfStatusInfo GetAzureSqlDatabaseImportExportStatusProcess(
            string serverName,
            string userName,
            string password,
            string requestId)
        {
            ArrayOfStatusInfo result = null;

            try
            {
                this.InvokeInOperationContext(() =>
                {
                    result = RetryCall(subscription =>
                                       this.Channel.GetImportExportStatus(
                                           subscription,
                                           serverName,
                                           serverName + DataServiceConstants.AzureSqlDatabaseDnsSuffix,
                                           userName,
                                           password,
                                           requestId));

                    Operation operation = WaitForSqlDatabaseOperation();
                });
            }
            catch (CommunicationException ex)
            {
                this.WriteErrorDetails(ex);
            }

            return(result);
        }
Пример #2
0
        /// <summary>
        /// Process the export request
        /// </summary>
        protected override void ProcessRecord()
        {
            this.WriteVerbose("Starting to process the record");
            try
            {
                base.ProcessRecord();

                string serverName = null;
                string userName   = null;
                string password   = null;
                string requestId  = null;

                switch (this.ParameterSetName)
                {
                case ByRequestObjectParameterSet:
                    serverName = this.Request.ServerName;
                    userName   = this.Request.SqlCredentials.UserName;
                    password   = this.Request.SqlCredentials.Password;
                    requestId  = this.Request.RequestGuid;
                    break;

                case ByConnectionInfoParameterSet:
                    serverName = this.ServerName;
                    userName   = this.Username;
                    password   = this.Password;
                    requestId  = this.RequestId;
                    break;
                }

                ArrayOfStatusInfo status =
                    this.GetAzureSqlDatabaseImportExportStatusProcess(
                        serverName,
                        userName,
                        password,
                        requestId);

                if (status == null)
                {
                    this.WriteVerbose("The result is null");
                }

                this.WriteVerbose("Status: " + status[0].Status);

                this.WriteObject(status);
            }
            catch (Exception ex)
            {
                this.WriteDebug("There was an error: " + ex.Message);
                this.WriteWindowsAzureError(
                    new ErrorRecord(ex, string.Empty, ErrorCategory.CloseError, null));
                this.WriteExceptionError(ex);
            }
        }
Пример #3
0
        public void GetAzureSqlDatabaseImportExportStatusProcessTest()
        {
            string   serverName    = "TestServer";
            string   userName      = "******";
            string   password      = "******";
            string   requestId     = Guid.NewGuid().ToString();
            string   blobUri       = "test.dummy.blob/container/blob.bacpac";
            string   databaseName  = "dummyDB";
            DateTime lastModified  = DateTime.UtcNow;
            DateTime queuedTime    = new DateTime(1, 2, 3, 4, 5, 6);
            string   requestType   = "Export";
            string   requestStatus = "Complete";
            string   errorMessage  = "errormessage";

            MockCommandRuntime          commandRuntime = new MockCommandRuntime();
            SimpleSqlDatabaseManagement channel        = new SimpleSqlDatabaseManagement();

            channel.GetImportExporStatusThunk = ar =>
            {
                Assert.AreEqual(serverName, (string)ar.Values["serverName"]);
                Assert.AreEqual(userName, (string)ar.Values["userName"]);
                Assert.AreEqual(password, (string)ar.Values["password"]);
                Assert.AreEqual(requestId, (string)ar.Values["requestId"]);

                StatusInfo status = new StatusInfo();
                status.BlobUri          = blobUri;
                status.DatabaseName     = databaseName;
                status.ErrorMessage     = errorMessage;
                status.LastModifiedTime = lastModified;
                status.QueuedTime       = queuedTime;
                status.RequestId        = requestId;
                status.RequestType      = requestType;
                status.ServerName       = serverName;
                status.Status           = requestStatus;

                ArrayOfStatusInfo operationResult = new ArrayOfStatusInfo();
                operationResult.Add(status);

                return(operationResult);
            };

            GetAzureSqlDatabaseImportExportStatus getImportExportStatus =
                new GetAzureSqlDatabaseImportExportStatus(channel)
            {
                ShareChannel = true
            };

            getImportExportStatus.CurrentSubscription = UnitTestHelper.CreateUnitTestSubscription();
            getImportExportStatus.CommandRuntime      = commandRuntime;
            var result = getImportExportStatus.GetAzureSqlDatabaseImportExportStatusProcess(
                serverName,
                userName,
                password,
                requestId);

            Assert.AreEqual(blobUri, result[0].BlobUri);
            Assert.AreEqual(databaseName, result[0].DatabaseName);
            Assert.AreEqual(errorMessage, result[0].ErrorMessage);
            Assert.AreEqual(lastModified, result[0].LastModifiedTime);
            Assert.AreEqual(queuedTime, result[0].QueuedTime);
            Assert.AreEqual(requestId, result[0].RequestId);
            Assert.AreEqual(requestType, result[0].RequestType);
            Assert.AreEqual(serverName, result[0].ServerName);
            Assert.AreEqual(requestStatus, result[0].Status);

            Assert.AreEqual(0, commandRuntime.ErrorStream.Count);
        }
        public void GetAzureSqlDatabaseImportExportStatusProcessTest()
        {
            string serverName = "TestServer";
            string userName = "******";
            string password = "******";
            string requestId = Guid.NewGuid().ToString();
            string blobUri = "test.dummy.blob/container/blob.bacpac";
            string databaseName = "dummyDB";
            DateTime lastModified = DateTime.UtcNow;
            DateTime queuedTime = new DateTime(1, 2, 3, 4, 5, 6);
            string requestType = "Export";
            string requestStatus = "Complete";
            string errorMessage = "errormessage";

            MockCommandRuntime commandRuntime = new MockCommandRuntime();
            SimpleSqlDatabaseManagement channel = new SimpleSqlDatabaseManagement();
            channel.GetImportExporStatusThunk = ar =>
            {
                Assert.AreEqual(serverName, (string)ar.Values["serverName"]);
                Assert.AreEqual(userName, (string)ar.Values["userName"]);
                Assert.AreEqual(password, (string)ar.Values["password"]);
                Assert.AreEqual(requestId, (string)ar.Values["requestId"]);

                StatusInfo status = new StatusInfo();
                status.BlobUri = blobUri;
                status.DatabaseName = databaseName;
                status.ErrorMessage = errorMessage;
                status.LastModifiedTime = lastModified;
                status.QueuedTime = queuedTime;
                status.RequestId = requestId;
                status.RequestType = requestType;
                status.ServerName = serverName;
                status.Status = requestStatus;

                ArrayOfStatusInfo operationResult = new ArrayOfStatusInfo();
                operationResult.Add(status);

                return operationResult;
            };

            GetAzureSqlDatabaseImportExportStatus getImportExportStatus =
                new GetAzureSqlDatabaseImportExportStatus(channel) { ShareChannel = true };
            getImportExportStatus.CurrentSubscription = UnitTestHelper.CreateUnitTestSubscription();
            getImportExportStatus.CommandRuntime = commandRuntime;
            var result = getImportExportStatus.GetAzureSqlDatabaseImportExportStatusProcess(
                serverName,
                userName,
                password,
                requestId);

            Assert.AreEqual(blobUri, result[0].BlobUri);
            Assert.AreEqual(databaseName, result[0].DatabaseName);
            Assert.AreEqual(errorMessage, result[0].ErrorMessage);
            Assert.AreEqual(lastModified, result[0].LastModifiedTime);
            Assert.AreEqual(queuedTime, result[0].QueuedTime);
            Assert.AreEqual(requestId, result[0].RequestId);
            Assert.AreEqual(requestType, result[0].RequestType);
            Assert.AreEqual(serverName, result[0].ServerName);
            Assert.AreEqual(requestStatus, result[0].Status);

            Assert.AreEqual(0, commandRuntime.ErrorStream.Count);
        }