Updated settings for k8s / SF to enable Load testing mode

Updated load tests
This commit is contained in:
Ramón Tomás 2017-10-26 19:18:45 +02:00
parent 2ad61d9057
commit 7861d5df87
21 changed files with 56 additions and 15 deletions
ServiceFabric
Linux
eShopOnServiceFabric/ApplicationPackageRoot
BasketApiPkg
CatalogApiPkg
LocationsApiPkg
MarketingApiPkg
OrderingApiPkg
PaymentApiPkg
eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg
Windows
eShopOnServiceFabric/ApplicationPackageRoot
BasketApiPkg
LocationsApiPkg
MarketingApiPkg
OrderingApiPkg
eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg
k8s
test/Services/LoadTest

@ -29,6 +29,7 @@
<EnvironmentVariable Name="AzureServiceBusEnabled" Value="False"/>
<EnvironmentVariable Name="ApplicationInsights__InstrumentationKey" Value=""/>
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
<EnvironmentVariable Name="UseLoadTest" Value="True"/>
</EnvironmentVariables>
</CodePackage>
@ -41,7 +42,7 @@
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Name="BasketApiTypeEndpoint" Port="5103" UriScheme="http" PathSuffix="eShopOnServiceFabric/BasketApi"/>
<Endpoint Name="BasketApiTypeEndpoint" Port="5103" UriScheme="http"/>
</Endpoints>
</Resources>
</ServiceManifest>

@ -44,7 +44,7 @@
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Name="CatalogApiTypeEndpoint" Port="5101" UriScheme="http" PathSuffix="eShopOnServiceFabric/CatalogApi"/>
<Endpoint Name="CatalogApiTypeEndpoint" Port="5101" UriScheme="http"/>
</Endpoints>
</Resources>
</ServiceManifest>

@ -30,6 +30,7 @@
<EnvironmentVariable Name="AzureServiceBusEnabled" Value="False"/>
<EnvironmentVariable Name="ApplicationInsights__InstrumentationKey" Value=""/>
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
<EnvironmentVariable Name="UseLoadTest" Value="True"/>
</EnvironmentVariables>
</CodePackage>
@ -42,7 +43,7 @@
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Name="LocationsApiTypeEndpoint" Port="5109" PathSuffix="eShopOnServiceFabric/LocationsApi"/>
<Endpoint Name="LocationsApiTypeEndpoint" Port="5109"/>
</Endpoints>
</Resources>
</ServiceManifest>

@ -36,6 +36,7 @@
<EnvironmentVariable Name="identityUrl" Value="http://identityapi.eshoponservicefabric:5105"/>
<EnvironmentVariable Name="ApplicationInsights__InstrumentationKey" Value=""/>
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
<EnvironmentVariable Name="UseLoadTest" Value="True"/>
</EnvironmentVariables>
</CodePackage>
@ -48,7 +49,7 @@
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Name="MarketingApiTypeEndpoint" Port="5110" PathSuffix="eShopOnServiceFabric/MarketingApi"/>
<Endpoint Name="MarketingApiTypeEndpoint" Port="5110"/>
</Endpoints>
</Resources>
</ServiceManifest>

@ -32,6 +32,7 @@
<EnvironmentVariable Name="CheckUpdateTime" Value="30000"/>
<EnvironmentVariable Name="ApplicationInsights__InstrumentationKey" Value=""/>
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
<EnvironmentVariable Name="UseLoadTest" Value="True"/>
</EnvironmentVariables>
</CodePackage>
@ -44,7 +45,7 @@
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Name="OrderingApiTypeEndpoint" Port="5102" UriScheme="http" PathSuffix="eShopOnServiceFabric/OrderingApi"/>
<Endpoint Name="OrderingApiTypeEndpoint" Port="5102" UriScheme="http"/>
</Endpoints>
</Resources>
</ServiceManifest>

@ -38,7 +38,7 @@
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Name="PaymentApiTypeEndpoint" Port="5108" PathSuffix="eShopOnServiceFabric/PaymentApi"/>
<Endpoint Name="PaymentApiTypeEndpoint" Port="5108"/>
</Endpoints>
</Resources>
</ServiceManifest>

@ -36,6 +36,7 @@
<EnvironmentVariable Name="MarketingUrlHC" Value="http://marketingapi.eshoponservicefabric:5110/hc"/>
<EnvironmentVariable Name="ApplicationInsights__InstrumentationKey" Value=""/>
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
<EnvironmentVariable Name="UseLoadTest" Value="True"/>
</EnvironmentVariables>
</CodePackage>

@ -31,6 +31,7 @@
<EnvironmentVariable Name="EventBusPassword" Value="password"/>
<EnvironmentVariable Name="ApplicationInsights:InstrumentationKey" Value=""/>
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
<EnvironmentVariable Name="UseLoadTest" Value="False"/>
</EnvironmentVariables>
</CodePackage>

@ -32,6 +32,7 @@
<EnvironmentVariable Name="EventBusPassword" Value="password"/>
<EnvironmentVariable Name="ApplicationInsights:InstrumentationKey" Value=""/>
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
<EnvironmentVariable Name="UseLoadTest" Value="False"/>
</EnvironmentVariables>
</CodePackage>

@ -38,6 +38,7 @@
<EnvironmentVariable Name="identityUrl" Value="http://identityapi.eshoponservicefabric:5105"/>
<EnvironmentVariable Name="ApplicationInsights:InstrumentationKey" Value=""/>
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
<EnvironmentVariable Name="UseLoadTest" Value="False"/>
</EnvironmentVariables>
</CodePackage>

@ -34,6 +34,7 @@
<EnvironmentVariable Name="EventBusPassword" Value="password"/>
<EnvironmentVariable Name="ApplicationInsights:InstrumentationKey" Value=""/>
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
<EnvironmentVariable Name="UseLoadTest" Value="False"/>
</EnvironmentVariables>
</CodePackage>

@ -36,6 +36,7 @@
<EnvironmentVariable Name="MarketingUrlHC" Value="http://marketingapi.eshoponservicefabric:5110/hc"/>
<EnvironmentVariable Name="ApplicationInsights:InstrumentationKey" Value=""/>
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
<EnvironmentVariable Name="UseLoadTest" Value="False"/>
</EnvironmentVariables>
</CodePackage>

@ -22,6 +22,7 @@ data:
OrderingSqlDb: Server=sql-data;Initial Catalog=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word;
PaymentBus: rabbitmq
UseAzureServiceBus: "False"
EnableLoadTest: "False"
keystore: keystore-data
GracePeriodManager_GracePeriodTime: "1"
GracePeriodManager_CheckUpdateTime: "15000"

@ -42,6 +42,11 @@ spec:
configMapKeyRef:
name: urls
key: IdentityUrl
- name: UseLoadTest
valueFrom:
configMapKeyRef:
name: externalcfg
key: EnableLoadTest
- name: OrchestratorType
value: 'K8S'
ports:
@ -269,6 +274,11 @@ spec:
configMapKeyRef:
name: externalcfg
key: Instrumentation_Key
- name: UseLoadTest
valueFrom:
configMapKeyRef:
name: externalcfg
key: EnableLoadTest
- name: OrchestratorType
value: 'K8S'
ports:
@ -344,6 +354,11 @@ spec:
configMapKeyRef:
name: externalcfg
key: Instrumentation_Key
- name: UseLoadTest
valueFrom:
configMapKeyRef:
name: externalcfg
key: EnableLoadTest
- name: OrchestratorType
value: 'K8S'
ports:
@ -429,6 +444,11 @@ spec:
configMapKeyRef:
name: externalcfg
key: Instrumentation_Key
- name: UseLoadTest
valueFrom:
configMapKeyRef:
name: externalcfg
key: EnableLoadTest
- name: OrchestratorType
value: 'K8S'
ports:
@ -601,6 +621,11 @@ spec:
configMapKeyRef:
name: externalcfg
key: Instrumentation_Key
- name: UseLoadTest
valueFrom:
configMapKeyRef:
name: externalcfg
key: EnableLoadTest
- name: OrchestratorType
value: 'K8S'
ports:

@ -3,7 +3,7 @@
<Scenarios>
<Scenario Name="Basket" DelayBetweenIterations="0" PercentNewUsers="0" IPSwitching="false" TestMixType="PercentageOfTestsStarted" ApplyDistributionToPacingDelay="true" MaxTestIterations="0" DisableDuringWarmup="false" DelayStartTime="0" AllowedAgents="">
<ThinkProfile Value="0.2" Pattern="NormalDistribution" />
<LoadProfile Pattern="Step" InitialUsers="1" MaxUsers="50" StepUsers="10" StepDuration="10" StepRampTime="10" />
<LoadProfile Pattern="Step" InitialUsers="1" MaxUsers="50" StepUsers="2" StepDuration="10" StepRampTime="10" />
<TestMix>
<TestProfile Name="GetBasket" Path="basket.api\getbasket.webtest" Id="59f41ad4-349f-4383-8858-0005321e3a68" Percentage="59" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestProfile Name="AddBasket" Path="basket.api\addbasket.webtest" Id="b50574ad-a2bf-4ecd-923d-bf007eb02d90" Percentage="32" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

@ -3,7 +3,7 @@
<Scenarios>
<Scenario Name="Campaigns" DelayBetweenIterations="0" PercentNewUsers="0" IPSwitching="false" TestMixType="PercentageOfTestsStarted" ApplyDistributionToPacingDelay="true" MaxTestIterations="0" DisableDuringWarmup="false" DelayStartTime="0" AllowedAgents="">
<ThinkProfile Value="0.2" Pattern="NormalDistribution" />
<LoadProfile Pattern="Step" InitialUsers="1" MaxUsers="50" StepUsers="10" StepDuration="10" StepRampTime="10" />
<LoadProfile Pattern="Step" InitialUsers="1" MaxUsers="50" StepUsers="2" StepDuration="10" StepRampTime="10" />
<TestMix>
<TestProfile Name="GetAllCampaigns" Path="marketing.api\getallcampaigns.webtest" Id="19336ef5-34ae-4bf8-90df-c8d794558f71" Percentage="34" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestProfile Name="GetUserCampaigns" Path="marketing.api\getusercampaigns.webtest" Id="735da61b-a88b-4f23-9d16-c232a540471a" Percentage="33" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
@ -45,7 +45,7 @@
</BrowserMix>
<NetworkMix>
<NetworkProfile Percentage="100">
<Network Name="LAN" BandwidthInKbps="0" NetworkProfileConfigurationXml="" />
<Network Name="LAN" BandwidthInKbps="0" NetworkProfileConfigurationXml="&lt;Emulation&gt;&lt;VirtualChannel name=&quot;defaultChannel&quot;&gt;&lt;FilterList/&gt;&lt;VirtualLink instances=&quot;1&quot; name=&quot;defaultLink&quot;&gt;&lt;LinkRule dir=&quot;upstream&quot;&gt;&lt;Bandwidth&gt;&lt;Speed unit=&quot;kbps&quot;&gt;0&lt;/Speed&gt;&lt;/Bandwidth&gt;&lt;/LinkRule&gt;&lt;LinkRule dir=&quot;downstream&quot;&gt;&lt;Bandwidth&gt;&lt;Speed unit=&quot;kbps&quot;&gt;0&lt;/Speed&gt;&lt;/Bandwidth&gt;&lt;/LinkRule&gt;&lt;/VirtualLink&gt;&lt;/VirtualChannel&gt;&lt;/Emulation&gt;" />
</NetworkProfile>
</NetworkMix>
</Scenario>

@ -3,7 +3,7 @@
<Scenarios>
<Scenario Name="Catalog" DelayBetweenIterations="0" PercentNewUsers="0" IPSwitching="false" TestMixType="PercentageOfTestsStarted" ApplyDistributionToPacingDelay="true" MaxTestIterations="0" DisableDuringWarmup="false" DelayStartTime="0" AllowedAgents="">
<ThinkProfile Value="0.2" Pattern="NormalDistribution" />
<LoadProfile Pattern="Step" InitialUsers="1" MaxUsers="50" StepUsers="10" StepDuration="10" StepRampTime="10" />
<LoadProfile Pattern="Step" InitialUsers="1" MaxUsers="50" StepUsers="2" StepDuration="10" StepRampTime="10" />
<TestMix>
<TestProfile Name="GetCatalogBrands" Path="catalog.api\getcatalogbrands.webtest" Id="df9fded6-bc66-4bc8-b812-49b459175ef3" Percentage="9" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestProfile Name="GetCatalogTypes" Path="catalog.api\getcatalogtypes.webtest" Id="7df20b29-d5c3-447b-b73d-95c63e9c4061" Percentage="9" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

@ -3,7 +3,7 @@
<Scenarios>
<Scenario Name="Locations" DelayBetweenIterations="0" PercentNewUsers="0" IPSwitching="false" TestMixType="PercentageOfTestsStarted" ApplyDistributionToPacingDelay="true" MaxTestIterations="0" DisableDuringWarmup="false" DelayStartTime="0" AllowedAgents="">
<ThinkProfile Value="0.2" Pattern="NormalDistribution" />
<LoadProfile Pattern="Step" InitialUsers="1" MaxUsers="2" StepUsers="10" StepDuration="10" StepRampTime="0" />
<LoadProfile Pattern="Step" InitialUsers="1" MaxUsers="50" StepUsers="2" StepDuration="10" StepRampTime="10" />
<TestMix>
<TestProfile Name="CreateOrUpdateUserLocation" Path="location.api\createorupdateuserlocation.webtest" Id="06bd2768-7d01-40bf-8551-722afe4f3ed8" Percentage="46" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestProfile Name="GetAllLocations" Path="location.api\getalllocations.webtest" Id="71241906-9e8a-4f2b-bdd7-20fa24cc7297" Percentage="11" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

@ -3,7 +3,7 @@
<Scenarios>
<Scenario Name="OrderProductsLoadTest" DelayBetweenIterations="0" PercentNewUsers="0" IPSwitching="false" TestMixType="PercentageOfTestsStarted" ApplyDistributionToPacingDelay="true" MaxTestIterations="0" DisableDuringWarmup="false" DelayStartTime="0" AllowedAgents="">
<ThinkProfile Value="0.2" Pattern="NormalDistribution" />
<LoadProfile Pattern="Step" InitialUsers="1" MaxUsers="50" StepUsers="10" StepDuration="10" StepRampTime="10" />
<LoadProfile Pattern="Step" InitialUsers="1" MaxUsers="50" StepUsers="2" StepDuration="10" StepRampTime="10" />
<TestMix>
<TestProfile Name="GetItems" Path="catalog.api\getitems.webtest" Id="e527de7e-beff-4824-af52-dda763fd5e6c" Percentage="19" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestProfile Name="GetCatalogTypes" Path="catalog.api\getcatalogtypes.webtest" Id="7df20b29-d5c3-447b-b73d-95c63e9c4061" Percentage="15" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
@ -49,6 +49,11 @@
</Browser>
</BrowserProfile>
</BrowserMix>
<NetworkMix>
<NetworkProfile Percentage="100">
<Network Name="LAN" BandwidthInKbps="0" NetworkProfileConfigurationXml="&lt;Emulation&gt;&lt;VirtualChannel name=&quot;defaultChannel&quot;&gt;&lt;FilterList/&gt;&lt;VirtualLink instances=&quot;1&quot; name=&quot;defaultLink&quot;&gt;&lt;LinkRule dir=&quot;upstream&quot;&gt;&lt;Bandwidth&gt;&lt;Speed unit=&quot;kbps&quot;&gt;0&lt;/Speed&gt;&lt;/Bandwidth&gt;&lt;/LinkRule&gt;&lt;LinkRule dir=&quot;downstream&quot;&gt;&lt;Bandwidth&gt;&lt;Speed unit=&quot;kbps&quot;&gt;0&lt;/Speed&gt;&lt;/Bandwidth&gt;&lt;/LinkRule&gt;&lt;/VirtualLink&gt;&lt;/VirtualChannel&gt;&lt;/Emulation&gt;" />
</NetworkProfile>
</NetworkMix>
</Scenario>
</Scenarios>
<CounterSets>

