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