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;
 | |
|         }
 | |
|     }
 | |
| }
 |