Rally .NET REST を使用して、API 呼び出しがデータを返すのにかかる時間を測定したいと考えています。API には、応答時間を含む要求および応答データを出力する方法がありますか?
1 に答える
0
時間を測定する簡単な方法は、呼び出しを行う前に DateTime.Now 値を保存し、呼び出し後に DateTime.Now を保存して、2 番目の値から最初の値を差し引いて出力することです。
DateTime startTime = DateTime.Now;
storyRequest.Query = new Query("FormattedID", Query.Operator.Equals, "US123");
QueryResult queryStoryResults = restApi.Query(storyRequest);
Console.WriteLine(DateTime.Now.Subtract(startTime).ToString());
リクエストとレスポンスのデータを印刷することもできます。呼び出しが行われると、呼び出しデータが収集されますが、それを拡張してキャッチするためのリスナーが必要ですSystem.Diagnostics.TraceListener
。
以下は、時間が小数秒で返される完全なコード例です: ss.fffffff。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Rally.RestApi;
using Rally.RestApi.Response;
using System.Diagnostics;
namespace RESTexample_FindStories
{
class Program
{
class MyListener : TraceListener
{
public MyListener(): base(){}
public override void TraceEvent(TraceEventCache cache, String source, TraceEventType eventType, Int32 eventId, String msg)
{
TraceEvent(cache, source, eventType, eventId, msg, new Object[] { });
}
public override void TraceEvent(TraceEventCache cache, String source, TraceEventType eventType, Int32 eventId, String msg, Object[] msgParams)
{
writeToEventLog(msg, msgParams, eventType);
}
public override void Write(string message)
{
WriteLine(message);
}
public override void WriteLine(string message)
{
writeToEventLog(message, new Object[] { }, TraceEventType.Information);
}
private void writeToEventLog(String msg, Object[] msgParams, TraceEventType eventType)
{
System.Console.WriteLine(msg, msgParams);
}
}
static void Main(string[] args)
{
Trace.Listeners.Add(new MyListener());
RallyRestApi restApi;
restApi = new RallyRestApi("nmusaelian@rallydev.com", "Rally2013!", "https://rally1.rallydev.com", "v2.0");
String projectRef = "/project/2222";
Request storyRequest = new Request("hierarchicalrequirement");
storyRequest.Project = projectRef;
storyRequest.Fetch = new List<string>()
{
"FormattedID"
};
DateTime startTime = DateTime.Now;
storyRequest.Query = new Query("FormattedID", Query.Operator.Equals, "US123");
QueryResult queryStoryResults = restApi.Query(storyRequest);
Console.WriteLine(DateTime.Now.Subtract(startTime).ToString());
foreach (var s in queryStoryResults.Results)
{
Console.WriteLine("FormattedID: " + s["FormattedID"]);
}
}
}
}
于 2013-08-28T20:43:52.323 に答える