Esempio n. 1
0
        public override GetRecordingsResponseItem[] GetRecordings()
        {
            List <GetRecordingsResponseItem> items = new List <GetRecordingsResponseItem>();

            foreach (Search.RecordingInformation info in Search.SearchStorage.Instance.Recordings)
            {
                GetRecordingsResponseItem item = new GetRecordingsResponseItem();

                item.RecordingToken = info.RecordingToken;

                item.Configuration                    = new RecordingConfiguration();
                item.Configuration.Source             = new RecordingSourceInformation();
                item.Configuration.Source.Description = info.Source.Description;
                item.Configuration.Source.Address     = info.Source.Address;
                item.Configuration.Source.Location    = info.Source.Location;
                item.Configuration.Source.Name        = info.Source.Name;
                item.Configuration.Source.SourceId    = info.Source.SourceId;

                item.Configuration.Content = info.Content;
                item.Configuration.MaximumRetentionTime = "PT10S";

                item.Tracks = new GetTracksResponseList();

                List <GetTracksResponseItem> trackItems = new List <GetTracksResponseItem>();
                bool first = true;
                foreach (Search.TrackInformation track in info.Track)
                {
                    //if (info.RecordingToken.EndsWith("1"))
                    //{
                    //    if (first)
                    //    {
                    //        first = false;
                    //        continue;
                    //    }
                    //}

                    GetTracksResponseItem trackItem = new GetTracksResponseItem();
                    trackItem.TrackToken                = track.TrackToken;
                    trackItem.Configuration             = new TrackConfiguration();
                    trackItem.Configuration.Description = track.Description;

                    trackItem.Configuration.TrackType = (TrackType)((int)track.TrackType);

                    //if (info.RecordingToken.EndsWith("2"))
                    //{
                    //    trackItem.Configuration.TrackType = (TrackType)(3-(int)track.TrackType);
                    //}

                    trackItems.Add(trackItem);
                }

                item.Tracks.Track = trackItems.ToArray();
                items.Add(item);
            }

            return(items.ToArray());
        }
        private bool CompareTracks(GetTracksResponseItem prevTrack, GetTracksResponseItem newTrack, StringBuilder logger)
        {
            bool ok = true;

            if (prevTrack.Configuration.TrackType != newTrack.Configuration.TrackType)
            {
                ok = false;
                logger.Append(string.Format("Track Types of track with token '{0}' are different{1}", prevTrack.TrackToken, Environment.NewLine));
            }
            if (prevTrack.Configuration.Description != newTrack.Configuration.Description)
            {
                ok = false;
                logger.Append(string.Format("Descriptions of track with token '{0}' are different{1}", prevTrack.TrackToken, Environment.NewLine));
            }
            return(ok);
        }
        private void CheckTrackListChanged(GetTracksResponseItem[] prevList, GetTracksResponseItem[] newList, string stepName)
        {
            GetTracksResponseItem track  = null;
            StringBuilder         logger = new StringBuilder();
            bool ok = true;

            if (prevList == null && newList != null ||
                prevList != null && newList == null)
            {
                ok = false;
                logger.Append("Initial track list was changed");

                Assert(ok, logger.ToStringTrimNewLine(), stepName);

                return;
            }
            else if (prevList != null && newList != null)
            {
                if (prevList.Length != newList.Length)
                {
                    ok = false;
                    logger.Append("Initial track list was changed");

                    Assert(ok, logger.ToStringTrimNewLine(), stepName);
                }

                foreach (var item in prevList)
                {
                    track = newList.FirstOrDefault(t => t.TrackToken == item.TrackToken);
                    if (track == null)
                    {
                        ok = false;
                        logger.Append("Initial track list was changed");
                    }
                    else
                    {
                        ok &= CompareTracks(item, track, logger);
                    }
                }
            }
            else if (prevList == null && newList == null)
            {
                ok = true;
            }

            Assert(ok, logger.ToStringTrimNewLine(), stepName);
        }
        private bool CompareRecordingTracks(GetRecordingsResponseItem oldRecording, GetRecordingsResponseItem newRecording, StringBuilder logger)
        {
            bool ok = true;
            GetTracksResponseItem track = null;

            if (oldRecording.Tracks.Track == null && newRecording.Tracks.Track != null)
            {
                ok = false;
                logger.Append("Initial track list was changed");
                return(ok);
            }
            else if (oldRecording.Tracks.Track != null && newRecording.Tracks.Track == null)
            {
                ok = false;
                logger.Append("Initial track list was changed");
                return(ok);
            }
            else if (oldRecording.Tracks.Track == null && newRecording.Tracks.Track == null)
            {
                ok = true;
                return(ok);
            }

            if (oldRecording.Tracks.Track.Length != newRecording.Tracks.Track.Length)
            {
                ok = false;
                logger.Append("Initial track list was changed");

                return(ok);
            }

            foreach (var item in oldRecording.Tracks.Track)
            {
                track = newRecording.Tracks.Track.FirstOrDefault(t => t.TrackToken == item.TrackToken);
                if (track == null)
                {
                    ok = false;
                    logger.Append("Initial track list was changed");
                }
                else
                {
                    ok &= CompareTracks(item, track, logger, oldRecording.RecordingToken);
                }
            }
            return(ok);
        }
        private void CheckRecordingTrack(GetTracksResponseItem track, TrackConfiguration conf)
        {
            bool          ok     = true;
            StringBuilder logger = new StringBuilder();

            if (track.Configuration.Description != conf.Description)
            {
                ok = false;
                logger.Append(string.Format("Description is invalid{0}", Environment.NewLine));
            }
            if (track.Configuration.TrackType != conf.TrackType)
            {
                ok = false;
                logger.Append(string.Format("Track type is invalid{0}", Environment.NewLine));
            }

            Assert(ok, logger.ToStringTrimNewLine(),
                   "Check that configuration parameters of new track are valid");
        }
        private bool CompareTracks(GetTracksResponseItem prevTrack, GetTracksResponseItem newTrack, StringBuilder logger, string recordingToken)
        {
            bool ok = true;

            //ok &= CompareStringFields(prevTrack.Configuration.Description,
            //    newTrack.Configuration.Description, logger, "Recording", string.Format("Track {0} Configuration.Description", prevTrack.TrackToken), recordingToken);
            if (!CompareStringFields(prevTrack.Configuration.Description,
                                     newTrack.Configuration.Description, logger, "Recording", string.Format("Track {0} Configuration.Description", prevTrack.TrackToken), recordingToken))
            {
                ok = false;
            }

            if (prevTrack.Configuration.TrackType != newTrack.Configuration.TrackType)
            {
                ok = false;
                logger.Append(string.Format("Track types of track '{0}' in recording '{1}' are different{2}",
                                            prevTrack.TrackToken, recordingToken, Environment.NewLine));
            }
            return(ok);
        }
