Ejemplo n.º 1
0
        public async Task ElapsedUpdatesDuringOperation()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");
            var first  = op.Elapsed;
            await Task.Delay(10);

            var second = op.Elapsed;
            await Task.Delay(10);

            op.Complete();
            var third = op.Elapsed;
            await Task.Delay(10);

            var fourth = op.Elapsed;
            await Task.Delay(10);

            op.Complete();
            var fifth = op.Elapsed;

            Assert.NotEqual(first, second);
            Assert.NotEqual(second, third);
            Assert.Equal(third, fourth);
            Assert.Equal(fourth, fifth);
        }
Ejemplo n.º 2
0
        public IEnumerator SimpleTree()
        {
            var root   = new GameObject("root");
            var childA = GameObject.CreatePrimitive(PrimitiveType.Cube);

            childA.name = "child A";
            var childB = GameObject.CreatePrimitive(PrimitiveType.Sphere);

            childB.name                    = "child B";
            childA.transform.parent        = root.transform;
            childB.transform.parent        = root.transform;
            childB.transform.localPosition = new Vector3(1, 0, 0);

            var logger = new CollectingLogger();
            var export = new GameObjectExport(logger: logger);

            export.AddScene(new [] { root }, "UnityScene");
            var path = Path.Combine(Application.persistentDataPath, "root.gltf");
            var task = export.SaveToFileAndDispose(path);

            yield return(Utils.WaitForTask(task));

            var success = task.Result;

            Assert.IsTrue(success);
            AssertLogger(logger);
#if GLTF_VALIDATOR && UNITY_EDITOR
            ValidateGltf(path, MessageCode.UNUSED_OBJECT);
#endif
        }
Ejemplo n.º 3
0
        public void should_not_run_selects_and_deletes_to_non_affected_aggregates()
        {
            var logger = new CollectingLogger();

            using var documentStore = SeparateStore(x =>
            {
                x.Projections.SelfAggregate <AggregateA>(ProjectionLifecycle.Inline);
                x.Projections.SelfAggregate <AggregateB>(ProjectionLifecycle.Inline);
                x.Projections.SelfAggregate <AggregateC>(ProjectionLifecycle.Inline);
                x.Logger(logger);
            });

            documentStore.Advanced.Clean.CompletelyRemoveAll();

            using var session = documentStore.OpenSession();
            var id = session.Events.StartStream <AggregateA>(new CreateAEvent {
                Name = "Test"
            }).Id;

            session.SaveChanges();

            var commit = logger.LastCommit;

            commit.Deleted.Any().ShouldBeFalse();
        }
Ejemplo n.º 4
0
        public IEnumerator SavedTwice()
        {
            var childA = GameObject.CreatePrimitive(PrimitiveType.Cube);

            childA.name = "child A";

            var logger = new CollectingLogger();
            var export = new GameObjectExport(logger: logger);

            export.AddScene(new [] { childA });
            var path = Path.Combine(Application.persistentDataPath, "SavedTwice1.gltf");
            var task = export.SaveToFileAndDispose(path);

            yield return(Utils.WaitForTask(task));

            var success = task.Result;

            Assert.IsTrue(success);
            AssertLogger(logger);
#if GLTF_VALIDATOR && UNITY_EDITOR
            ValidateGltf(path, MessageCode.UNUSED_OBJECT);
#endif
            Assert.Throws <InvalidOperationException>(delegate()
            {
                export.AddScene(new [] { childA });
            });
            path = Path.Combine(Application.persistentDataPath, "SavedTwice2.gltf");
            AssertThrowsAsync <InvalidOperationException>(async() => await export.SaveToFileAndDispose(path));
        }
Ejemplo n.º 5
0
        public void AbandonmentLevelsDefaultToCustomCompletionLevelIfApplied()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.OperationAt(LogEventLevel.Error).Begin("Test");

            op.Dispose();
            AssertSingleCompletionEvent(logger, LogEventLevel.Error, OutcomeAbandoned);
        }
