Exemplo n.º 1
0
        public void InstrumentedPlugin_Container_Initialization()
        {
            var plugin = new InstrumentedPlugin(null, null, false); //do not override channel

            Assert.IsNotNull(plugin.Container);
            Assert.AreEqual(20, plugin.Container.Count);

            //verify expected concreate implementations for each registered interface.
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ICacheFactory, CacheFactory>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <IConfigurationFactory, ConfigurationFactory>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ILocalPluginContextFactory, LocalPluginContextFactory>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <IRijndaelEncryption, RijndaelEncryption>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <IExtensionSettingsConfig, DefaultExtensionSettingsConfig>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <IPluginWebRequestFactory, PluginHttpWebRequestFactory>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <IXrmTelemetryPropertyManager, CCLLC.Xrm.Sdk.Telemetry.ExecutionContextPropertyManager>(true));

            //verify expected concrete implementation for telemetry support
            Assert.IsTrue(plugin.Container.IsRegisteredAs <IEventLogger, InertEventLogger>(true));
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ITelemetryFactory, TelemetryFactory>(true));
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ITelemetryClientFactory, TelemetryClientFactory>(true));
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ITelemetryContext, TelemetryContext>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ITelemetryInitializerChain, TelemetryInitializerChain>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ITelemetrySink, TelemetrySink>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ITelemetryProcessChain, TelemetryProcessChain>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ITelemetryChannel, SyncMemoryChannel>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ITelemetryBuffer, TelemetryBuffer>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ITelemetryTransmitter, AITelemetryTransmitter>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <IContextTagKeys, AIContextTagKeys>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <ITelemetrySerializer, AITelemetrySerializer>());
            Assert.IsTrue(plugin.Container.IsRegisteredAs <IJsonWriterFactory, JsonWriterFactory>());
        }
Exemplo n.º 2
0
        public void InstrumentedPlugin_Container_IsNot_Plugin_Container()
        {
            var plugin1 = new Plugin(null, null);
            var plugin2 = new InstrumentedPlugin(null, null);

            Assert.IsNotNull(plugin1.Container);
            Assert.IsNotNull(plugin2.Container);

            Assert.AreNotSame(plugin1.Container, plugin2.Container);
        }
        public void Telemetry_Has_Expected_Properties()
        {
            var xrmFake = new XrmFakedContext();

            var plugin = new InstrumentedPlugin();

            plugin.TestingDelegate = (localContext) =>
            {
                localContext.Trace("This is a message");
            };

            xrmFake.ExecutePluginWith <InstrumentedPlugin>(getPluginExecutionContext(xrmFake), plugin);

            var items = new List <ITelemetry>(plugin.TelemetrySink.Channel.Buffer.Dequeue());

            Assert.AreEqual(1, items.Count);

            var telemetry = items[0] as IMessageTelemetry;

            Assert.IsNotNull(telemetry);

            var context          = telemetry.Context;
            var executionContext = xrmFake.GetDefaultPluginContext();

            Assert.AreEqual(executionContext.MessageName, context.Operation.Name);
            //Bug with the fake is causing the execution context correltion id to reset back to an empty guid.
            //Assert.AreEqual(executionContext.CorrelationId.ToString(), context.Operation.CorrelationVector);
            //Assert.AreEqual(executionContext.CorrelationId.ToString(), context.Session.Id);
            Assert.AreEqual(executionContext.OperationId.ToString(), context.Operation.Id);
            Assert.AreEqual("XrmSdkTests.InstrumentedPlugin", telemetry.Properties["crm-pluginclass"]);
            Assert.AreEqual("20", telemetry.Properties["crm-stage"]);
            Assert.AreEqual("1", telemetry.Properties["crm-depth"]);
            Assert.AreEqual(executionContext.InitiatingUserId.ToString(), telemetry.Properties["crm-initiatinguser"]);
            Assert.AreEqual(executionContext.IsInTransaction.ToString(), telemetry.Properties["crm-isintransaction"]);
            Assert.AreEqual(executionContext.IsolationMode.ToString(), telemetry.Properties["crm-isolationmode"]);
            Assert.AreEqual(executionContext.Mode.ToString(), telemetry.Properties["crm-mode"]);
            Assert.AreEqual(executionContext.OrganizationId.ToString(), telemetry.Properties["crm-organizationid"]);
            Assert.AreEqual(executionContext.RequestId.ToString(), telemetry.Properties["crm-requestid"]);
            Assert.AreEqual(executionContext.UserId.ToString(), telemetry.Properties["crm-userid"]);
            Assert.AreEqual(executionContext.OrganizationName, telemetry.Properties["crm-recordsource"]);
            Assert.AreEqual(executionContext.PrimaryEntityId.ToString(), telemetry.Properties["crm-primaryentityid"]);
            Assert.AreEqual(executionContext.PrimaryEntityName, telemetry.Properties["crm-primaryentityname"]);
        }