0

Rally .NET REST を使用して、API 呼び出しがデータを返すのにかかる時間を測定したいと考えています。API には、応答時間を含む要求および応答データを出力する方法がありますか?

4

1 に答える 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 に答える