public void EdgeDeploymentStatusSuccessFactoryIsSuccessStatus() { var status = EdgeDeploymentStatus.Success("deployed"); Assert.Equal(EdgeDeploymentStatusType.Success, status.State); Assert.Equal("deployed", status.Message); }
public async void GettingSameStatusTwiceReportsOnce() { var returnedStatus = EdgeDeploymentStatus.Success("Successfully deployed"); var edgeDefinition = new EdgeDeploymentDefinition("v1", "EdgeDeployment", new V1ObjectMeta(name: ResourceName), new List <KubernetesModule>(), null); var response = new HttpOperationResponse <object>() { Body = edgeDefinition, Response = new HttpResponseMessage(HttpStatusCode.OK) }; // DeployModules returns a status, confirm this is what is reported. var controller = Mock.Of <IEdgeDeploymentController>(); Mock.Get(controller).Setup(c => c.DeployModulesAsync(It.IsAny <ModuleSet>(), It.IsAny <ModuleSet>())) .ReturnsAsync(returnedStatus); var client = Mock.Of <IKubernetes>(); Mock.Get(client).Setup(c => c.ReplaceNamespacedCustomObjectStatusWithHttpMessagesAsync(It.IsAny <object>(), Constants.EdgeDeployment.Group, Constants.EdgeDeployment.Version, DeviceNamespace, Constants.EdgeDeployment.Plural, It.IsAny <string>(), null, It.IsAny <CancellationToken>())) .ReturnsAsync(response); var edgeOperator = new EdgeDeploymentOperator( ResourceName, DeviceNamespace, client, controller); await edgeOperator.EdgeDeploymentOnEventHandlerAsync(WatchEventType.Added, edgeDefinition); await edgeOperator.EdgeDeploymentOnEventHandlerAsync(WatchEventType.Modified, edgeDefinition); Mock.Get(controller).Verify(c => c.DeployModulesAsync(It.IsAny <ModuleSet>(), It.IsAny <ModuleSet>()), Times.Exactly(2)); Mock.Get(client).Verify(c => c.ReplaceNamespacedCustomObjectStatusWithHttpMessagesAsync(It.IsAny <object>(), Constants.EdgeDeployment.Group, Constants.EdgeDeployment.Version, DeviceNamespace, Constants.EdgeDeployment.Plural, It.IsAny <string>(), null, It.IsAny <CancellationToken>()), Times.Once); }
public async Task ReturnFailureWhenUnableToObtainModuleIdentities() { var client = new Mock <IKubernetes>(); var lifecycle = new Mock <IModuleIdentityLifecycleManager>(); lifecycle.Setup(l => l.GetModuleIdentitiesAsync(It.IsAny <ModuleSet>(), It.IsAny <ModuleSet>())) .ReturnsAsync(ImmutableDictionary.Create <string, IModuleIdentity>()); var serviceMapper = new Mock <IKubernetesServiceMapper>(); var deploymentMapper = new Mock <IKubernetesDeploymentMapper>(); var pvcMapper = new Mock <IKubernetesPvcMapper>(); var serviceAccountMapper = new Mock <IKubernetesServiceAccountMapper>(); var controller = new EdgeDeploymentController( ResourceName, DeviceSelector, DeviceNamespace, client.Object, lifecycle.Object, serviceMapper.Object, deploymentMapper.Object, pvcMapper.Object, serviceAccountMapper.Object); var module = new Mock <IModule>(); module.SetupGet(m => m.Name).Returns("module1"); var desiredModules = ModuleSet.Create(module.Object); var currentModules = ModuleSet.Empty; var status = await controller.DeployModulesAsync(desiredModules, currentModules); Assert.Equal(EdgeDeploymentStatus.Failure("Unable to obtain identities for desired modules"), status); }
public async void StatusIsFailedWithSpecialMessageWhenHttpExceptionIsThrown() { HttpOperationException controllerException = new HttpOperationException(ExceptionMessage) { Request = new HttpRequestMessageWrapper(new HttpRequestMessage(HttpMethod.Put, new Uri("http://valid-uri")), "content") }; Option <EdgeDeploymentStatus> reportedStatus = Option.None <EdgeDeploymentStatus>(); EdgeDeploymentStatus expectedStatus = new EdgeDeploymentStatus(EdgeDeploymentStatusType.Failure, $"{controllerException.Request.Method} [{controllerException.Request.RequestUri}]({controllerException.Message})"); var edgeDefinition = new EdgeDeploymentDefinition("v1", "EdgeDeployment", new V1ObjectMeta(name: ResourceName), new List <KubernetesModule>(), null); var response = new HttpOperationResponse <object>() { Body = edgeDefinition, Response = new HttpResponseMessage(HttpStatusCode.OK) }; var controller = Mock.Of <IEdgeDeploymentController>(); Mock.Get(controller).Setup(c => c.DeployModulesAsync(It.IsAny <ModuleSet>(), It.IsAny <ModuleSet>())) .ThrowsAsync(controllerException); var client = Mock.Of <IKubernetes>(); Mock.Get(client).Setup(c => c.ReplaceNamespacedCustomObjectStatusWithHttpMessagesAsync(It.IsAny <object>(), Constants.EdgeDeployment.Group, Constants.EdgeDeployment.Version, DeviceNamespace, Constants.EdgeDeployment.Plural, It.IsAny <string>(), null, It.IsAny <CancellationToken>())) .Callback((object o, string group, string version, string _namespace, string plural, string name, Dictionary <string, List <string> > headers, CancellationToken token) => { Assert.True(o is JObject); EdgeDeploymentDefinition e = ((JObject)o).ToObject <EdgeDeploymentDefinition>(); reportedStatus = e.Status; }) .ReturnsAsync(response); var edgeOperator = new EdgeDeploymentOperator( ResourceName, DeviceNamespace, client, controller); HttpOperationException ex = await Assert.ThrowsAsync <HttpOperationException>(() => edgeOperator.EdgeDeploymentOnEventHandlerAsync(WatchEventType.Added, edgeDefinition)); Assert.Equal(controllerException, ex); Assert.True(reportedStatus.HasValue); Assert.Equal(expectedStatus, reportedStatus.OrDefault()); Mock.Get(controller).VerifyAll(); Mock.Get(client).VerifyAll(); }
public void EdgeDeploymentStatusExceptionFailureFactoryIsFailureStatus() { Exception e = new Exception("deployment failed"); var status = EdgeDeploymentStatus.Failure(e); Assert.Equal(EdgeDeploymentStatusType.Failure, status.State); Assert.Equal("deployment failed", status.Message); var uri = new Uri("https://my-uri"); HttpOperationException httpEx = new HttpOperationException("HTTP Exception") { Request = new HttpRequestMessageWrapper(new HttpRequestMessage(HttpMethod.Post, uri), string.Empty) }; var httpStatus = EdgeDeploymentStatus.Failure(httpEx); Assert.Equal(EdgeDeploymentStatusType.Failure, httpStatus.State); Assert.Equal($"POST [{uri}](HTTP Exception)", httpStatus.Message); }
public async void WhatDeployModulesReturnsIsWhatIsReported() { var returnedStatus = EdgeDeploymentStatus.Success("Successfully deployed"); Option <EdgeDeploymentStatus> reportedStatus = Option.None <EdgeDeploymentStatus>(); var edgeDefinition = new EdgeDeploymentDefinition("v1", "EdgeDeployment", new V1ObjectMeta(name: ResourceName), new List <KubernetesModule>(), null); var response = new HttpOperationResponse <object>() { Body = edgeDefinition, Response = new HttpResponseMessage(HttpStatusCode.OK) }; // DeployModules returns a status, confirm this is what is reported. var controller = Mock.Of <IEdgeDeploymentController>(); Mock.Get(controller).Setup(c => c.DeployModulesAsync(It.IsAny <ModuleSet>(), It.IsAny <ModuleSet>())) .ReturnsAsync(returnedStatus); var client = Mock.Of <IKubernetes>(); Mock.Get(client).Setup(c => c.ReplaceNamespacedCustomObjectStatusWithHttpMessagesAsync(It.IsAny <object>(), Constants.EdgeDeployment.Group, Constants.EdgeDeployment.Version, DeviceNamespace, Constants.EdgeDeployment.Plural, It.IsAny <string>(), null, It.IsAny <CancellationToken>())) .Callback((object o, string group, string version, string _namespace, string plural, string name, Dictionary <string, List <string> > headers, CancellationToken token) => { Assert.True(o is JObject); EdgeDeploymentDefinition e = ((JObject)o).ToObject <EdgeDeploymentDefinition>(); reportedStatus = e.Status; }) .ReturnsAsync(response); var edgeOperator = new EdgeDeploymentOperator( ResourceName, DeviceNamespace, client, controller); await edgeOperator.EdgeDeploymentOnEventHandlerAsync(WatchEventType.Added, edgeDefinition); Assert.True(reportedStatus.HasValue); Assert.Equal(returnedStatus, reportedStatus.OrDefault()); Mock.Get(controller).VerifyAll(); Mock.Get(client).VerifyAll(); }
public void EdgeDeploymentStatusAreSameWithSameParametersTest(EdgeDeploymentStatus x, EdgeDeploymentStatus y) { Assert.Equal(x, y); }
public void EdgeDeploymentStatusAreDifferentWithDifferentParametersTest(EdgeDeploymentStatus x, EdgeDeploymentStatus y) { Assert.NotEqual(x, y); }