private bool WaitForTransition(FileAccessMode targetMode, TimeSpan timeout) { DateTime timeoutTime = DateTime.Now + timeout; if (GetBucketFileAccessModeRequest.IsTransitionState(targetMode)) { throw new ArgumentException("Invalid target mode: " + targetMode); } this.TestContext.WriteLine( "Waiting for file access mode transition. Bucket:{0}, Target: {1}", this.bucketName, targetMode); while (true) { var request = new GetBucketFileAccessModeRequest() { BucketName = this.bucketName }; using (var response = client.GetBucketFileAccessMode(request)) { if (response.AccessMode == targetMode) { this.TestContext.WriteLine( "Successful transition. Target: {0}", targetMode); return(true); } if (DateTime.Now > timeoutTime) { this.TestContext.WriteLine( "Timeout occurred waiting for transition. Current: {0}, Target: {1}", response.AccessMode, targetMode); return(false); } } System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5)); } }