/// <summary> /// Loads the specified VirtualResourceDetail into the specified EnterpriseScenario. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="scenario">The <see cref="EnterpriseScenario"/></param> /// <param name="detail">The metadata detail</param> public void LoadDetail <T>(EnterpriseScenario scenario, T detail) where T : ResourceDetailBase { VirtualResourceId = SequentialGuid.NewGuid(); EnterpriseScenario = scenario; EnterpriseScenarioId = scenario.EnterpriseScenarioId; ResourceType = detail.ResourceType.ToString(); Name = detail.Name; Description = detail.Description; InstanceCount = detail.InstanceCount; Platform = detail.Platform; Enabled = detail.Enabled; foreach (var metadataDetail in detail.MetadataDetails) { VirtualResourceMetadata metadata = new VirtualResourceMetadata(ResourceType, metadataDetail.MetadataType) { VirtualResource = this, VirtualResourceId = VirtualResourceId, ExecutionPlan = GetExecutionPlan(metadataDetail), VirtualResourceMetadataId = metadataDetail.Id, Name = metadataDetail.Name, Metadata = metadataDetail.Data, MetadataVersion = metadataDetail.MetadataVersion, Enabled = metadataDetail.Enabled }; VirtualResourceMetadataSet.Add(metadata); } LoadChildDetail(detail); }
private VirtualResource CreateExpandedResource(Collection <ExpandedResourceMetadata> expandedData, int index) { // First clone this Load Tester resource, then clear it's metadata set. VirtualResource resource = this.Clone <LoadTester>(); resource.VirtualResourceMetadataSet.Clear(); resource.Name = "{0} [{1}]".FormatWith(resource.Name, index); // For each entry in the expanded set, get the metadata item from "this" by the id // in the expanded set item, clone it, then update the thread count to the value // in the expanded set item, then add the new metadata item to the resource. Do // this for all items in the expanded data. Then return the resource. foreach (var item in expandedData) { var metadata = VirtualResourceMetadataSet.First(x => x.VirtualResourceMetadataId == item.Id).Clone(); // Update the execution plan with the correct number of threads and update it with // the property thread ramp up information. var plan = LegacySerializer.DeserializeDataContract <LoadTesterExecutionPlan>(metadata.ExecutionPlan); plan.ThreadCount = item.ThreadCount; plan.RampUpSettings = new Collection <RampUpSetting>(); foreach (var setting in item.RampUpSettings) { plan.RampUpSettings.Add(setting); } metadata.ExecutionPlan = LegacySerializer.SerializeDataContract(plan).ToString(); resource.VirtualResourceMetadataSet.Add(metadata); } return(resource); }