Ejemplo n.º 6
0
        public void AbandonOverloadWithEnricherRecordsPropertyAddedViaEnricher()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.Abandon(new Enricher("Value", 42));
            AssertScalarPropertyOfSingleEvent(logger, "Value", 42);
        }
Ejemplo n.º 7
0
        public void AbandonRecordsResultsOfOperations()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.Abandon("Value", 42);
            AssertScalarPropertyOfSingleEvent(logger, "Value", 42);
        }
Ejemplo n.º 8
0
        public void CustomAbandonmentLevelsAreApplied()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.OperationAt(LogEventLevel.Error, LogEventLevel.Fatal).Begin("Test");

            op.Dispose();
            AssertSingleCompletionEvent(logger, LogEventLevel.Fatal, OutcomeAbandoned);
        }
Ejemplo n.º 9
0
        public void DisposeRecordsCompletionOfTimings()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.TimeOperation("Test");

            op.Dispose();
            AssertSingleCompletionEvent(logger, LogEventLevel.Information, OutcomeCompleted);
        }
Ejemplo n.º 10
0
        public void CustomCompletionLevelsAreApplied()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.OperationAt(LogEventLevel.Error).Time("Test");

            op.Dispose();
            AssertSingleCompletionEvent(logger, LogEventLevel.Error, OutcomeCompleted);
        }
Ejemplo n.º 11
0
        public void AbandonRecordsAddedProperty()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.EnrichWith("Value", 42);
            op.Dispose();
            AssertScalarPropertyOfSingleEvent(logger, "Value", 42);
        }
Ejemplo n.º 12
0
        public void CustomCompletionLevelsAreApplied()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.OperationAt(LogEventLevel.Error).Time("Test");

            op.Dispose();
            Assert.Equal(1, logger.Events.Count);
            Assert.Equal(LogEventLevel.Error, logger.Events.Single().Level);
        }
Ejemplo n.º 13
0
        public void DisposeRecordsCompletionOfTimings()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.TimeOperation("Test");

            op.Dispose();
            Assert.Equal(1, logger.Events.Count);
            Assert.Equal(LogEventLevel.Information, logger.Events.Single().Level);
        }
Ejemplo n.º 14
0
        public void CustomAbandonmentLevelsAreApplied()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.OperationAt(LogEventLevel.Error, LogEventLevel.Fatal).Begin("Test");

            op.Dispose();
            Assert.Equal(1, logger.Events.Count);
            Assert.Equal(LogEventLevel.Fatal, logger.Events.Single().Level);
        }
Ejemplo n.º 15
0
        public static void CollectingLoggerTest()
        {
            var r = new CollectingLogger();

            r.Error(LogCode.Download, "404", "https://something.com/nowherfound.glb");

            Assert.AreEqual(1, r.items.Count);
            Assert.AreEqual("Download URL https://something.com/nowherfound.glb failed: 404", r.items[0].ToString());
        }
Ejemplo n.º 16
0
        public void CompleteRecordsPropertyAddedViaEnricher()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.EnrichWith(new Enricher("Value", 42));
            op.Complete();
            AssertScalarPropertyOfSingleEvent(logger, "Value", 42);
        }
Ejemplo n.º 17
0
        public void AbandonmentLevelsDefaultToCustomCompletionLevelIfApplied()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.OperationAt(LogEventLevel.Error).Begin("Test");

            op.Dispose();
            Assert.Equal(1, logger.Events.Count);
            Assert.Equal(LogEventLevel.Error, logger.Events.Single().Level);
        }
Ejemplo n.º 18
0
        public void CompleteRecordsResultsOfOperations()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.Complete("Value", 42);
            Assert.Single(logger.Events);
            Assert.True(logger.Events.Single().Properties.ContainsKey("Value"));
        }
Ejemplo n.º 19
0
        public void CompleteOverridesAddedProperty()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.EnrichWith("Value", 42);
            op.Complete("Value", 43);
            AssertScalarPropertyOfSingleEvent(logger, "Value", 43);
        }
