public void InstantiateTrackingParticipants(IEnumerable <TrackingConfiguration> config) { _trackingParticipants = new Dictionary <string, TrackingParticipant>(); bool isTrackingParticipantSelected = false; int numberOfTrackingParticipants = config.Count(); foreach (TrackingConfiguration trackingConfig in config) { TestTraceManager.OptionalLogTrace("[TestTrackingDataManager]Adding tracking participant TrackingParticipantType = {0}, ProfileManagerType = {1}, TestProfileType = {2}", trackingConfig.TrackingParticipantType, trackingConfig.ProfileManagerType, trackingConfig.TestProfileType); switch (trackingConfig.TrackingParticipantType) { //case TrackingParticipantType.SqlTrackingParticipant: // //Sql works against the product & only for the default config profile provider // SqlTrackingParticipant sqlTrackingParticipant = (SqlTrackingParticipant)TestTrackingParticipantBase.GetInstance(trackingConfig.TrackingParticipantType, ParticipantAssociation.WorkflowExtention); // SqlTrackingConfiguration sqlTrackingConfig = trackingConfig as SqlTrackingConfiguration; // //sqlTrackingParticipant.TrackingProfile = TestProfileProvider.GetTrackingProfile(sqlTrackingConfig.ProfileName); // //Log.TraceInternal("[TestTrackingDataManager]sqlTrackingParticipant.TrackingProfile =" + sqlTrackingParticipant.TrackingProfile); // sqlTrackingParticipant.ParticipateInProcessTransaction = sqlTrackingConfig.IsTransactional; // sqlTrackingParticipant.ConnectionString = sqlTrackingConfig.ConnectionString; // this.trackingParticipants.Add(trackingConfig.TrackingParticipantName, sqlTrackingParticipant); // if (!isTrackingParticipantSelected) // { // //Log.TraceInternal("[TestTrackingDataManager]Test profile type = {0}, TestProfileProvider.IsAllOrNullProfile(trackingConfig.TestProfileType) = {1}", trackingConfig.TestProfileType, TestProfileProvider.IsAllOrNullProfile(trackingConfig.TestProfileType)); // //if (TestProfileProvider.IsAllOrNullProfile(trackingConfig.TestProfileType) || (numberOfTrackingParticipants == 1)) // //{ // // isTrackingParticipantSelected = true; // // sqlTrackingConfig.PushToTrackingDataManager = true; // //} // } // //Log.TraceInternal("[TestTrackingDataManager]Added PRODUCT SqlTrackingParticipant with: ProfileName={0}, isTransactional={1}, ConnectionString={2}", // // sqlTrackingParticipant.TrackingProfile.Name, // // sqlTrackingParticipant.ParticipateInProcessTransaction.ToString(), // // sqlTrackingParticipant.ConnectionString); // break; case TrackingParticipantType.InMemoryTrackingParticipant: InMemoryTrackingParticipant memoryTrackingParticipant = (InMemoryTrackingParticipant)TestTrackingParticipantBase.GetInstance(trackingConfig.TrackingParticipantType, ParticipantAssociation.WorkflowExtention); memoryTrackingParticipant.PushToTrackingDataManager = true; _trackingParticipants.Add(trackingConfig.TrackingParticipantName, memoryTrackingParticipant); break; default: TestTrackingParticipantBase trackingParticipant = (TestTrackingParticipantBase)TestTrackingParticipantBase.GetInstance(trackingConfig.TrackingParticipantType, ParticipantAssociation.TestVerification); //trackingParticipant.ProfileProvider = TestProfileProvider.GetInstance(trackingConfig); trackingParticipant.ProfileProvider.ActiveTrackingProfile = trackingConfig.TestProfileType; trackingParticipant.Name = trackingConfig.TrackingParticipantName; _trackingParticipants.Add(trackingConfig.TrackingParticipantName, trackingParticipant); if (!isTrackingParticipantSelected) { //if (TestProfileProvider.IsAllOrNullProfile(trackingConfig.TestProfileType) || (numberOfTrackingParticipants == 1)) //{ // isTrackingParticipantSelected = true; // trackingParticipant.PushToTrackingDataManager = true; //} } break; } TestTraceManager.OptionalLogTrace("[TestTrackingDataManager]Successfully added tracking participant"); } TestTraceManager.OptionalLogTrace("[TestTrackingDataManager]Successfully added all tracking participants..."); }
/// <summary> /// To make the default Sql tracking participant work for all test cases going forward, we implement it as follows: /// When the tracking participant needs to be added to the workflow, the OOB SqlTrackingParticipant get invoked. /// For verification purposes, the custom sql tracking participant is instantiated & the corresponding methods invoked. /// </summary> public static TestTrackingParticipantBase GetInstanceForVerification(TrackingParticipantType type) { return((TestTrackingParticipantBase)TestTrackingParticipantBase.GetInstance(type, ParticipantAssociation.TestVerification)); }