Пример #1
0
        private void AddActivity(VirtualResourceMetadata metadata)
        {
            metadata.VirtualResourceId = _adminWorker.VirtualResourceId;
            metadata.Enabled           = true;
            //metadata.ExecutionOrder = _officeWorker.VirtualResourceMetadataSet.Count + 1;
            _adminWorker.VirtualResourceMetadataSet.Add(metadata);

            WorkerActivityConfiguration config = new WorkerActivityConfiguration(metadata, new WorkerExecutionPlan());

            config.ExecutionPlan.Order = PhaseConfigurations.Count() > 0 ? PhaseConfigurations.Max(x => x.ExecutionPlan.Order) + 1 : 1;

            if (activity_TabControl.SelectedTab == main_TabPage)
            {
                config.ExecutionPlan.Phase = ResourceExecutionPhase.Main;
            }
            else if (activity_TabControl.SelectedTab == setup_TabPage)
            {
                config.ExecutionPlan.Phase = ResourceExecutionPhase.Setup;
            }
            else
            {
                config.ExecutionPlan.Phase = ResourceExecutionPhase.Teardown;
            }

            _mainConfigurations.Add(config);

            RefreshGrid();

            // Set the current plan to this new entry
            activity_GridView.ChildRows[PhaseConfigurations.Count() - 1].IsSelected = true;
        }
