Beispiel #1
0
        /// <summary>
        /// Gets the response time (in millisec) for the engine to process the given file.
        /// </summary>
        /// <param name="filePath">The file you are testing</param>
        /// <returns>measurement in milliseconds</returns>
        internal static long GetResponseTimeForFile(IContentScanner scanner, string filePath, ProcessLevel level, RunAt runAt)
        {
            using (var cs = new ContractSerialization())
            {
                Request request = cs.LoadRequest(filePath);

                Response response = null;

                TimeSpan timeSpan = Measure(delegate()
                                                {
                                                    response = scanner.Scan(request, null, level, runAt);
                                                });

                AssertValidResponse(response); //Essential to validate, but it should not be part of what is timed.

                return Convert.ToInt64(timeSpan.TotalMilliseconds);
            }
        }
Beispiel #2
0
        internal static ResultStat[] MeasureFolder(IContentScanner scanner, string basePath, ProcessLevel scanLevel, RunAt runAt)
        {
            FileInfo[] requestFiles = new DirectoryInfo(basePath).GetFiles("*.xml", SearchOption.AllDirectories);

            Assert.IsTrue(requestFiles.Length > 0);

            List<ResultStat> resultStats = new List<ResultStat>();

            //do it twice, take the second result.
            for (int i = 0; i < 2; ++i)
            {
                long totalBytes = 0;
                List<long> results = new List<long>();

                foreach (FileInfo requestFile in requestFiles)
                {
                    long responseTime = PerfTestHelp.GetResponseTimeForFile(scanner, requestFile.FullName, scanLevel, runAt);

                    results.Add(responseTime);

                    totalBytes += PerfTestHelp.GetRequestSizeInBytes(requestFile);
                }

                //JIT paranoia.
                //For consistency, disregard the first iteration of every test.
                if (i > 0)
                {
                    long totalMillisec = 0;
                    results.ForEach(delegate(long responseTime) { totalMillisec += responseTime; });

                    resultStats.Add(new ResultStat(totalMillisec, requestFiles.Length, totalBytes));
                }
            }

            return resultStats.ToArray();
        }