Ejemplo n.º 20
0
        public void OnceCanceledDisposeDoesNotRecordCompletionOfOperations()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.Cancel();
            op.Dispose();
            Assert.Empty(logger.Events);
        }
Ejemplo n.º 21
0
        private static void AssertScalarPropertyOfSingleEvent <T>(CollectingLogger logger, string propertyName, T expected)
        {
            var ev = Assert.Single(logger.Events);

            Assert.True(ev.Properties.TryGetValue(propertyName, out var value));
            Assert.Equal(
                expected,
                Assert.IsType <T>(Assert.IsType <ScalarValue>(value).Value)
                );
        }
Ejemplo n.º 22
0
        public void AbandonRecordsAbandonmentOfBegunOperations()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.Abandon();
            AssertSingleCompletionEvent(logger, LogEventLevel.Warning, OutcomeAbandoned);

            op.Dispose();
            Assert.Single(logger.Events);
        }
Ejemplo n.º 23
0
        public void CompleteRecordsCompletionOfOperations()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.Complete();
            AssertSingleCompletionEvent(logger, LogEventLevel.Information, OutcomeCompleted);

            op.Dispose();
            Assert.Single(logger.Events);
        }
Ejemplo n.º 24
0
 void AssertLogger(CollectingLogger logger)
 {
     logger.LogAll();
     if (logger.items != null)
     {
         foreach (var item in logger.items)
         {
             Assert.AreEqual(LogType.Log, item.type, item.ToString());
         }
     }
 }
Ejemplo n.º 25
0
        public void OnceCanceledDisposeDoesNotInvokeEnricher()
        {
            var enricher = new Enricher(null, null);
            var logger   = new CollectingLogger();
            var op       = logger.Logger.BeginOperation("Test");

            op.EnrichWith(enricher);
            op.Cancel();
            op.Dispose();
            Assert.False(enricher.WasCalled);
        }
Ejemplo n.º 26
0
        public void DisposeRecordsAbandonmentOfIncompleteOperations()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.Dispose();
            Assert.Equal(1, logger.Events.Count);
            Assert.Equal(LogEventLevel.Warning, logger.Events.Single().Level);

            op.Dispose();
            Assert.Equal(1, logger.Events.Count);
        }
Ejemplo n.º 27
0
        public async Task TimingWithinOrderOfMagnitude(int delay)
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.TimeOperation("Test");
            await Task.Delay(delay);

            op.Dispose();

            var elapsed = GetElapsedMilliseconds(logger);

            Assert.InRange(elapsed, delay * 0.5, delay * 5);
        }
Ejemplo n.º 28
0
        public void LoggerContextIsPreserved()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger
                         .ForContext <OperationTests>().BeginOperation("Test");

            op.Complete();

            var sourceContext = ((ScalarValue)logger.Events.Single().Properties["SourceContext"]).Value;

            Assert.Equal(sourceContext, typeof(OperationTests).FullName);
        }
Ejemplo n.º 29
0
        public void AbandonOverloadWithEnrichersRecordsPropertiesAddedViaEnrichers()
        {
            var logger = new CollectingLogger();
            var op     = logger.Logger.BeginOperation("Test");

            op.Abandon(new ILogEventEnricher[] {
                new Enricher("Question", "unknown"),
                new Enricher("Answer", 42)
            });
            AssertScalarPropertyOfSingleEvent(logger, "Question", "unknown");
            AssertScalarPropertyOfSingleEvent(logger, "Answer", 42);
        }
Ejemplo n.º 30
0
        public void DisposedOperationDoesNotCaptureException()
        {
            var logger = new CollectingLogger();

            Assert.Throws <InvalidOperationException>((Action)(() =>
            {
                using (logger.Logger.BeginOperation("Test"))
                {
                    throw new InvalidOperationException();
                }
            })
                                                      );
            Assert.Null(Assert.Single(logger.Events).Exception);
        }