Пример #2
0
        /// <summary>
        /// Finalizes changes to objects to ensure that they have the correct state.
        /// </summary>
        internal void FinalizeChanges()
        {
            foreach (EntityObject entity in this.GetObjectsInState(EntityState.Added | EntityState.Modified).Where(x => x != null))
            {
                // Check modified resources and metadata to see if they have been orphaned
                // If so, change their entity state to Deleted
                VirtualResource resource = entity as VirtualResource;
                if (resource != null && resource.EnterpriseScenarioId == Guid.Empty)
                {
                    DeleteObject(resource);
                    continue;
                }

                VirtualResourceMetadata metadata = entity as VirtualResourceMetadata;
                if (metadata != null && metadata.VirtualResourceId == Guid.Empty)
                {
                    DeleteObject(metadata);
                    continue;
                }

                VirtualResourceMetadataRetrySetting setting = entity as VirtualResourceMetadataRetrySetting;
                if (setting != null && setting.VirtualResourceMetadataId == Guid.Empty)
                {
                    DeleteObject(setting);
                    continue;
                }

                // Check object to see if there are actually any changed properties
                // If nothing has been modified, the state will be changed back to unchanged
                this.CheckIfModified(entity);
            }
        }
        /// <summary>
        /// Creates a node that is representative of the specified object (if applicable).
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns></returns>
        public static EnterpriseTestMapNode Create(object entity)
        {
            EnterpriseScenario scenario = entity as EnterpriseScenario;

            if (scenario != null)
            {
                return(new EnterpriseTestMapNode(scenario));
            }

            VirtualResource resource = entity as VirtualResource;

            if (resource != null)
            {
                return(new EnterpriseTestMapNode(resource));
            }

            VirtualResourceMetadata metadata = entity as VirtualResourceMetadata;

            if (metadata != null)
            {
                return(new EnterpriseTestMapNode(metadata));
            }

            ConfigurationTreeFolder folder = entity as ConfigurationTreeFolder;

            if (folder != null)
            {
                return(new EnterpriseTestMapNode(folder));
            }

            return(null);
        }
        /// <summary>
        /// Initializes this instance with the specified object.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <exception cref="ControlTypeMismatchException">
        /// Thrown when an object of incorrect type is passed to this instance.
        /// </exception>
        public void Initialize(object entity)
        {
            _metadata = entity as VirtualResourceMetadata;
            if (_metadata == null)
            {
                throw new ControlTypeMismatchException(entity, typeof(VirtualResourceMetadata));
            }

            name_TextBox.Text = _metadata.Name;

            // Remove existing plugin from the editor panel
            foreach (IPluginConfigurationControl control in metadataEditor_Panel.Controls.OfType <IPluginConfigurationControl>())
            {
                control.ConfigurationChanged -= PluginControl_ConfigurationChanged;
            }
            metadataEditor_Panel.Controls.Clear();

            // Create the edit plugin and add it to the editor panel
            try
            {
                IPluginConfigurationControl pluginControl = CreatePluginControl();
                Control control = (Control)pluginControl;
                control.Dock = DockStyle.Fill;
                metadataEditor_Panel.Controls.Add(control);
            }
            catch (PluginLoadException ex)
            {
                MessageBox.Show(ex.Message, "Plugin Load Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            // Reset unsaved changes
            HasUnsavedChanges = false;
        }
        /// <summary>
        /// Gets the entity object.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <returns></returns>
        public EntityObject GetEntityObject(Guid id)
        {
            // Discard our old entity context and create a new one.  This seems wasteful,
            // but if we maintain the same context it will cache all the data that is ever
            // loaded from it.  This can cause huge memory growth over time, as well as
            // concurrency issues.  Creating a new context is cheap and avoids these issues.
            if (_context != null)
            {
                _context.Dispose();
            }
            _context = new EnterpriseTestContext();

            EnterpriseTestMapNode node = _databaseMap[id];

            switch (node.NodeType)
            {
            case ConfigurationObjectType.EnterpriseScenario:
                return(EnterpriseScenario.Select(_context, id));

            case ConfigurationObjectType.VirtualResource:
                return(VirtualResource.Select(_context, id));

            case ConfigurationObjectType.ResourceMetadata:
                return(VirtualResourceMetadata.Select(_context, id));

            case ConfigurationObjectType.ScenarioFolder:
            case ConfigurationObjectType.ResourceFolder:
            case ConfigurationObjectType.MetadataFolder:
                return(ConfigurationTreeFolder.Select(_context, id));

            default:
                return(null);
            }
        }
        /// <summary>
        /// Creates a copy of an activity (Virtual Resource metadata)
        /// </summary>
        /// <param name="source">The source activity to copy from</param>
        /// <param name="srcParent"></param>
        /// <param name="newParent"></param>
        /// <param name="Mappings"></param>
        /// <param name="isPartOfResourceCopy"></param>
        /// <returns>Guid of the Activity (metadata) node that was created</returns>
        public Guid CopyActivity(Guid source, Guid srcParent, Guid newParent, Dictionary <Guid?, Guid?> Mappings, bool isPartOfResourceCopy)
        {
            using (EnterpriseTestContext ctx = new EnterpriseTestContext())
            {
                VirtualResourceMetadata vrmdSource = VirtualResourceMetadata.Select(ctx, source);
                VirtualResourceMetadata vrmdCopy   = vrmdSource.Copy(isPartOfResourceCopy);

                vrmdCopy.Name = vrmdSource.Name;
                VirtualResource dstVR;
                HandleObjectChange(ctx, vrmdCopy);
                ctx.SaveChanges();
                if (vrmdSource.VirtualResourceId == srcParent)
                {
                    dstVR = VirtualResource.Select(ctx, newParent);
                }
                else
                {
                    try
                    {
                        vrmdCopy.FolderId = (Guid)Mappings[srcParent];
                        dstVR             = VirtualResource.Select(ctx, (Guid)Mappings[vrmdSource.VirtualResourceId]);
                    }
                    catch (Exception)
                    {
                        throw new Exception("Cannot find New Target VR / MetaData Folder for " + source.ToString());
                    }
                }
                dstVR.VirtualResourceMetadataSet.Add(vrmdCopy);
                HandleObjectChange(ctx, vrmdCopy);
                HandleObjectChange(ctx, dstVR);
                ctx.SaveChanges();
                return(vrmdCopy.VirtualResourceMetadataId);
            }
        }
Пример #7
0
        public override void Initialize(object entity)
        {
            _metadata = entity as VirtualResourceMetadata;
            if (_metadata == null)
            {
                throw new EditorTypeMismatchException(entity, typeof(VirtualResourceMetadata));
            }

            string server = (_metadata.VirtualResource as PerfMonCollector).HostName;
            List <ResourceWindowsCategory> categories = null;

            using (EnterpriseTestContext context = new EnterpriseTestContext())
            {
                //Load categories from the database.
                categories = ResourceWindowsCategory.Select(context, "PerfMon").ToList();
            }

            // Get the top node. It will have a blank name.
            ResourceWindowsCategory top = categories.FirstOrDefault(c => string.IsNullOrEmpty(c.Name));

            foreach (ResourceWindowsCategory category in top.Children)
            {
                if (category.Name == PrintQueueCategory)
                {
                    LoadPrintQueueCounterNames(category.Children);
                }
                else
                {
                    BuildTree(category);
                }
            }
            LoadPrintQueues(server);

            SelectedCounter = _metadata.Metadata;

            // Data Bindings
            hostNameDisplay_Label.Text = server;
            category_TextBox.DataBindings.Add("Text", _selected, "Category");
            instance_TextBox.DataBindings.Add("Text", _selected, "Instance");
            counter_TextBox.DataBindings.Add("Text", _selected, "Counter");
            collect_CheckBox.DataBindings.Add("Checked", _selected, "CollectAtStart");
            //Interval Binding requires special formatting.
            Binding intervalBinding = new Binding("Text", _selected, "CollectionInterval");

            intervalBinding.Format += new ConvertEventHandler(IntervalBinding_Format);
            intervalBinding.Parse  += new ConvertEventHandler(IntervalBinding_Parse);
            interval_TextBox.DataBindings.Add(intervalBinding);

            SyncTreeChecked(_selected.Key);

            available_TreeView.BeforeCheck += new TreeViewCancelEventHandler(Available_TreeView_BeforeCheck);
            available_TreeView.AfterCheck  += new TreeViewEventHandler(Available_TreeView_AfterCheck);

            // Validate the data coming in
            ValidateInterval(_selected.CollectionInterval);
            ValidateSelection();
        }
 private static void AddMetadataIfMissing(VirtualResource reservation)
 {
     if (reservation.VirtualResourceMetadataSet.Count == 0)
     {
         var resourceType = VirtualResourceType.MachineReservation.ToString();
         var metadata     = new VirtualResourceMetadata(resourceType, resourceType);
         metadata.Metadata = LegacySerializer.SerializeXml(new MachineReservationMetadata()).ToString();
         reservation.VirtualResourceMetadataSet.Add(metadata);
     }
 }
Пример #9
0
 /// <summary>
 /// Loads the ResourceMetadataContract from the specified VirtualResourceMetadata object.
 /// </summary>
 public void Load(VirtualResourceMetadata data)
 {
     Name          = data.Name;
     MetadataId    = data.VirtualResourceMetadataId;
     ResourceType  = data.ResourceType;
     MetadataType  = data.MetadataType;
     Metadata      = data.Metadata;
     Enabled       = data.Enabled;
     ExecutionPlan = data.ExecutionPlan;
 }
        private void addCounter_ToolStripButton_Click(object sender, EventArgs e)
        {
            if (ValidateSelection())
            {
                PerfMonCounterData tempCounterData = new PerfMonCounterData();

                if (_loadFromMachine)
                {
                    PerformanceCounter selectedCounter = SelectedCounter as PerformanceCounter;
                    tempCounterData.Category     = selectedCounter.CategoryName;
                    tempCounterData.Counter      = selectedCounter.CounterName;
                    tempCounterData.InstanceName = selectedCounter.InstanceName;
                }
                else
                {
                    string selectedInstance = SelectedInstance;
                    tempCounterData.Category = SelectedCategory.ToString();
                    tempCounterData.Counter  = ((ResourceWindowsCategory)SelectedCounter).Name;
                    /// Don't insert "N/A" into the counter data, use empty string instead.
                    tempCounterData.InstanceName = (selectedInstance == PerfMonController.InstanceDoesNotApply) ? string.Empty : selectedInstance;
                }

                tempCounterData.TargetHost = _selectedServer.HostName;

                //if the user has entered the username and password then use it
                if (!string.IsNullOrEmpty(userName_textBox.Text) || !string.IsNullOrEmpty(password_textBox.Text))
                {
                    tempCounterData.Credentials = new PerfMonCounterCredential(userName_textBox.Text, password_textBox.Text, string.IsNullOrEmpty(domain_textBox.Text) ? "." : domain_textBox.Text);
                }
                else
                {
                    tempCounterData.Credentials = new PerfMonCounterCredential();
                }

                tempCounterData.Interval = interval_TimeSpanControl.Value.TotalMilliseconds;

                VirtualResourceMetadata tempMetaData = new VirtualResourceMetadata(VirtualResourceType.PerfMonCollector.ToString(), "PerfMonCounter");

                //associate the GUID of the tempMetaData to the perfmoncounterdata item
                tempCounterData.VirtualResourceMetadataId = tempMetaData.VirtualResourceMetadataId;

                tempMetaData.VirtualResourceId = _perfMonCollector.VirtualResourceId;
                tempMetaData.Name = tempCounterData.TargetHost + "-" + tempCounterData.Category + "/" + tempCounterData.InstanceName + "/" + tempCounterData.Counter;
                string metadataxml = LegacySerializer.SerializeXml(tempCounterData).ToString();
                tempMetaData.Metadata = metadataxml;

                //we are not currently connected to DB or using the existing data, so add this to the virtual resource metadata collection
                _perfMonCollector.VirtualResourceMetadataSet.Add(tempMetaData);
                _perfMonCollector.Platform = (string)platform_ComboBox.SelectedValue;

                //populate the listview in the newly added item
                _selectedCountersDataList.Add(tempCounterData);
            }
        }
Пример #11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EnterpriseTestMapNode"/> class.
 /// </summary>
 /// <param name="metadata">The virtual resource metadata.</param>
 public EnterpriseTestMapNode(VirtualResourceMetadata metadata)
     : this(metadata.VirtualResourceMetadataId)
 {
     ParentId     = metadata.VirtualResourceId;
     FolderId     = metadata.FolderId;
     Name         = metadata.Name;
     NodeType     = ConfigurationObjectType.ResourceMetadata;
     ResourceType = metadata.ResourceType;
     MetadataType = metadata.MetadataType;
     Enabled      = metadata.Enabled;
 }
Пример #12
0
        private void UpdateTestResult()
        {
            Collection <int> testcaseIds = new Collection <int>();

            Dictionary <int, bool> testIdResult = new Dictionary <int, bool>();

            //using (SqlAdapter datalogsqlAdapter = new SqlAdapter(DataLogSqlConnection.ConnectionString))
            //{
            //    //string sqlText = "select (select count(*) from ActivityExecution where SessionId = '{0}' and UpdateType = 'Completed') as PassedCount, (select count(*) from ActivityExecution where SessionId = '{0}') as TotalCount".FormatWith(_ticket.SessionId);
            //    string sqlText = "select VirtualResourceMetadataId, MIN(case when UpdateType = 'Completed' then 1 else 0 end) as TestResult from ActivityExecution where SessionId = {0}  group by VirtualResourceMetadataId".FormatWith(_ticket.SessionId);
            //    var reader = datalogsqlAdapter.ExecuteReader(sqlText);
            //    if (reader != null)
            //    {
            //        while (reader.Read())
            //        {
            //            TestIdResult.Add(Guid.Parse(reader["VirtualResourceId"].ToString()), Convert.ToBoolean(reader.GetInt32(1))) ;
            //        }

            //    }

            //    reader.Close();
            //}

            DataLogContext traceContext = DbConnect.DataLogContext();

            {
                var activityExecutions = traceContext.SessionData(_ticket.SessionId).Activities;

                var failedActivities = activityExecutions.Where(x => x.Status == "Failed");

                using (EnterpriseTestContext context = new EnterpriseTestContext())
                {
                    foreach (var metadataId in activityExecutions.Select(x => x.ResourceMetadataId.Value).Distinct())
                    {
                        testcaseIds.Add(VirtualResource.Select(context, VirtualResourceMetadata.Select(context, metadataId).VirtualResourceId).TestCaseId);
                    }

                    foreach (var testcaseId in testcaseIds.Distinct())
                    {
                        testIdResult.Add(testcaseId, true);
                    }
                    foreach (var failedActivity in failedActivities)
                    {
                        testIdResult.Remove(VirtualResource.Select(context, VirtualResourceMetadata.Select(context, failedActivity.ResourceMetadataId.Value).VirtualResourceId).TestCaseId);

                        testIdResult.Add(VirtualResource.Select(context, VirtualResourceMetadata.Select(context, failedActivity.ResourceMetadataId.Value).VirtualResourceId).TestCaseId, false);
                    }
                }
            }
            _scenarioList.ElementAt(_currentScenarioIndex).TestResult = testIdResult;
        }
Пример #13
0
        private void AddActivity(VirtualResourceMetadata metadata)
        {
            metadata.VirtualResourceId = _loadTester.VirtualResourceId;
            metadata.Enabled           = true;
            //metadata.ExecutionOrder = _loadTester.VirtualResourceMetadataSet.Count + 1;
            _loadTester.VirtualResourceMetadataSet.Add(metadata);

            LoadTesterConfiguration config = new LoadTesterConfiguration();

            //config.Name = metadata.Name;
            //config.MetadataType = metadata.MetadataType;
            //config.ThreadCount = 1;
            config.Metadata      = metadata;
            config.ExecutionPlan = new LoadTesterExecutionPlan();
            _configurations.Add(config);

            // Set the current plan to this new entry
            _currentConfig = config;
            activity_GridView.Rows[_configurations.Count - 1].IsSelected = true;

            switch (config.ExecutionPlan.Mode)
            {
            case ExecutionMode.RateBased:
                execution_TabControl.SelectedTab = rateBased_TabPage;
                break;

            case ExecutionMode.Duration:
                execution_TabControl.SelectedTab = timeBased_TabPage;
                break;

            case ExecutionMode.Poisson:
                execution_TabControl.SelectedTab = poisson_TabPage;
                break;
            }

            switch (config.ExecutionPlan.RampUpMode)
            {
            case RampUpMode.RateBased:
                rampUp_TabControl.SelectedTab = timeBasedRampUp_TabPage;
                break;

            case RampUpMode.TimeBased:
                rampUp_TabControl.SelectedTab = rateBasedRampUp_TabPage;
                break;
            }

            SetupExecutionPlanBindings(config);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ConfigurationObjectTag" /> class
        /// representing a <see cref="VirtualResourceMetadata" /> object.
        /// </summary>
        /// <param name="metadata">The <see cref="VirtualResourceMetadata" />.</param>
        /// <exception cref="ArgumentNullException"><paramref name="metadata" /> is null.</exception>
        public ConfigurationObjectTag(VirtualResourceMetadata metadata)
        {
            if (metadata == null)
            {
                throw new ArgumentNullException(nameof(metadata));
            }

            Id           = metadata.VirtualResourceMetadataId;
            ObjectType   = ConfigurationObjectType.VirtualResourceMetadata;
            ResourceType = EnumUtil.Parse <VirtualResourceType>(metadata.ResourceType);
            MetadataType = metadata.MetadataType;
            Name         = metadata.Name;
            ParentId     = metadata.VirtualResourceId;
            FolderId     = metadata.FolderId;
            EnabledState = metadata.Enabled ? EnabledState.Enabled : EnabledState.Disabled;
        }
Пример #15
0
 private void copyActivity_ToolStripButton_Click_1(object sender, EventArgs e)
 {
     using (EnterpriseTestContext context = new EnterpriseTestContext())
     {
         using (VirtualResourceMetadataListForm form = new VirtualResourceMetadataListForm())
         {
             form.Initialize(VirtualResourceMetadata.Select(context, VirtualResourceType.LoadTester));
             if (form.ShowDialog(this) == DialogResult.OK)
             {
                 foreach (VirtualResourceMetadata metadata in form.SelectedMetadata)
                 {
                     AddActivity(metadata.Copy(false));
                 }
             }
         }
     }
 }
        /// <summary>
        /// Enables/disable the specified object.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="enabled">Whether the object should be enabled.</param>
        public void EnableDisable(Guid id, bool enabled)
        {
            using (EnterpriseTestContext context = new EnterpriseTestContext())
            {
                EnterpriseTestMapNode node = _databaseMap[id];
                switch (node.NodeType)
                {
                case ConfigurationObjectType.VirtualResource:
                    var resource = VirtualResource.Select(context, id);
                    resource.Enabled = enabled;
                    HandleObjectChange(context, resource);
                    break;

                case ConfigurationObjectType.ResourceMetadata:
                    var metadata = VirtualResourceMetadata.Select(context, id);
                    metadata.Enabled = enabled;
                    HandleObjectChange(context, metadata);
                    break;
                }
                context.SaveChanges();
            }
        }
        private void MoveHandler(EnterpriseTestContext context, IEnumerable <Guid> affected)
        {
            foreach (Guid affectedId in affected)
            {
                EnterpriseTestMapNode moved = _databaseMap[affectedId];
                switch (moved.NodeType)
                {
                case ConfigurationObjectType.EnterpriseScenario:
                    var scenario = EnterpriseScenario.Select(context, affectedId);
                    scenario.FolderId = moved.FolderId;
                    HandleObjectChange(context, scenario);
                    break;

                case ConfigurationObjectType.VirtualResource:
                    var resource = VirtualResource.Select(context, affectedId);
                    resource.EnterpriseScenarioId = (Guid)moved.ParentId;
                    resource.FolderId             = moved.FolderId;
                    HandleObjectChange(context, resource);
                    break;

                case ConfigurationObjectType.ResourceMetadata:
                    var metadata = VirtualResourceMetadata.Select(context, affectedId);
                    metadata.VirtualResourceId = (Guid)moved.ParentId;
                    metadata.FolderId          = moved.FolderId;
                    HandleObjectChange(context, metadata);
                    break;

                case ConfigurationObjectType.ScenarioFolder:
                case ConfigurationObjectType.ResourceFolder:
                case ConfigurationObjectType.MetadataFolder:
                    var folder = ConfigurationTreeFolder.Select(context, affectedId);
                    folder.ParentId = moved.ParentId;
                    HandleObjectChange(context, folder);
                    break;
                }
            }
            context.SaveChanges();
        }
        /// <summary>
        /// Renames the object with the specified id.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="name">The name.</param>
        public void Rename(Guid id, string name)
        {
            using (EnterpriseTestContext context = new EnterpriseTestContext())
            {
                EnterpriseTestMapNode node = _databaseMap[id];
                switch (node.NodeType)
                {
                case ConfigurationObjectType.EnterpriseScenario:
                    var scenario = EnterpriseScenario.Select(context, id);
                    scenario.Name = name;
                    HandleObjectChange(context, scenario);
                    break;

                case ConfigurationObjectType.VirtualResource:
                    var resource = VirtualResource.Select(context, id);
                    resource.Name = name;
                    HandleObjectChange(context, resource);
                    break;

                case ConfigurationObjectType.ResourceMetadata:
                    var metadata = VirtualResourceMetadata.Select(context, id);
                    metadata.Name = name;
                    HandleObjectChange(context, metadata);
                    break;

                case ConfigurationObjectType.ScenarioFolder:
                case ConfigurationObjectType.ResourceFolder:
                case ConfigurationObjectType.MetadataFolder:
                    var folder = ConfigurationTreeFolder.Select(context, id);
                    folder.Name = name;
                    HandleObjectChange(context, folder);
                    break;
                }
                context.SaveChanges();
            }
        }
Пример #19
0
 public ActivityListItem(VirtualResourceMetadata metadata)
 {
     Id           = metadata.VirtualResourceMetadataId;
     Name         = metadata.Name;
     ActivityType = metadata.MetadataType;
 }
        private static void DatabaseDelete(IEnumerable <EnterpriseTestMapNode> nodes)
        {
            //--------------------------------------------------------------------------------------------------
            // ADD: CR #1894.  Cascading deletes were throwing an unhandled exception because of a DB Foreign
            // Key Constraint on the folderId field.  What that means is that the ORDER in which things are
            // deleted, now becomes very important.  If we attempt to remove a 'container' before we remove
            // the contents, the exception will be thrown when the contents are removed.  So - in order to make
            // this work, we group the objects to be deleted - and then we have to order those groups (since the
            // order of the GroupBy could be non-deterministic) and make sure that we delete things in the
            // correct sequence.  There is probably a more elegant way of doing this - but there was no time.
            using (EnterpriseTestContext context = new EnterpriseTestContext())
            {
                int[] ordered = new int[6] {
                    -1, -1, -1, -1, -1, -1
                };

                var colls = nodes.GroupBy(n => n.NodeType, n => n.Id);
                int ndx   = 0;
                foreach (var grp in colls)
                {
                    switch (grp.Key)
                    {
                    case ConfigurationObjectType.ResourceMetadata:
                        ordered[0] = ndx++;
                        break;

                    case ConfigurationObjectType.MetadataFolder:
                        ordered[1] = ndx++;
                        break;

                    case ConfigurationObjectType.VirtualResource:
                        ordered[2] = ndx++;
                        break;

                    case ConfigurationObjectType.ResourceFolder:
                        ordered[3] = ndx++;
                        break;

                    case ConfigurationObjectType.EnterpriseScenario:
                        ordered[4] = ndx++;
                        break;

                    case ConfigurationObjectType.ScenarioFolder:
                        ordered[5] = ndx++;
                        break;
                    }
                }

                for (ndx = 0; ndx < 6; ndx++)
                {
                    if (ordered[ndx] >= 0)
                    {
                        switch (colls.ElementAt(ordered[ndx]).Key)
                        {
                        case ConfigurationObjectType.ResourceMetadata:
                            foreach (var vrmd in VirtualResourceMetadata.Select(context, colls.ElementAt(ordered[ndx])))
                            {
                                context.DeleteObject(vrmd);
                            }
                            break;

                        case ConfigurationObjectType.MetadataFolder:
                            foreach (var mdf in ConfigurationTreeFolder.Select(context, colls.ElementAt(ordered[ndx])))
                            {
                                context.DeleteObject(mdf);
                            }
                            break;

                        case ConfigurationObjectType.VirtualResource:
                            foreach (var vr in VirtualResource.Select(context, colls.ElementAt(ordered[ndx])))
                            {
                                context.DeleteObject(vr);
                            }
                            break;

                        case ConfigurationObjectType.ResourceFolder:
                            foreach (var rf in ConfigurationTreeFolder.Select(context, colls.ElementAt(ordered[ndx])))
                            {
                                context.DeleteObject(rf);
                            }
                            break;

                        case ConfigurationObjectType.EnterpriseScenario:
                            foreach (var scenario in EnterpriseScenario.Select(context, colls.ElementAt(ordered[ndx])))
                            {
                                context.DeleteObject(scenario);
                            }
                            break;

                        case ConfigurationObjectType.ScenarioFolder:
                            foreach (var sf in ConfigurationTreeFolder.Select(context, colls.ElementAt(ordered[ndx])))
                            {
                                var deletingScenarioIds = nodes.Where(n => n.NodeType == ConfigurationObjectType.EnterpriseScenario).Select(n => n.Id);
                                foreach (var folder in ConfigurationTreeFolder.Select(context, colls.ElementAt(ordered[ndx])))
                                {
                                    var containedScenarios = ConfigurationTreeFolder.ContainedScenarioIds(context, folder.ConfigurationTreeFolderId);
                                    if (containedScenarios.All(n => deletingScenarioIds.Contains(n)))
                                    {
                                        // All of the sceanrios under this folder are in the list of scenarios to delete,
                                        // so we can delete this folder as well.
                                        context.DeleteObject(folder);
                                    }
                                }
                            }
                            break;
                        }
                        context.SaveChanges();
                    }
                }
            }
        }
Пример #21
0
 public WorkerActivityConfiguration(VirtualResourceMetadata metadata, WorkerExecutionPlan plan)
 {
     Metadata      = metadata;
     ExecutionPlan = plan;
 }
        private static void UpdateMetadata(VirtualResourceMetadata metadata, IPluginConfigurationControl control)
        {
            // Get the XML metadata from the plugin
            PluginConfigurationData editorData = control.GetConfiguration();

            metadata.Metadata        = editorData.GetMetadata().ToString();
            metadata.MetadataVersion = editorData.MetadataVersion;

            // Save asset selection data
            if (editorData.Assets != null)
            {
                if (metadata.AssetUsage == null)
                {
                    metadata.AssetUsage = new VirtualResourceMetadataAssetUsage();
                }
                metadata.AssetUsage.AssetSelectionData = Serializer.Serialize(editorData.Assets).ToString();
            }
            else
            {
                metadata.AssetUsage = null;
            }

            // Save document selection data
            if (editorData.Documents != null)
            {
                if (metadata.DocumentUsage == null)
                {
                    metadata.DocumentUsage = new VirtualResourceMetadataDocumentUsage();
                }
                metadata.DocumentUsage.DocumentSelectionData = Serializer.Serialize(editorData.Documents).ToString();
            }
            else
            {
                metadata.DocumentUsage = null;
            }

            // Save server selection data
            if (editorData.Servers != null)
            {
                if (metadata.ServerUsage == null)
                {
                    metadata.ServerUsage = new VirtualResourceMetadataServerUsage();
                }
                metadata.ServerUsage.ServerSelectionData = Serializer.Serialize(editorData.Servers).ToString();
            }
            else
            {
                metadata.ServerUsage = null;
            }

            // Save print queue selection data
            if (editorData.PrintQueues != null)
            {
                if (metadata.PrintQueueUsage == null)
                {
                    metadata.PrintQueueUsage = new VirtualResourceMetadataPrintQueueUsage();
                }
                metadata.PrintQueueUsage.PrintQueueSelectionData = Serializer.Serialize(editorData.PrintQueues).ToString();
            }
            else
            {
                metadata.PrintQueueUsage = null;
            }
        }
Пример #23
0
        private void ImportScenarios(string fileName, Guid folderId)
        {
            int totalActivities = 0;
            List <Database.EnterpriseScenario> exportedScenarios;

            using (FileStream fs = File.OpenRead(fileName))
            {
                StreamReader sReader        = new StreamReader(fs);
                var          scenarioString = sReader.ReadToEnd();
                exportedScenarios = (List <Database.EnterpriseScenario>)JsonConvert.DeserializeObject(scenarioString, typeof(List <Database.EnterpriseScenario>));
            }

            using (EnterpriseTestContext context = new EnterpriseTestContext(_currentDatabase))
            {
                foreach (var sourceScenario in exportedScenarios)
                {
                    EnterpriseScenario targetScenario = new EnterpriseScenario
                    {
                        Name = sourceScenario.Name,
                        EnterpriseScenarioId = SequentialGuid.NewGuid(),
                        FolderId             = folderId,
                        Company          = sourceScenario.Company,
                        Deleted          = false,
                        Description      = sourceScenario.Description,
                        Owner            = UserManager.CurrentUserName,
                        ScenarioSettings = sourceScenario.ScenarioSettings,
                        Vertical         = sourceScenario.Vertical
                    };
                    //if (context.EnterpriseScenarios.FirstOrDefault(x =>
                    //        x.EnterpriseScenarioId == sourceScenario.EnterpriseScenarioId) != null)
                    //{
                    //    targetScenario.EnterpriseScenarioId = SequentialGuid.NewGuid();
                    //}

                    foreach (var sourceScenarioVirtualResource in sourceScenario.VirtualResources)
                    {
                        SolutionTester targetVirtualResource = new SolutionTester("SolutionTester")
                        {
                            Description          = sourceScenarioVirtualResource.Description,
                            Enabled              = true,
                            EnterpriseScenarioId = targetScenario.EnterpriseScenarioId,
                            Name                   = sourceScenarioVirtualResource.Name,
                            InstanceCount          = sourceScenarioVirtualResource.InstanceCount,
                            Platform               = sourceScenarioVirtualResource.Platform,
                            ResourceType           = sourceScenarioVirtualResource.ResourceType,
                            ResourcesPerVM         = sourceScenarioVirtualResource.ResourcePerVM,
                            TestCaseId             = sourceScenarioVirtualResource.TestCaseId,
                            VirtualResourceId      = SequentialGuid.NewGuid(),
                            DurationTime           = sourceScenarioVirtualResource.DurationTime,
                            MaxActivityDelay       = sourceScenarioVirtualResource.MaxActivityDelay,
                            MinActivityDelay       = sourceScenarioVirtualResource.MinActivityDelay,
                            RandomizeActivities    = sourceScenarioVirtualResource.RandomizeActivities,
                            RandomizeActivityDelay = sourceScenarioVirtualResource.RandomizeActivityDelay,
                            ExecutionMode          = EnumUtil.Parse <ExecutionMode>(sourceScenarioVirtualResource.RunMode),
                            MaxStartupDelay        = sourceScenarioVirtualResource.MaxStartupDelay,
                            MinStartupDelay        = sourceScenarioVirtualResource.MinStartupDelay,
                            RandomizeStartupDelay  = sourceScenarioVirtualResource.RandomizeStartupDelay,
                            RepeatCount            = sourceScenarioVirtualResource.RepeatCount,
                            AccountType            = SolutionTesterCredentialType.DefaultDesktop,
                            UseCredential          = false
                        };

                        //if (context.VirtualResources.FirstOrDefault(x =>
                        //        x.VirtualResourceId == sourceScenarioVirtualResource.VirtualResourceId) != null)
                        //{
                        //    targetVirtualResource.VirtualResourceId = SequentialGuid.NewGuid();
                        //}

                        foreach (var virtualResourceMetadata in sourceScenarioVirtualResource.VirtualResourceMetadata)
                        {
                            VirtualResourceMetadata targetVirtualResourceMetadata =
                                new VirtualResourceMetadata(virtualResourceMetadata.ResourceType,
                                                            virtualResourceMetadata.MetadataType)
                            {
                                VirtualResourceId = targetVirtualResource.VirtualResourceId,
                                Deleted           = false,
                                Enabled           = true,
                                ExecutionPlan     = virtualResourceMetadata.ExecutionPlan,
                                Metadata          = virtualResourceMetadata.Metadata,
                                MetadataVersion   = virtualResourceMetadata.MetadataVersion,
                                MetadataType      = virtualResourceMetadata.MetadataType,
                                Name         = virtualResourceMetadata.Name,
                                ResourceType = virtualResourceMetadata.ResourceType,
                                VirtualResourceMetadataId = SequentialGuid.NewGuid(),
                            };
                            //if (context.VirtualResourceMetadataSet.FirstOrDefault(x =>
                            //        x.VirtualResourceMetadataId ==
                            //        targetVirtualResourceMetadata.VirtualResourceMetadataId) != null)
                            //{
                            //    targetVirtualResourceMetadata.VirtualResourceMetadataId = SequentialGuid.NewGuid();
                            //}

                            targetVirtualResourceMetadata.AssetUsage = VirtualResourceMetadataAssetUsage
                                                                       .CreateVirtualResourceMetadataAssetUsage(
                                targetVirtualResourceMetadata.VirtualResourceMetadataId,
                                Serializer.Serialize(_edtAssetSelectionControl.AssetSelectionData).ToString());
                            targetVirtualResource.VirtualResourceMetadataSet.Add(targetVirtualResourceMetadata);
                            totalActivities++;
                        }
                        targetScenario.VirtualResources.Add(targetVirtualResource);
                    }
                    context.EnterpriseScenarios.AddObject(targetScenario);
                }

                try
                {
                    MessageBox.Show(
                        $"Found {totalActivities} activities to import. This might take few minutes to complete. Please be patient. Press OK to proceed.",
                        ApplicationName, MessageBoxButton.OK, MessageBoxImage.Information);
                    context.SaveChanges();
                    MessageBox.Show($"{exportedScenarios.Count} scenarios successfully imported.", ApplicationName,
                                    MessageBoxButton.OK, MessageBoxImage.Information);
                }
                catch (SqlException sqlException)
                {
                    MessageBox.Show($"Error occurred while importing the scenario. {ScalableTest.Extension.JoinAllErrorMessages(sqlException)}",
                                    ApplicationName, MessageBoxButton.OK, MessageBoxImage.Error);
                }
                catch (UpdateException updateException)
                {
                    MessageBox.Show($"Error occurred while importing the scenario. {ScalableTest.Extension.JoinAllErrorMessages(updateException)}",
                                    ApplicationName, MessageBoxButton.OK, MessageBoxImage.Error);
                }
                catch (Exception e)
                {
                    MessageBox.Show($"An unknown error occurred while importing scenario. {ScalableTest.Extension.JoinAllErrorMessages(e)}", ApplicationName, MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }