LoadTestGoalBasedLoadProfile Class

Represents the load profile of a load test that has a goal-based load pattern.

Inheritance Hierarchy

System.Object
  Microsoft.VisualStudio.TestTools.LoadTesting.LoadTestLoadProfile
    Microsoft.VisualStudio.TestTools.LoadTesting.LoadTestGoalBasedLoadProfile

Namespace:  Microsoft.VisualStudio.TestTools.LoadTesting
Assembly:  Microsoft.VisualStudio.QualityTools.LoadTestFramework (in Microsoft.VisualStudio.QualityTools.LoadTestFramework.dll)

Syntax

'Declaration
<SerializableAttribute> _
Public Class LoadTestGoalBasedLoadProfile _
    Inherits LoadTestLoadProfile
[SerializableAttribute]
public class LoadTestGoalBasedLoadProfile : LoadTestLoadProfile
[SerializableAttribute]
public ref class LoadTestGoalBasedLoadProfile : public LoadTestLoadProfile
[<SerializableAttribute>]
type LoadTestGoalBasedLoadProfile =  
    class
        inherit LoadTestLoadProfile
    end
public class LoadTestGoalBasedLoadProfile extends LoadTestLoadProfile

The LoadTestGoalBasedLoadProfile type exposes the following members.

Constructors

  Name Description
Public method LoadTestGoalBasedLoadProfile Initializes a new instance of the LoadTestGoalBasedLoadProfile class.

Top

Properties

  Name Description
Public property CategoryName Gets or sets a performance counter category to monitor.
Public property CounterName Gets or sets the performance counter to monitor.
Public property HigherValuesBetter Set this Boolean value to true when the performance counter that is specified by the Category and Counter properties is a performance counter for which a lower value indicates a higher usage of a resource.
Public property InitialUserCount Gets or sets the initial user count. This is the number of virtual users to run at the start of the load test before the user load is adjusted, based on the specified goal.
Public property InstanceName Gets or sets the performance counter instance to monitor.
Public property MachineName Gets or sets the name of the computer to monitor.
Public property MaxTargetValue Gets or sets an upper limit to target. Load is increased or decreased to keep the counter below this value.
Public property MaxUserCount Gets or sets the maximum user count. The load cannot not exceed this value after the goal is met. (Overrides LoadTestLoadProfile.MaxUserCount.)
Public property MaxUserCountDecrease Gets or sets the maximum amount by which to reduce the user load.
Public property MaxUserCountIncrease Gets or sets the maximum amount by which to increase the user load.
Public property MinTargetValue Gets or sets the lower limit to target for the goal-based load pattern.
Public property MinUserCount Gets or sets the minimum user count. The load cannot go below this value even to satisfy the goal. (Overrides LoadTestLoadProfile.MinUserCount.)
Public property ScenarioName Gets or sets the name of the scenario in the load test that the load profile implementation is controlling. (Inherited from LoadTestLoadProfile.)
Public property StopAdjustingAtGoal true indicates that the test must stop adjusting user load. false indicates that the test must continue to adjust the user load throughout the test if that is required to keep the specified performance counter value in the target range.

Top

Methods

  Name Description
Public method CheckIfProfileCanBeModified Throws an exception if the profile property is not yet ready to be modified. (Inherited from LoadTestLoadProfile.)
Public method Copy Returns a copy of the current object so it can be modified and assigned to the LoadTestScenario.LoadProfile property. (Inherited from LoadTestLoadProfile.)
Public method Equals Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetLoad Returns the user load that should be used at the current time in the load test based on the value of elapsedSeconds since the start of the load test that is passed as an argument. (Overrides LoadTestLoadProfile.GetLoad(Int32).)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method RestoreUserCountAfterRestart Restores the current (after restart) user count to the value it had before the restart. (Overrides LoadTestLoadProfile.RestoreUserCountAfterRestart(Int32).)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Public method Validate Throws an InvalidLoadProfileException if the LoadProfile object has properties that are inconsistent or not valid. It also displays an appropriate message. (Overrides LoadTestLoadProfile.Validate().)

Top

Examples

In the following example, a Load Test Plug-in constructs a GoadBasedLoadProfile object and assigns it to the LoadTestScenario. It also assigns a value for DelayBetweenIterations to the LoadTestScenario in the Initialize() method.

using Microsoft.VisualStudio.TestTools.LoadTesting;
public class LoadTestPluginInitChangeProfile : ILoadTestPlugin
{
    public void Initialize(LoadTest loadTest)
    {
        LoadTestGoalBasedLoadProfile goalLoadProfile = new LoadTestGoalBasedLoadProfile();
        goalLoadProfile.MachineName = Environment.MachineName;
        goalLoadProfile.CategoryName = "Processor";
        goalLoadProfile.CounterName = "% Processor Time";
        goalLoadProfile.InstanceName = "_Total";
        goalLoadProfile.InitialUserCount = 5;
        goalLoadProfile.MinUserCount = 1;
        goalLoadProfile.MaxUserCount = 100;
        goalLoadProfile.MaxUserCountIncrease = 10;
        goalLoadProfile.MaxUserCountDecrease = 5;
        goalLoadProfile.MinTargetValue = 20;
        goalLoadProfile.MaxTargetValue = 25;

        // This example assumes that there is only one scenario
        loadTest.Scenarios[0].LoadProfile = goalLoadProfile;
        loadTest.Scenarios[0].DelayBetweenIterations = 5;
    }
}

In the following example, a Load Test Plug-In modifies selected properties of a GoalBasedLoadProfile in the HeartbeatEvent handler. This approach works only if the load profile that is specified in the .loadtest file is a Goal-Based Load Pattern.

using Microsoft.VisualStudio.TestTools.LoadTesting;

public class LoadTestPluginChangeGoal : ILoadTestPlugin
{
    private LoadTest m_loadTest;
    private LoadTestScenario m_scenario1;
    private bool m_goalChanged;

    public void Initialize(LoadTest loadTest)
    {
        m_loadTest = loadTest;
        // This example assume there is only one scenario
        m_scenario1 = loadTest.Scenarios[0];
        m_loadTest.Heartbeat += new   EventHandler<HeartbeatEventArgs>(m_loadTest_Heartbeat);
    }

    void m_loadTest_Heartbeat(object sender, HeartbeatEventArgs e)
    {
        if (e.ElapsedSeconds >= 60 && !m_goalChanged)
        {
            LoadTestGoalBasedLoadProfile goalLoadProfile = 
                m_scenario1.LoadProfile.Copy() 
                    as LoadTestGoalBasedLoadProfile;
            goalLoadProfile.MinTargetValue = 50;
            goalLoadProfile.MaxTargetValue = 60;
            m_scenario1.LoadProfile = goalLoadProfile;
            m_goalChanged = true;
        }
    }
}

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

Microsoft.VisualStudio.TestTools.LoadTesting Namespace

Other Resources

About Load Pattern

How to: Create a Load Test Plug-In