Esempio n. 7
0
        public void DynamicTrackConfigurationTest()
        {
            string recordingToken = string.Empty;
            string trackTypeStr   = string.Empty;

            string trackToken = string.Empty;

            bool isTrackDeleted     = false;
            bool isTrackCreated     = false;
            bool isRecordingCreated = false;

            TrackConfiguration deletedTrackConf = null;

            RunTest(() =>
            {
                // A.14 - Selection of Recording for track creation
                GetRecordingForTrackCreation(out recordingToken,
                                             out trackTypeStr,
                                             out isRecordingCreated,
                                             out isTrackDeleted, out deletedTrackConf);

                TrackType trackType = (trackTypeStr == "Video" ? TrackType.Video :
                                       (trackTypeStr == "Audio" ? TrackType.Audio :
                                        (trackTypeStr == "Metadata" ? TrackType.Metadata : TrackType.Extended)));

                // prepare track configuration
                var trackConf         = new TrackConfiguration();
                trackConf.Description = "New Track";
                trackConf.TrackType   = trackType;

                // get initial recordings
                GetRecordingsResponseItem[] recordingsInitial = GetRecordings();
                Assert(recordingsInitial != null, "Recording list is empty", "Check that recording list is not empty");

                // create track
                trackToken     = CreateTrack(recordingToken, trackConf);
                isTrackCreated = true;

                // check that created track token is not presented in selected recording (from initial track list)
                GetRecordingsResponseItem recordingInitial = recordingsInitial.FirstOrDefault(rec => rec.RecordingToken == recordingToken);
                GetTracksResponseItem track = null;
                if (recordingInitial.Tracks.Track != null)
                {
                    track = recordingInitial.Tracks.Track.FirstOrDefault(t => t.TrackToken == trackToken);
                }
                Assert(track == null,
                       String.Format("Track (token = {0}) has already presented in recording (token = {1})", trackToken, recordingToken),
                       String.Format("Check that new track (token = {0}) wasn't presented in recording (token = {1})", trackToken, recordingToken));

                // get updated recordings (after CreateTrack)
                GetRecordingsResponseItem[] recordingsUpdated = GetRecordings();
                Assert(recordingsUpdated != null, "Recording list is empty", "Check that recording list is not empty");

                // check that created track token is presented in selected recording (from updated track list)
                GetRecordingsResponseItem recordingUpdated = recordingsUpdated.FirstOrDefault(rec => rec.RecordingToken == recordingToken);
                Assert(recordingUpdated != null, "Recording is not found",
                       string.Format("Check that recording (token = {0}) exists in updated recording list", recordingToken));

                GetTracksResponseItem track2 = null;
                if (recordingUpdated.Tracks.Track != null)
                {
                    track2 = recordingUpdated.Tracks.Track.FirstOrDefault(t => t.TrackToken == trackToken);
                }
                Assert(track2 != null,
                       String.Format("Track (token = {0}) isn't presented in recording (token = {1})", trackToken, recordingToken),
                       String.Format("Check that new track (token = {0}) is presented in recording (token = {1})", trackToken, recordingToken));

                // check track parameters
                CheckRecordingTrack(track2, trackConf);

                // check that all other tracks for initial selected recording
                // have the same parameters as for updated selected recording
                GetTracksResponseItem[] trackInitialOther = null;
                if (recordingInitial.Tracks.Track != null)
                {
                    trackInitialOther = (recordingInitial.Tracks.Track.Where(tr => tr.TrackToken != trackToken)).ToArray <GetTracksResponseItem>();
                }

                GetTracksResponseItem[] trackUpdatedOther = null;
                if (recordingUpdated.Tracks.Track != null)
                {
                    trackUpdatedOther = (recordingUpdated.Tracks.Track.Where(tr => tr.TrackToken != trackToken)).ToArray <GetTracksResponseItem>();
                }

                if (trackInitialOther != null && trackInitialOther.Length == 0)
                {
                    trackInitialOther = null;
                }

                if (trackUpdatedOther != null && trackUpdatedOther.Length == 0)
                {
                    trackUpdatedOther = null;
                }

                CheckTrackListChanged(trackInitialOther, trackUpdatedOther,
                                      string.Format("Check that initial track list of recording (token = {0}) wasn't changed", recordingInitial.RecordingToken));

                // check that all other recordings have the same parameters value
                // as before creating a track
                GetRecordingsResponseItem[] recordingsInitialOther = null;
                if (recordingsInitial != null)
                {
                    recordingsInitialOther = (recordingsInitial.Where(rec => rec.RecordingToken != recordingToken)).ToArray <GetRecordingsResponseItem>();
                }

                GetRecordingsResponseItem[] recordingsUpdatedOther = null;
                if (recordingsUpdated != null)
                {
                    recordingsUpdatedOther = (recordingsUpdated.Where(rec => rec.RecordingToken != recordingToken)).ToArray <GetRecordingsResponseItem>();
                }

                if (recordingsInitialOther != null && recordingsInitialOther.Length == 0)
                {
                    recordingsInitialOther = null;
                }

                if (recordingsUpdatedOther != null && recordingsUpdatedOther.Length == 0)
                {
                    recordingsUpdatedOther = null;
                }

                // check that after CreateTrack
                // all tracks of all  other recordings are the same
                CheckTrackListChanged_AllRecordings(recordingsInitialOther, recordingsUpdatedOther,
                                                    "Check that initial track list of other existing recordings wasn't changed after CreateTrack");

                // delete track
                DeleteTrack(recordingToken, trackToken);
                isTrackCreated = false;

                // get updated recordings (after DeleteTrack)
                GetRecordingsResponseItem[] recordingsUpdated2 = GetRecordings();
                Assert(recordingsUpdated2 != null, "Recording list is empty", "Check that recording list is not empty");

                // check that deleted track token is no longer presented in selected recording (from updated track list after deletion)
                GetRecordingsResponseItem recordingUpdated2 = recordingsUpdated2.FirstOrDefault(rec => rec.RecordingToken == recordingToken);
                Assert(recordingUpdated2 != null, "Recording is not found",
                       string.Format("Check that recording (token = {0}) exists in updated recording list", recordingToken));

                GetTracksResponseItem track3 = null;
                if (recordingUpdated2.Tracks.Track != null)
                {
                    track3 = recordingUpdated2.Tracks.Track.FirstOrDefault(t => t.TrackToken == trackToken);
                }
                Assert(track3 == null,
                       String.Format("Track (token = {0}) is still presented in recording (token = {1})", trackToken, recordingToken),
                       String.Format("Check that deleted track (token = {0}) is no longer presented in recording (token = {1})", trackToken, recordingToken));

                // check that before CreateTrack all other tracks in selected recording
                // have the same parameters as after DeleteTrack
                CheckTrackListChanged(recordingInitial.Tracks.Track, recordingUpdated2.Tracks.Track,
                                      string.Format("Check that initial track list of recording (token = {0}) wasn't changed", recordingInitial.RecordingToken));

                // check that afteer CreateTrack + DeleteTrack
                // all tracks of all recordings are the same
                CheckTrackListChanged_AllRecordings(recordingsInitial, recordingsUpdated2,
                                                    "Check that initial track list of existing recordings wasn't changed");
            }, () =>
            {
                if (isTrackCreated || isRecordingCreated || isTrackDeleted)
                {
                    LogTestEvent(string.Format("Restoring the initial settings...{0}", Environment.NewLine));
                }

                // reverting changes made during test
                if (isTrackCreated && !string.IsNullOrEmpty(trackToken))
                {
                    DeleteTrack(recordingToken, trackToken);
                }

                // reverting changes made during A.14
                if (isRecordingCreated && !string.IsNullOrEmpty(recordingToken))
                {
                    DeleteRecording(recordingToken);
                }

                // reverting changes made during A.14
                if (isTrackDeleted && !string.IsNullOrEmpty(recordingToken) && deletedTrackConf != null)
                {
                    CreateTrack(recordingToken, deletedTrackConf);
                }
            });
        }