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>()); }
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"]); }