Skip to content

Commit

Permalink
Add additional hack to PlaymodeMetadataCollector to workaround potent…
Browse files Browse the repository at this point in the history
…ial json deserialization issue with metadata.
  • Loading branch information
seanstolberg-unity committed Sep 7, 2018
1 parent fbc2291 commit a04ac59
Showing 1 changed file with 63 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@
using UnityEditor;
#endif

/// <summary>
/// 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.
/// </summary>
[Category("Performance")]
public class PlaymodeMetadataCollector : IPrebuildSetup
{
Expand All @@ -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));
}

Expand Down

0 comments on commit a04ac59

Please sign in to comment.