90 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using UnityEditor.DeploymentTargets;
 | |
| using UnityEditor.TestTools.TestRunner.CommandLineTest;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace UnityEditor.TestRunner.TestLaunchers
 | |
| {
 | |
|     [Serializable]
 | |
|     internal class RemotePlayerLogController : ScriptableSingleton<RemotePlayerLogController>
 | |
|     {
 | |
|         private List<LogWriter> m_LogWriters;
 | |
| 
 | |
|         private Dictionary<string, DeploymentTargetLogger> m_Loggers;
 | |
| 
 | |
|         private string m_DeviceLogsDirectory;
 | |
| 
 | |
|         public void SetBuildTarget(BuildTarget buildTarget)
 | |
|         {
 | |
|             m_Loggers = GetDeploymentTargetLoggers(buildTarget);
 | |
| 
 | |
|             if (m_Loggers == null)
 | |
|                 Debug.Log("Deployment target logger could not be created");
 | |
|         }
 | |
| 
 | |
|         public void SetLogsDirectory(string dir)
 | |
|         {
 | |
|             m_DeviceLogsDirectory = dir;
 | |
|         }
 | |
| 
 | |
|         public void StartLogWriters()
 | |
|         {
 | |
|             if (m_DeviceLogsDirectory == null || m_Loggers == null)
 | |
|                 return;
 | |
| 
 | |
|             m_LogWriters = new List<LogWriter>();
 | |
| 
 | |
|             foreach (var logger in m_Loggers)
 | |
|             {
 | |
|                 m_LogWriters.Add(new LogWriter(m_DeviceLogsDirectory, logger.Key, logger.Value));
 | |
|                 logger.Value.Start();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public void StopLogWriters()
 | |
|         {
 | |
|             if (m_LogWriters == null)
 | |
|                 return;
 | |
| 
 | |
|             foreach (var logWriter in m_LogWriters)
 | |
|             {
 | |
|                 logWriter.Stop();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private Dictionary<string, DeploymentTargetLogger> GetDeploymentTargetLoggers(BuildTarget buildTarget)
 | |
|         {
 | |
|             DeploymentTargetManager deploymentTargetManager;
 | |
| 
 | |
|             try
 | |
|             {
 | |
|                 deploymentTargetManager = DeploymentTargetManager.CreateInstance(EditorUserBuildSettings.activeBuildTargetGroup, buildTarget);
 | |
| 
 | |
|                 if (deploymentTargetManager == null)
 | |
|                     return null;
 | |
|             }
 | |
|             catch (NotSupportedException ex)
 | |
|             {
 | |
|                 Debug.Log(ex.Message);
 | |
|                 Debug.Log("Deployment target logger not initialised");
 | |
|                 return null;
 | |
|             }
 | |
| 
 | |
|             var targets = deploymentTargetManager.GetKnownTargets();
 | |
|             var loggers = new Dictionary<string, DeploymentTargetLogger>();
 | |
| 
 | |
|             foreach (var target in targets)
 | |
|             {
 | |
|                 if (target.status != DeploymentTargetStatus.Ready) continue;
 | |
| 
 | |
|                 var logger = deploymentTargetManager.GetTargetLogger(target.id);
 | |
|                 logger.Clear();
 | |
|                 loggers.Add(target.id, logger);
 | |
|             }
 | |
| 
 | |
|             return loggers;
 | |
|         }
 | |
|     }
 | |
| }
 |