public void AzureInstanceMetadataObtainedSuccessfully() { AzureInstanceComputeMetadata expected = new AzureInstanceComputeMetadata() { Location = "US-West", Name = "test-vm01", Offer = "D9_USWest", OsType = "Linux", PlatformFaultDomain = "0", PlatformUpdateDomain = "0", Publisher = "Microsoft", ResourceGroupName = "test.resource-group_01", Sku = "Windows_10", SubscriptionId = Guid.NewGuid().ToString(), Version = "10.8a", VmId = Guid.NewGuid().ToString(), VmSize = "A8" }; HeartbeatProviderMock hbeatMock = new HeartbeatProviderMock(); AzureInstanceMetadataRequestMock azureInstanceRequestorMock = new AzureInstanceMetadataRequestMock( getComputeMetadata: () => { return(expected); }); var azureIMSFields = new AzureComputeMetadataHeartbeatPropertyProvider(azureInstanceRequestorMock); var defaultFields = azureIMSFields.ExpectedAzureImsFields; // not adding the fields we're looking for, simulation of the Azure Instance Metadata service not being present... var taskWaiter = azureIMSFields.SetDefaultPayloadAsync(hbeatMock).ConfigureAwait(false); Assert.True(taskWaiter.GetAwaiter().GetResult()); // nop await for tests foreach (string fieldName in defaultFields) { string heartbeatFieldName = string.Concat(AzureComputeMetadataHeartbeatPropertyProvider.HeartbeatPropertyPrefix, fieldName); Assert.True(hbeatMock.HbeatProps.ContainsKey(heartbeatFieldName)); Assert.Equal(expected.GetValueForField(fieldName), hbeatMock.HbeatProps[heartbeatFieldName]); } }
public void AzureIMSReturnsExpectedValuesForEachFieldAfterSerialization() { AzureInstanceComputeMetadata expectMetadata = new AzureInstanceComputeMetadata() { Location = "US-West", Name = "test-vm01", Offer = "D9_USWest", OsType = "Linux", PlacementGroupId = "placement-grp", PlatformFaultDomain = "0", PlatformUpdateDomain = "0", Publisher = "Microsoft", ResourceGroupName = "test.resource-group_01", Sku = "Windows_10", SubscriptionId = Guid.NewGuid().ToString(), Tags = "thisTag;thatTag", Version = "10.8a", VmId = Guid.NewGuid().ToString(), VmSize = "A8" }; DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(AzureInstanceComputeMetadata)); // use the expected JSON field name style, uses camelCase... string jsonFormatString = @"{{ ""osType"": ""{0}"", ""location"": ""{1}"", ""name"": ""{2}"", ""offer"": ""{3}"", ""placementGroupId"": ""{4}"", ""platformFaultDomain"": ""{5}"", ""platformUpdateDomain"": ""{6}"", ""publisher"": ""{7}"", ""sku"": ""{8}"", ""version"": ""{9}"", ""vmId"": ""{10}"", ""vmSize"": ""{11}"", ""subscriptionId"": ""{12}"", ""tags"": ""{13}"", ""resourceGroupName"": ""{14}"" }}"; string json = string.Format( System.Globalization.CultureInfo.InvariantCulture, jsonFormatString, expectMetadata.OsType, expectMetadata.Location, expectMetadata.Name, expectMetadata.Offer, expectMetadata.PlacementGroupId, expectMetadata.PlatformFaultDomain, expectMetadata.PlatformUpdateDomain, expectMetadata.Publisher, expectMetadata.Sku, expectMetadata.Version, expectMetadata.VmId, expectMetadata.VmSize, expectMetadata.SubscriptionId, expectMetadata.Tags, expectMetadata.ResourceGroupName); var jsonBytes = Encoding.UTF8.GetBytes(json); MemoryStream jsonStream = new MemoryStream(jsonBytes, 0, jsonBytes.Length); AzureInstanceComputeMetadata compareMetadata = (AzureInstanceComputeMetadata)deserializer.ReadObject(jsonStream); AzureComputeMetadataHeartbeatPropertyProvider heartbeatProps = new AzureComputeMetadataHeartbeatPropertyProvider(); foreach (string fieldName in heartbeatProps.ExpectedAzureImsFields) { Assert.Equal(expectMetadata.GetValueForField(fieldName), compareMetadata.GetValueForField(fieldName)); } }
public void AzureIMSGetFieldByNameFailsWithException() { AzureInstanceComputeMetadata md = new AzureInstanceComputeMetadata(); Assert.Throws(typeof(ArgumentOutOfRangeException), () => md.GetValueForField("not-a-field")); }