Share via


WebTest Plugin : SetMaxMinThinkTime

WebTest Plugin that dynamically Sets the Maximum or Minimum think time value for each request. Options to throw exception if it encounters a think time larger than your max value so it can help to track down tests that have requests with large think times. Overrides the PreRequest event

 

  [Description("WebTest Plugin that dynamically Sets the Maximum or Minimum think time value for each request. Overrides the PreRequest event")]
    public class SetMaxMinThinkTime : WebTestPlugin
    {
        public SetMaxMinThinkTime()
        {
            MaxThinkTime = 60;
            MinThinkTime = 0;
            OutputComments = false;
            Enabled = true;
            ThrowExceptionIfThresholdExceeded = false;
        }
 
        public override void PreRequest(object sender, PreRequestEventArgs e)
        {
            //if plugin is disabled output a comment and return
            if (Enabled == false)
            {
                if (OutputComments)
                    e.WebTest.AddCommentToResult(this.ToString() + " Plugin is Disabled, no processing occured.");
                return;
            }
 
            //determine if threshold values exceeded and throw if exception enabled
            if (((e.Request.ThinkTime > MaxThinkTime) || (e.Request.ThinkTime < MinThinkTime)) && (ThrowExceptionIfThresholdExceeded))
            {
                e.WebTest.AddCommentToResult(this.ToString() + " Think Time Threshold value exceeded. Think Time = " + e.Request.ThinkTime.ToString());
                throw new Exception("A Think Time threshold value was exceeded.");
            }
                
            //update think time if greater than MaxThinkTime
            if (e.Request.ThinkTime > MaxThinkTime)
                e.Request.ThinkTime = MaxThinkTime;
 
            //update think time if less than MinThinkTime
            if (e.Request.ThinkTime < MinThinkTime)
                e.Request.ThinkTime = MinThinkTime;
 
            if (OutputComments)
                e.WebTest.AddCommentToResult("SetMaxMinThinkTime value = " + e.Request.ThinkTime.ToString());
        }
 
        [Description("Maximum Think Time value for any request")]
        [DefaultValue(60)]
        public int MaxThinkTime { get; set; }
 
        [Description("Minimum Think Time value for any request")]
        [DefaultValue(0)]
        public int MinThinkTime { get; set; }
 
        [Description("Enable output comments added to the test results view. Default is false")]
        [DefaultValue(false)]
        public bool OutputComments { get; set; }
 
        [Description("Enable or Disable the plugin execution. Default is Enabled (true)")]
        [DefaultValue(true)]
        public bool Enabled { get; set; }
 
        [Description("Throw exception when encountering Min or Max values that exceed threshold value. Default is false")]
        [DefaultValue(false)]
        public bool ThrowExceptionIfThresholdExceeded { get; set; }
 
 
    }