62 lines
1.9 KiB
C#
62 lines
1.9 KiB
C#
using System;
|
|
using System.IO;
|
|
using UnityEditor.TestTools.TestRunner.Api;
|
|
using UnityEngine;
|
|
|
|
namespace Unity.PerformanceTesting.Editor
|
|
{
|
|
[Serializable]
|
|
class CmdLineResultsSavingCallbacks : ScriptableObject, ICallbacks
|
|
{
|
|
[SerializeField]
|
|
string resultsLocation;
|
|
|
|
void ICallbacks.RunStarted(ITestAdaptor testsToRun)
|
|
{
|
|
PerformanceTest.Active = null;
|
|
}
|
|
|
|
void ICallbacks.RunFinished(ITestResultAdaptor result)
|
|
{
|
|
PlayerCallbacks.Saved = false;
|
|
|
|
try
|
|
{
|
|
var performanceTestRun = TestResultsParser.GetPerformanceTestRunData(result);
|
|
if (performanceTestRun == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "Saving performance results to: {0}", resultsLocation);
|
|
var jsonContents = JsonUtility.ToJson(performanceTestRun, true);
|
|
CreateDirectoryIfNecessary(resultsLocation);
|
|
File.WriteAllText(resultsLocation, jsonContents);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.LogError("Saving performance results file failed.");
|
|
Debug.LogException(e);
|
|
}
|
|
}
|
|
|
|
static void CreateDirectoryIfNecessary(string filePath)
|
|
{
|
|
var directoryPath = Path.GetDirectoryName(filePath);
|
|
if (!string.IsNullOrEmpty(directoryPath) && !Directory.Exists(directoryPath))
|
|
{
|
|
Directory.CreateDirectory(directoryPath);
|
|
}
|
|
}
|
|
|
|
void ICallbacks.TestStarted(ITestAdaptor test) { }
|
|
|
|
void ICallbacks.TestFinished(ITestResultAdaptor result) { }
|
|
|
|
public void SetResultsLocation(string perfTestResultsPath)
|
|
{
|
|
resultsLocation = perfTestResultsPath;
|
|
}
|
|
}
|
|
}
|