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); }
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); }
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); }
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); }
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); }
public static T DeserializeFromFile <T>(ArchiveXmlFile archiveXmlFile) { return(DeserializeFromFile <T>(archiveXmlFile.FullName)); }