| | using System; |
| | using System.Collections.Generic; |
| | using NUnit.Framework; |
| | using Unity.MLAgents.Sensors; |
| | using Unity.MLAgents.Actuators; |
| | using Unity.MLAgents.Analytics; |
| | using Unity.MLAgents.Policies; |
| | using UnityEditor; |
| |
|
| | namespace Unity.MLAgents.Tests.Analytics |
| | { |
| | [TestFixture] |
| | public class TrainingAnalyticsTests |
| | { |
| | [TestCase("foo?team=42", ExpectedResult = "foo")] |
| | [TestCase("foo", ExpectedResult = "foo")] |
| | [TestCase("foo?bar?team=1337", ExpectedResult = "foo?bar")] |
| | public string TestParseBehaviorName(string fullyQualifiedBehaviorName) |
| | { |
| | return TrainingAnalytics.ParseBehaviorName(fullyQualifiedBehaviorName); |
| | } |
| |
|
| | [Test] |
| | public void TestRemotePolicyEvent() |
| | { |
| | var behaviorName = "testBehavior"; |
| | var sensor1 = new Test3DSensor("SensorA", 21, 20, 3); |
| | var sensor2 = new Test3DSensor("SensorB", 20, 22, 3); |
| | var sensors = new List<ISensor> { sensor1, sensor2 }; |
| |
|
| | var actionSpec = ActionSpec.MakeContinuous(2); |
| |
|
| | var vectorActuator = new VectorActuator(null, actionSpec, "test'"); |
| | var actuators = new IActuator[] { vectorActuator }; |
| |
|
| | var remotePolicyEvent = TrainingAnalytics.GetEventForRemotePolicy(behaviorName, sensors, actionSpec, actuators); |
| |
|
| | |
| | Assert.AreNotEqual(behaviorName, remotePolicyEvent.BehaviorName); |
| |
|
| | Assert.AreEqual(2, remotePolicyEvent.ObservationSpecs.Count); |
| | Assert.AreEqual(3, remotePolicyEvent.ObservationSpecs[0].DimensionInfos.Length); |
| | Assert.AreEqual(20, remotePolicyEvent.ObservationSpecs[0].DimensionInfos[0].Size); |
| | Assert.AreEqual(0, remotePolicyEvent.ObservationSpecs[0].ObservationType); |
| | Assert.AreEqual("None", remotePolicyEvent.ObservationSpecs[0].CompressionType); |
| | Assert.AreEqual(Test3DSensor.k_BuiltInSensorType, remotePolicyEvent.ObservationSpecs[0].BuiltInSensorType); |
| |
|
| | Assert.AreEqual(2, remotePolicyEvent.ActionSpec.NumContinuousActions); |
| | Assert.AreEqual(0, remotePolicyEvent.ActionSpec.NumDiscreteActions); |
| |
|
| | Assert.AreEqual(2, remotePolicyEvent.ActuatorInfos[0].NumContinuousActions); |
| | Assert.AreEqual(0, remotePolicyEvent.ActuatorInfos[0].NumDiscreteActions); |
| | } |
| |
|
| | [Test] |
| | public void TestRemotePolicy() |
| | { |
| | if (Academy.IsInitialized) |
| | { |
| | Academy.Instance.Dispose(); |
| | } |
| |
|
| | using (new AnalyticsUtils.DisableAnalyticsSending()) |
| | { |
| | var actionSpec = ActionSpec.MakeContinuous(3); |
| | var policy = new RemotePolicy(actionSpec, Array.Empty<IActuator>(), "TestBehavior?team=42"); |
| | policy.RequestDecision(new AgentInfo(), new List<ISensor>()); |
| | } |
| |
|
| | Academy.Instance.Dispose(); |
| | } |
| |
|
| | [TestCase("a name we expect to hash", ExpectedResult = "d084a8b6da6a6a1c097cdc9ffea95e1546da4647352113ed77cbe7b4192e6d73")] |
| | [TestCase("another_name", ExpectedResult = "0b74613c872e79aba11e06eda3538f2b646eb2b459e75087829ea500bd703d0b")] |
| | [TestCase("0b74613c872e79aba11e06eda3538f2b646eb2b459e75087829ea500bd703d0b", ExpectedResult = "0b74613c872e79aba11e06eda3538f2b646eb2b459e75087829ea500bd703d0b")] |
| | public string TestTrainingBehaviorInitialized(string stringToMaybeHash) |
| | { |
| | var tbiEvent = new TrainingBehaviorInitializedEvent(); |
| | tbiEvent.BehaviorName = stringToMaybeHash; |
| | tbiEvent.Config = "{}"; |
| |
|
| | var sanitizedEvent = TrainingAnalytics.SanitizeTrainingBehaviorInitializedEvent(tbiEvent); |
| | return sanitizedEvent.BehaviorName; |
| | } |
| |
|
| | [Test] |
| | public void TestEnableAnalytics() |
| | { |
| | #if UNITY_EDITOR && MLA_UNITY_ANALYTICS_MODULE |
| | Assert.IsTrue(EditorAnalytics.enabled == TrainingAnalytics.EnableAnalytics()); |
| | #else |
| | Assert.IsFalse(TrainingAnalytics.EnableAnalytics()); |
| | #endif |
| | } |
| | } |
| | } |
| |
|