Пример #1
0
        private TestSession NewSession(WorkingDirectory workingDirectory, ArchiveType archiveType, Uuid uuid)
        {
            Archive archive = new Archive(archiveType, uuid, workingDirectory);

            workingDirectory.CopyAddmlFileToAdministrativeMetadata();

            ConvertNoarkihToAddmlIfNoark4(archive);

            var testSession = new TestSession(archive);

            if (archiveType == ArchiveType.Noark5)
            {
                return(testSession);
            }

            ArchiveXmlFile addmlFile = archive.AddmlXmlUnit.File;

            try
            {
                AddmlInfo addml = AddmlUtil.ReadFromFile(addmlFile.FullName);

                var addmlDefinitionParser = new AddmlDefinitionParser(addml, workingDirectory, _statusEventHandler);

                testSession.AddmlDefinition = addmlDefinitionParser.GetAddmlDefinition();
            }
            catch (Exception exception)
            {
                var message = "Reading file " + addmlFile.Name + " failed: " + exception.Message;
                _log.Warning(exception, message);
                _statusEventHandler.RaiseEventOperationMessage(null, message, OperationMessageStatus.Error);
            }

            return(testSession);
        }
Пример #2
0
        private List <INoark5Test> RunContentTests(Archive archive)
        {
            List <INoark5Test> contentTests = _testProvider.GetContentTests(archive);

            SubscribeTestsToReadElementEvent(contentTests);

            ArchiveXmlFile archiveStructureFile = archive.GetArchiveXmlFile(ArkadeConstants.ArkivstrukturXmlFileName);

            using (var reader = XmlReader.Create(archiveStructureFile.AsStream()))
            {
                RaiseEventStartParsingFile();

                var path = new Stack <string>();

                while (ReadNextNode(reader))
                {
                    if (reader.IsEmptyElement)
                    {
                        continue;
                    }

                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        path.Push(reader.LocalName);
                        RaiseReadStartElementEvent(CreateReadElementEventArgs(reader, path));
                        break;

                    case XmlNodeType.Attribute:
                        RaiseReadAttributeEvent(CreateReadElementEventArgs(reader, path));
                        break;

                    case XmlNodeType.Text:
                        RaiseReadElementValueEvent(CreateReadElementEventArgs(reader, path));
                        break;

                    case XmlNodeType.EndElement:
                        path.Pop();
                        RaiseReadEndElementEvent(CreateReadElementEventArgs(reader, path));
                        _statusEventHandler.RaiseEventRecordProcessingStopped();
                        break;

                    case XmlNodeType.XmlDeclaration:
                    case XmlNodeType.ProcessingInstruction:
                    case XmlNodeType.Comment:
                    case XmlNodeType.Whitespace:
                        break;
                    }
                }
                RaiseEventFinishedParsingFile();
            }
            return(contentTests);
        }
Пример #3
0
        public N5_59_NumberOfJournalPosts(Archive archive)
        {
            ArchiveXmlFile publicJournal  = archive.GetArchiveXmlFile(ArkadeConstants.PublicJournalXmlFileName);
            ArchiveXmlFile runningJournal = archive.GetArchiveXmlFile(ArkadeConstants.RunningJournalXmlFileName);

            try
            {
                _publicJournalNumberOfJournalPosts  = GetPostCountFromJournal(publicJournal);
                _runningJournalNumberOfJournalPosts = GetPostCountFromJournal(runningJournal);
            }
            catch (Exception)
            {
                _testResults.Add(new TestResult(ResultType.Error, Location.Archive,
                                                Noark5Messages.NumberOfJournalPostsMessage_CouldNotReadFromJournals));
            }

            _periodSeparationIsSharp = Noark5TestHelper.PeriodSeparationIsSharp(archive);
        }
Пример #4
0
        public static JournalHead Behead(ArchiveXmlFile journalXmlFile)
        {
            var xmlTextReader = new XmlTextReader(journalXmlFile.FullName)
            {
                Namespaces = false
            };

            while (!xmlTextReader.Name.Equals("journalhode"))
            {
                xmlTextReader.Read();
            }

            string journalHeadXml = xmlTextReader.ReadOuterXml();

            xmlTextReader.Close();

            JournalHead journalHead = SerializeUtil.DeserializeFromString <JournalHead>(journalHeadXml);

            return(journalHead);
        }
Пример #5
0
        private static int GetPostCountFromJournal(ArchiveXmlFile journalFile)
        {
            JournalHead journalHead = JournalGuillotine.Behead(journalFile);

            return(journalHead.NumberOfJournalposts);
        }
        protected override List <TestResult> GetTestResults()
        {
            var testResults = new List <TestResult>();

            JournalHead headPublicJournal;
            JournalHead headRunningJournal;

            ArchiveXmlFile publicJournal  = _archive.GetArchiveXmlFile(ArkadeConstants.PublicJournalXmlFileName);
            ArchiveXmlFile runningJournal = _archive.GetArchiveXmlFile(ArkadeConstants.RunningJournalXmlFileName);

            try
            {
                headPublicJournal  = JournalGuillotine.Behead(publicJournal);
                headRunningJournal = JournalGuillotine.Behead(runningJournal);
            }
            catch
            {
                testResults.Add(new TestResult(
                                    ResultType.Error, new Location(string.Empty), Noark5Messages.CouldNotReadFromFiles)
                                );

                return(testResults);
            }

            var archiveDates = new StartAndEndDate(
                _registrationCreationDates.First(),
                _registrationCreationDates.Last()
                );
            var publicJournalDates = new StartAndEndDate(
                headPublicJournal.JournalStartDate,
                headPublicJournal.JournalEndDate
                );
            var runningJournalDates = new StartAndEndDate(
                headRunningJournal.JournalStartDate,
                headRunningJournal.JournalEndDate
                );

            testResults.AddRange(new[]
            {
                new TestResult(ResultType.Success, new Location(""), string.Format(
                                   Noark5Messages.ArchiveStartAndEndDateControlMessage_DatesArchive,
                                   archiveDates.StartDate(), archiveDates.EndDate()
                                   )),
                new TestResult(ResultType.Success, new Location(""), string.Format(
                                   Noark5Messages.ArchiveStartAndEndDateControlMessage_DatesPublicJournal,
                                   publicJournalDates.StartDate(), publicJournalDates.EndDate()
                                   )),
                new TestResult(ResultType.Success, new Location(""), string.Format(
                                   Noark5Messages.ArchiveStartAndEndDateControlMessage_DatesRunningJournal,
                                   runningJournalDates.StartDate(), runningJournalDates.EndDate()
                                   ))
            });

            if (!StartAndEndDate.Equals(publicJournalDates, runningJournalDates))
            {
                testResults.Add(new TestResult(ResultType.Error, new Location(""),
                                               Noark5Messages.ArchiveStartAndEndDateControlMessage_UnEqualJournalDates));
            }


            if (_periodSeparationIsSharp && !StartAndEndDate.Equals(archiveDates, publicJournalDates, runningJournalDates))
            {
                testResults.Add(new TestResult(ResultType.Error, new Location(""),
                                               Noark5Messages.ArchiveStartAndEndDateControlMessage_UnEqualJournalAndArchiveDates));
            }

            return(testResults);
        }
Пример #7
0
 public static T DeserializeFromFile <T>(ArchiveXmlFile archiveXmlFile)
 {
     return(DeserializeFromFile <T>(archiveXmlFile.FullName));
 }