@ -25,7 +25,7 @@
<FormPostParameter Name="description" Value=".NET Black &amp; White Mug" RecordedValue=".NET Black &amp; White Mug" CorrelationBinding="" UrlEncode="True" />
<FormPostParameter Name="id" Value="2" RecordedValue="2" CorrelationBinding="" UrlEncode="True" />
<FormPostParameter Name="name" Value=".NET Black &amp; White Mug" RecordedValue=".NET Black &amp; White Mug" CorrelationBinding="" UrlEncode="True" />
<FormPostParameter Name="pictureUri" Value="http://192.168.1.64:5101/api/v1/pic/2" RecordedValue="http://192.168.1.64:5101/api/v1/pic/2" CorrelationBinding="" UrlEncode="True" />
<FormPostParameter Name="pictureUri" Value="{{LocalTestSettings.CatalogApiServer.url}}/api/v1/catalog/items/2/pic/" RecordedValue="{{LocalTestSettings.CatalogApiServer.url}}/api/v1/catalog/items/2/pic/" CorrelationBinding="" UrlEncode="True" />
<FormPostParameter Name="price" Value="8.5" RecordedValue="8.5" CorrelationBinding="" UrlEncode="True" />
</FormPostHttpBody>
</Request>
@ -37,6 +37,7 @@
<Tables>
<DataSourceTable Name="MvcWebServer" SelectColumns="SelectAllColumns" AccessMethod="Sequential" />
<DataSourceTable Name="IdentityApiServer" SelectColumns="SelectAllColumns" AccessMethod="Sequential" />
<DataSourceTable Name="CatalogApiServer" SelectColumns="SelectAllColumns" AccessMethod="Sequential" />
<DataSourceTable Name="User" SelectColumns="SelectAllColumns" AccessMethod="Sequential" />
</Tables>
</DataSource>
@ -45,7 +46,6 @@
<ContextParameter Name="i" Value="0" />
</ContextParameters>
<ValidationRules>
<ValidationRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.ValidateResponseUrl, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="Response URL" Description="Validates that the response URL after redirects are followed is the same as the recorded response URL. QueryString parameters are ignored." Level="Low" ExectuionOrder="BeforeDependents" />
<ValidationRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.ValidationRuleResponseTimeGoal, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="Response Time Goal" Description="Validates that the response time for the request is less than or equal to the response time goal as specified on the request. Response time goals of zero will be ignored." Level="Low" ExectuionOrder="AfterDependents">
<RuleParameters>
<RuleParameter Name="Tolerance" Value="0" />

@ -165,6 +165,7 @@
<FormPostParameter Name="action" Value="[ Place Order ]" RecordedValue="[ Place Order ]" CorrelationBinding="{{FormPostParam9.action}}" UrlEncode="True" />
<FormPostParameter Name="ZipCode" Value="98052" RecordedValue="98052" CorrelationBinding="" UrlEncode="True" />
<FormPostParameter Name="RequestId" Value="{{GenGuid}} " RecordedValue="f58b9345-ea25-4125-a8bf-b0992233af6c" CorrelationBinding="" UrlEncode="True" />
<FormPostParameter Name="CardTypeId" Value="1" RecordedValue="" CorrelationBinding="" UrlEncode="True" />
</FormPostHttpBody>
</Request>
<Request Method="GET" Guid="60e4b7e1-95fc-43a0-932d-d1d1a311b49f" Version="1.1" Url="{{LocalTestSettings.MvcWebServer.url}}/Order" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="" IgnoreHttpStatusCode="False">
@ -186,7 +187,6 @@
</DataSource>
</DataSources>
<ValidationRules>
<ValidationRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.ValidateResponseUrl, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="Response URL" Description="Validates that the response URL after redirects are followed is the same as the recorded response URL. QueryString parameters are ignored." Level="Low" ExectuionOrder="BeforeDependents" />
<ValidationRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.ValidationRuleResponseTimeGoal, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="Response Time Goal" Description="Validates that the response time for the request is less than or equal to the response time goal as specified on the request. Response time goals of zero will be ignored." Level="Low" ExectuionOrder="AfterDependents">
<RuleParameters>
<RuleParameter Name="Tolerance" Value="0" />