You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.6 KiB
89 lines
2.6 KiB
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; |
|
} |
|
} |
|
}
|
|
|