UnityGame/Library/PackageCache/com.unity.test-framework.performance/Runtime/Metadata.cs
2024-10-27 10:53:47 +03:00

96 lines
3.8 KiB
C#

using System;
using Unity.PerformanceTesting.Data;
using Unity.PerformanceTesting.Runtime;
using UnityEngine;
#if USE_CUSTOM_METADATA
using com.unity.test.metadatamanager;
#endif
namespace Unity.PerformanceTesting
{
/// <summary>
/// Helper class to retrieve metadata information about player settings and hardware.
/// </summary>
public static class Metadata
{
/// <summary>
/// Gets hardware information.
/// </summary>
/// <returns>Hardware information.</returns>
public static Hardware GetHardware()
{
return new Hardware
{
OperatingSystem = SystemInfo.operatingSystem,
DeviceModel = SystemInfo.deviceModel,
DeviceName = SystemInfo.deviceName,
ProcessorType = SystemInfo.processorType,
ProcessorCount = SystemInfo.processorCount,
GraphicsDeviceName = SystemInfo.graphicsDeviceName,
SystemMemorySizeMB = SystemInfo.systemMemorySize
};
}
/// <summary>
/// Sets player settings.
/// </summary>
/// <param name="run">Run used to set settings.</param>
public static void SetPlayerSettings(Run run)
{
run.Player.Vsync = QualitySettings.vSyncCount;
run.Player.AntiAliasing = QualitySettings.antiAliasing;
run.Player.ColorSpace = QualitySettings.activeColorSpace.ToString();
run.Player.AnisotropicFiltering = QualitySettings.anisotropicFiltering.ToString();
run.Player.BlendWeights = QualitySettings.skinWeights.ToString();
#if UNITY_2022_2_OR_NEWER
run.Player.ScreenRefreshRate = (int)Math.Round(Screen.currentResolution.refreshRateRatio.value); // casting to int and rounding to ensure backwards compatibility with older package versions
#else
run.Player.ScreenRefreshRate = Screen.currentResolution.refreshRate;
#endif
run.Player.ScreenWidth = Screen.currentResolution.width;
run.Player.ScreenHeight = Screen.currentResolution.height;
run.Player.Fullscreen = Screen.fullScreen;
run.Player.Batchmode = Application.isBatchMode;
run.Player.Development = Application.isEditor || Debug.isDebugBuild;
run.Player.Platform = Application.platform.ToString();
run.Player.GraphicsApi = SystemInfo.graphicsDeviceType.ToString();
}
/// <summary>
/// Loads run from resources.
/// </summary>
/// <returns></returns>
public static Run GetFromResources()
{
var run = ResourcesLoader.Load<Run>(Utils.TestRunInfo, Utils.PlayerPrefKeyRunJSON);
SetRuntimeSettings(run);
return run;
}
/// <summary>
/// Sets runtime player settings on a run.
/// </summary>
/// <param name="run">Run used to set settings.</param>
public static void SetRuntimeSettings(Run run)
{
run.Hardware = GetHardware();
SetPlayerSettings(run);
run.TestSuite = Application.isPlaying ? "Playmode" : "Editmode";
#if USE_CUSTOM_METADATA
SetCustomMetadata(run);
#endif
}
#if USE_CUSTOM_METADATA
private static void SetCustomMetadata(Run run)
{
var customMetadataManager = new CustomMetadataManager(run.Dependencies);
// This field is historically not used so we can safely store additional string delimited
// metadata here, then parse the metadata values out on the SQL side to give us access
// to additional metadata that would normally require a schema change, or a property back field
run.Player.AndroidTargetSdkVersion = customMetadataManager.GetCustomMetadata();
}
#endif
}
}