Example #1
0
        public override string ToString()
        {
            string result;

            using (var stream = new MemoryStream())
            {
                // Create an XMLWriter object
                var xmlWriter = new XmlTextWriter(stream, System.Text.Encoding.UTF8)
                {
                    Formatting = Formatting.Indented
                };

                WriteHTTPSample(xmlWriter, MyStep, FiddlerSession, InfoPage, GetFullURL(InfoPage), Validations, ParametersToExtract, beanShell: BeanShell, gxApp: Genexus);

                // if there aren't follow redirects, then add validations to the primary request
                if (FollowRedirects.Count > 0)
                {
                    // Adding follow Redirects
                    // the last request must have the validations
                    var lastRequestForValidation = GetLastRequestForValidation(FollowRedirects);

                    // Add JMeter GenericController to group the requests
                    JMeterWrapper.WriteStartElement(xmlWriter, "GenericController", "LogicControllerGui", "GenericController", "Follow Redirects", "true");
                    xmlWriter.WriteEndElement();

                    xmlWriter.WriteStartElement("hashTree");

                    foreach (var followRedirect in FollowRedirects)
                    {
                        if (followRedirect.FiddlerSession == lastRequestForValidation)
                        {
                            WriteHTTPSample(xmlWriter,
                                            MyStep,
                                            followRedirect.FiddlerSession,
                                            followRedirect.InfoPage,
                                            followRedirect.GetFullURL(followRedirect.InfoPage),
                                            followRedirect.Validations,
                                            followRedirect.ParametersToExtract, BeanShell);
                        }
                        // Disable the follow redirects by response code
                        // Change :: JMeter encodes the parameters of the redirect URL, producing bad bahaviour
                        else
                        {
                            WriteHTTPSample(xmlWriter,
                                            MyStep,
                                            followRedirect.FiddlerSession,
                                            followRedirect.InfoPage,
                                            followRedirect.GetFullURL(followRedirect.InfoPage),
                                            followRedirect.Validations,
                                            followRedirect.ParametersToExtract, BeanShell);
                        }
                    }

                    // </hashTree>
                    xmlWriter.WriteEndElement();
                }

                //// Adding secondary Requests
                if (Secondary)
                {
                    if (SecondaryRequests.Count > 0)
                    {
                        JMeterWrapper.WriteStartElement(xmlWriter, "GenericController", "LogicControllerGui", "GenericController", "Secondary Requests", "true");
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("hashTree");

                        // if controller
                        JMeterWrapper.WriteStartElement(xmlWriter, "IfController", "IfControllerPanel", "IfController", "If Controller", "true");
                        JMeterWrapper.WriteElementWithTextChildren(xmlWriter, "stringProp", "IfController.condition", "${" + HTTPConstants.VariableNameDebug + "} == 0");
                        JMeterWrapper.WriteElementWithTextChildren(xmlWriter, "boolProp", "IfController.evaluateAll", "false");
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("hashTree");

                        // write response assertion to skip HTTP response code validation
                        JMeterWrapper.WriteResponseAssertionSkipHTTPResponse(xmlWriter);

                        foreach (var secondaryRequest in SecondaryRequests)
                        {
                            WriteHTTPSample(xmlWriter, MyStep, secondaryRequest, null, secondaryRequest.fullUrl);
                        }

                        // </hashTree> 'if' controller
                        xmlWriter.WriteEndElement();

                        // </hashTree> 'generic' controller
                        xmlWriter.WriteEndElement();
                    }
                }

                xmlWriter.Flush();

                stream.Position = 0;
                var streamReader = new StreamReader(stream);
                result = streamReader.ReadToEnd();
            }

            return(result);
        }