Files
sqltoolsservice/test/Microsoft.SqlTools.ServiceLayer.TestDriver/Utility/TestTimer.cs
2016-11-11 10:07:55 -08:00

80 lines
2.4 KiB
C#

//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using System;
using System.Globalization;
using System.IO;
namespace Microsoft.SqlTools.ServiceLayer.TestDriver.Utility
{
/// <summary>
/// Timer to calculate the test run time
/// </summary>
public class TestTimer
{
private static string resultFolder = InitResultFolder();
private static string InitResultFolder()
{
string resultFodler = Environment.GetEnvironmentVariable("ResultFolder");
if (string.IsNullOrEmpty(resultFodler))
{
string assemblyLocation = System.Reflection.Assembly.GetEntryAssembly().Location;
resultFodler = Path.GetDirectoryName(assemblyLocation);
}
return resultFodler;
}
public TestTimer()
{
Start();
}
public void Start()
{
StartDateTime = DateTime.UtcNow;
}
public void End()
{
EndDateTime = DateTime.UtcNow;
}
public void EndAndPrint(string testName)
{
End();
var currentColor = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Test Name: {0} Run time in milliSeconds: {1}", testName, TotalMilliSeconds));
Console.ForegroundColor = currentColor;
string resultContent = Newtonsoft.Json.JsonConvert.SerializeObject(new TestResult { ElapsedTime = TotalMilliSeconds });
string fileName = testName + ".json";
string resultFilePath = string.IsNullOrEmpty(resultFolder) ? fileName : Path.Combine(resultFolder, fileName);
File.WriteAllText(resultFilePath, resultContent);
Console.WriteLine("Result file: " + resultFilePath);
}
public double TotalMilliSeconds
{
get
{
return (EndDateTime - StartDateTime).TotalMilliseconds;
}
}
public double TotalMilliSecondsUntilNow
{
get
{
return (DateTime.UtcNow - StartDateTime).TotalMilliseconds;
}
}
public DateTime StartDateTime { get; private set; }
public DateTime EndDateTime { get; private set; }
}
}