From a04ac59fb91c7a7c8ba958ea8587befbd8835d90 Mon Sep 17 00:00:00 2001 From: Sean Stolberg Date: Fri, 7 Sep 2018 16:14:53 +0300 Subject: [PATCH] Add additional hack to PlaymodeMetadataCollector to workaround potential json deserialization issue with metadata. --- .../Assets/Tests/PlaymodeMetadataCollector.cs | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/PerformanceTests/UnityPerformanceBenchmark/Assets/Tests/PlaymodeMetadataCollector.cs b/PerformanceTests/UnityPerformanceBenchmark/Assets/Tests/PlaymodeMetadataCollector.cs index a058af78..9c6c6145 100644 --- a/PerformanceTests/UnityPerformanceBenchmark/Assets/Tests/PlaymodeMetadataCollector.cs +++ b/PerformanceTests/UnityPerformanceBenchmark/Assets/Tests/PlaymodeMetadataCollector.cs @@ -16,6 +16,13 @@ using UnityEditor; #endif +/// +/// The existence of this PlaymodeMetdataCollector class in the PerformanceBenchmark tests is a hack to +/// enable collection of test metadata when IL2CPP scriptingbackend is enabled. This same script is used in the +/// performance testing extension and works fine when mono scriptingbackend is used. However, not so much for IL2CPP +/// is used. This issue (most likely a JSON deserialization/stripping issue) is being investigated, but for now, +/// if you want to ensure test run metadata is included in the result when using IL2CPP, include this class/test in your project. +/// [Category("Performance")] public class PlaymodeMetadataCollector : IPrebuildSetup { @@ -36,6 +43,62 @@ public IEnumerator GetPlayerSettingsTest() m_TestRun.TestSuite = "Playmode"; m_TestRun.BuildSettings.Platform = Application.platform.ToString(); + // Begin hack within hack + // It seem we're losing metadata potentially from deserialization. + // This hack seems to workaround the issue, resulting in more consistent + // metadata + using (StreamWriter sw = new StreamWriter(Stream.Null)) + { + // PlayerSystemInfo + sw.Write(m_TestRun.PlayerSystemInfo.DeviceModel); + sw.Write(m_TestRun.PlayerSystemInfo.DeviceName); + sw.Write(m_TestRun.PlayerSystemInfo.GraphicsDeviceName); + sw.Write(m_TestRun.PlayerSystemInfo.OperatingSystem); + sw.Write(m_TestRun.PlayerSystemInfo.ProcessorCount); + sw.Write(m_TestRun.PlayerSystemInfo.SystemMemorySize); + sw.Write(m_TestRun.PlayerSystemInfo.XrDevice); + sw.Write(m_TestRun.PlayerSystemInfo.XrModel); + + //PlayerSettings + sw.Write(m_TestRun.PlayerSettings.AndroidMinimumSdkVersion); + sw.Write(m_TestRun.PlayerSettings.AndroidTargetSdkVersion); + sw.Write(m_TestRun.PlayerSettings.Batchmode); + sw.Write(m_TestRun.PlayerSettings.EnabledXrTargets); + sw.Write(m_TestRun.PlayerSettings.GpuSkinning); + sw.Write(m_TestRun.PlayerSettings.GraphicsApi); + sw.Write(m_TestRun.PlayerSettings.GraphicsJobs); + sw.Write(m_TestRun.PlayerSettings.MtRendering); + sw.Write(m_TestRun.PlayerSettings.RenderThreadingMode); + sw.Write(m_TestRun.PlayerSettings.ScriptingBackend); + sw.Write(m_TestRun.PlayerSettings.ScriptingRuntimeVersion); + sw.Write(m_TestRun.PlayerSettings.StereoRenderingPath); + sw.Write(m_TestRun.PlayerSettings.VrSupported); + + //QualitySettings + sw.Write(m_TestRun.QualitySettings.AnisotropicFiltering); + sw.Write(m_TestRun.QualitySettings.AntiAliasing); + sw.Write(m_TestRun.QualitySettings.BlendWeights); + sw.Write(m_TestRun.QualitySettings.ColorSpace); + sw.Write(m_TestRun.QualitySettings.Vsync); + + //ScreenSettings + sw.Write(m_TestRun.ScreenSettings.Fullscreen); + sw.Write(m_TestRun.ScreenSettings.ScreenHeight); + sw.Write(m_TestRun.ScreenSettings.ScreenRefreshRate); + sw.Write(m_TestRun.ScreenSettings.ScreenWidth); + + //BuildSettings + sw.Write(m_TestRun.BuildSettings.AndroidBuildSystem); + sw.Write(m_TestRun.BuildSettings.BuildTarget); + sw.Write(m_TestRun.BuildSettings.DevelopmentPlayer); + sw.Write(m_TestRun.BuildSettings.Platform); + + //EditorSettings + sw.Write(m_TestRun.EditorVersion.RevisionValue); + sw.Write(m_TestRun.EditorVersion.FullVersion); + } + // End hack + TestContext.Out.Write("##performancetestruninfo:" + JsonUtility.ToJson(m_TestRun)); }