Beispiel #1
0
        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));
 }