Ejemplo n.º 1
0
        public async Task AddWorkerTests(HttpStatusCode statusCode, string reasonPhrase, string expected, HttpRequestException expectedException)
        {
            var activityId             = Guid.NewGuid().ToString();
            var mockHttpMessageHandler = new MockHttpMessageHandler(statusCode, reasonPhrase);

            AppServiceSettings.SiteName             = Environment.MachineName.ToLower();
            AppServiceSettings.HostName             = Environment.MachineName.ToLower() + ".azurewebsites.net";
            AppServiceSettings.WorkerName           = "127.0.0.1";
            AppServiceSettings.HomeStampName        = "waws-prod-home-stamp";
            AppServiceSettings.CurrentStampName     = "waws-prod-slave-stamp";
            AppServiceSettings.RuntimeEncryptionKey = ScaleUtilsTests.GenerateEncryptionKey();
            try
            {
                AppServiceScaleHandler.HttpMessageHandler = mockHttpMessageHandler;

                var handler    = AppServiceScaleHandler.Instance;
                var stampNames = new[] { "waws-prod-slave-stamp" };

                // test
                if (expectedException == null)
                {
                    var actual = await handler.AddWorker(activityId, stampNames, 1);

                    Assert.Equal(expected, actual);
                }
                else
                {
                    var exception = await Assert.ThrowsAsync <HttpRequestException>(async() => await handler.AddWorker(activityId, stampNames, 1));

                    Assert.Contains(expectedException.Message, exception.Message);
                }

                Assert.Equal(activityId, mockHttpMessageHandler.ActivityId);
                Assert.Equal(AppServiceSettings.HostName, mockHttpMessageHandler.Host);
                if (!string.IsNullOrEmpty(expected) || expectedException != null)
                {
                    Assert.Equal(AppServiceSettings.HomeStampName + ".cloudapp.net", mockHttpMessageHandler.Uri.Host);
                }
                else
                {
                    Assert.Equal(AppServiceSettings.CurrentStampName + ".cloudapp.net", mockHttpMessageHandler.Uri.Host);
                }
                Assert.Equal("https", mockHttpMessageHandler.Uri.Scheme);
                Assert.Equal("/operations/addworker/" + AppServiceSettings.SiteName, mockHttpMessageHandler.Uri.AbsolutePath);
            }
            finally
            {
                ResetEnvironment();
            }
        }
Ejemplo n.º 2
0
        public async Task RemoveWorkerTests(HttpStatusCode statusCode, Exception expectedException)
        {
            var activityId             = Guid.NewGuid().ToString();
            var mockHttpMessageHandler = new MockHttpMessageHandler(statusCode);

            AppServiceSettings.SiteName             = Environment.MachineName.ToLower();
            AppServiceSettings.HostName             = Environment.MachineName.ToLower() + ".azurewebsites.net";
            AppServiceSettings.WorkerName           = "127.0.0.1";
            AppServiceSettings.HomeStampName        = "waws-prod-home-stamp";
            AppServiceSettings.CurrentStampName     = "waws-prod-slave-stamp";
            AppServiceSettings.RuntimeEncryptionKey = ScaleUtilsTests.GenerateEncryptionKey();
            try
            {
                AppServiceScaleHandler.HttpMessageHandler = mockHttpMessageHandler;

                var handler = AppServiceScaleHandler.Instance;

                var worker = new AppServiceWorkerInfo
                {
                    StampName  = AppServiceSettings.CurrentStampName,
                    WorkerName = AppServiceSettings.WorkerName
                };

                // test
                if (expectedException == null)
                {
                    await handler.RemoveWorker(activityId, worker);
                }
                else
                {
                    var exception = await Assert.ThrowsAsync <HttpRequestException>(async() => await handler.RemoveWorker(activityId, worker));

                    Assert.Contains(expectedException.Message, exception.Message);
                }

                Assert.Equal(activityId, mockHttpMessageHandler.ActivityId);
                Assert.Equal(AppServiceSettings.HostName, mockHttpMessageHandler.Host);
                Assert.Equal(worker.StampName + ".cloudapp.net", mockHttpMessageHandler.Uri.Host);
                Assert.Equal("https", mockHttpMessageHandler.Uri.Scheme);
                Assert.Equal("/operations/removeworker/" + AppServiceSettings.SiteName + "/" + worker.WorkerName, mockHttpMessageHandler.Uri.AbsolutePath);
            }
            finally
            {
                ResetEnvironment();
            }
        }