summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.Test/OpenId/Provider/PerformanceTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/DotNetOpenAuth.Test/OpenId/Provider/PerformanceTests.cs')
-rw-r--r--src/DotNetOpenAuth.Test/OpenId/Provider/PerformanceTests.cs83
1 files changed, 28 insertions, 55 deletions
diff --git a/src/DotNetOpenAuth.Test/OpenId/Provider/PerformanceTests.cs b/src/DotNetOpenAuth.Test/OpenId/Provider/PerformanceTests.cs
index 7984b58..4530982 100644
--- a/src/DotNetOpenAuth.Test/OpenId/Provider/PerformanceTests.cs
+++ b/src/DotNetOpenAuth.Test/OpenId/Provider/PerformanceTests.cs
@@ -18,6 +18,7 @@ namespace DotNetOpenAuth.Test.OpenId.Provider {
using DotNetOpenAuth.OpenId.ChannelElements;
using DotNetOpenAuth.OpenId.Messages;
using DotNetOpenAuth.OpenId.Provider;
+ using DotNetOpenAuth.Test.Performance;
using NUnit.Framework;
[TestFixture, Category("Performance")]
@@ -29,73 +30,50 @@ namespace DotNetOpenAuth.Test.OpenId.Provider {
[SetUp]
public override void SetUp() {
base.SetUp();
- SuspendLogging();
this.provider = CreateProvider();
}
- [TearDown]
- public override void Cleanup() {
- ResumeLogging();
- base.Cleanup();
- }
-
[TestCase]
public void AssociateDH() {
var associateRequest = this.CreateAssociateRequest(OPUri);
- Stopwatch timer = new Stopwatch();
- timer.Start();
- int iterations;
- for (iterations = 0; timer.ElapsedMilliseconds < TestRunTime.TotalMilliseconds; iterations++) {
- IRequest request = this.provider.GetRequest(associateRequest);
- var response = this.provider.PrepareResponse(request);
- Assert.IsInstanceOf<AssociateSuccessfulResponse>(response.OriginalMessage);
- }
- timer.Stop();
- double executionsPerSecond = GetExecutionsPerSecond(iterations, timer);
- TestUtilities.TestLogger.InfoFormat("Created {0} associations in {1}, or {2} per second.", iterations, timer.Elapsed, executionsPerSecond);
- Assert.IsTrue(executionsPerSecond >= 2, "Too slow ({0} >= 2 executions per second required.)", executionsPerSecond);
+ MeasurePerformance(
+ () => {
+ IRequest request = this.provider.GetRequest(associateRequest);
+ var response = this.provider.PrepareResponse(request);
+ Assert.IsInstanceOf<AssociateSuccessfulResponse>(response.OriginalMessage);
+ },
+ maximumAllowedUnitTime: 3.5e6f,
+ iterations: 1);
}
[TestCase]
public void AssociateClearText() {
var associateRequest = this.CreateAssociateRequest(OPUriSsl); // SSL will cause a plaintext association
- Stopwatch timer = new Stopwatch();
- timer.Start();
- int iterations;
- for (iterations = 0; timer.ElapsedMilliseconds < TestRunTime.TotalMilliseconds; iterations++) {
- IRequest request = this.provider.GetRequest(associateRequest);
- var response = this.provider.PrepareResponse(request);
- Assert.IsInstanceOf<AssociateSuccessfulResponse>(response.OriginalMessage);
- }
- timer.Stop();
- double executionsPerSecond = GetExecutionsPerSecond(iterations, timer);
- TestUtilities.TestLogger.InfoFormat("Created {0} associations in {1}, or {2} per second.", iterations, timer.Elapsed, executionsPerSecond);
- Assert.IsTrue(executionsPerSecond > 1000, "Too slow ({0} > 1000 executions per second required.)", executionsPerSecond);
+ MeasurePerformance(
+ () => {
+ IRequest request = this.provider.GetRequest(associateRequest);
+ var response = this.provider.PrepareResponse(request);
+ Assert.IsInstanceOf<AssociateSuccessfulResponse>(response.OriginalMessage);
+ },
+ maximumAllowedUnitTime: 1.5e4f,
+ iterations: 1000);
}
[TestCase]
public void CheckIdSharedHmacSha1Association() {
Protocol protocol = Protocol.Default;
string assocType = protocol.Args.SignatureAlgorithm.HMAC_SHA1;
- double executionsPerSecond = this.ParameterizedCheckIdTest(protocol, assocType);
- TestUtilities.TestLogger.InfoFormat("{0} executions per second.", executionsPerSecond);
- Assert.IsTrue(executionsPerSecond > 500, "Too slow ({0} > 500 executions per second required.)", executionsPerSecond);
+ this.ParameterizedCheckIdTest(protocol, assocType);
}
[TestCase]
public void CheckIdSharedHmacSha256Association() {
Protocol protocol = Protocol.Default;
string assocType = protocol.Args.SignatureAlgorithm.HMAC_SHA256;
- double executionsPerSecond = this.ParameterizedCheckIdTest(protocol, assocType);
- TestUtilities.TestLogger.InfoFormat("{0} executions per second.", executionsPerSecond);
- Assert.IsTrue(executionsPerSecond > 400, "Too slow ({0} > 400 executions per second required.)", executionsPerSecond);
+ this.ParameterizedCheckIdTest(protocol, assocType);
}
- private static double GetExecutionsPerSecond(int iterations, Stopwatch timer) {
- return (double)iterations / (timer.ElapsedMilliseconds / 1000);
- }
-
- private double ParameterizedCheckIdTest(Protocol protocol, string assocType) {
+ private void ParameterizedCheckIdTest(Protocol protocol, string assocType) {
Association assoc = HmacShaAssociation.Create(
protocol,
assocType,
@@ -103,19 +81,14 @@ namespace DotNetOpenAuth.Test.OpenId.Provider {
this.provider.SecuritySettings);
this.provider.AssociationStore.StoreAssociation(AssociationRelyingPartyType.Smart, assoc);
var checkidRequest = this.CreateCheckIdRequest(true);
- Stopwatch timer = new Stopwatch();
- timer.Start();
- int iterations;
- for (iterations = 0; timer.ElapsedMilliseconds < TestRunTime.TotalMilliseconds; iterations++) {
- var request = (IAuthenticationRequest)this.provider.GetRequest(checkidRequest);
- request.IsAuthenticated = true;
- var response = this.provider.PrepareResponse(request);
- Assert.IsInstanceOf<PositiveAssertionResponse>(response.OriginalMessage);
- }
- timer.Stop();
- double executionsPerSecond = GetExecutionsPerSecond(iterations, timer);
- TestUtilities.TestLogger.InfoFormat("Responded to {0} checkid messages in {1}; or {2} authentications per second.", iterations, timer.Elapsed, executionsPerSecond);
- return executionsPerSecond;
+ MeasurePerformance(
+ () => {
+ var request = (IAuthenticationRequest)this.provider.GetRequest(checkidRequest);
+ request.IsAuthenticated = true;
+ var response = this.provider.PrepareResponse(request);
+ Assert.IsInstanceOf<PositiveAssertionResponse>(response.OriginalMessage);
+ },
+ maximumAllowedUnitTime: 6.8e4f);
}
private HttpRequestInfo CreateAssociateRequest(Uri opEndpoint) {