Пример #1
0
        protected override void Test(ArchiveExtraction archive)
        {
            var structure = SerializeUtil.DeserializeFromFile <addml>(archive.GetStructureDescriptionFileName());

            foreach (var entry in structure.dataset[0].dataObjects.dataObject)
            {
                foreach (var currentObject in entry.dataObjects.dataObject)
                {
                    foreach (var fileProperty in currentObject.properties.Where(s => s.name == "file"))
                    {
                        var filename = archive.WorkingDirectory + Path.DirectorySeparatorChar + GetFilenameFromProperty(fileProperty);

                        var checksumAlgorithm = GetChecksumAlgorithmFromProperty(fileProperty);

                        var checksumValue = GetChecksumValueFromProperty(fileProperty);

                        var generatedChecksum = GenerateChecksumForFile(filename, checksumAlgorithm);

                        var checksumsAreEqual = string.Equals(generatedChecksum, checksumValue, StringComparison.InvariantCultureIgnoreCase);

                        var testResult = CreateTestResult(checksumsAreEqual, generatedChecksum, checksumValue, filename, checksumAlgorithm);
                        TestResults.Add(testResult);
                    }
                }
            }
        }
Пример #2
0
        public void ShouldReturnContentDescriptionFileNameForNoark5()
        {
            var workingDirectory  = "c:\\temp";
            var archiveExtraction = new ArchiveExtraction("uuid", workingDirectory);

            archiveExtraction.GetContentDescriptionFileName().Should().Be($"{workingDirectory}{Path.DirectorySeparatorChar}arkivstruktur.xml");
        }
Пример #3
0
        public void ShouldReturnStructureDescriptionFileNameForNoark4()
        {
            var workingDirectory  = "c:\\temp";
            var archiveExtraction = new ArchiveExtraction("uuid", workingDirectory);

            archiveExtraction.ArchiveType = ArchiveType.Noark4;
            archiveExtraction.GetStructureDescriptionFileName().Should().Be($"{workingDirectory}{Path.DirectorySeparatorChar}addml.xml");
        }
Пример #4
0
        public List <BaseTest> GetTestsForArchiveExtraction(ArchiveExtraction archiveExtraction)
        {
            if (archiveExtraction.ArchiveType.Equals(ArchiveType.Noark5))
            {
                return(new Noark5TestProvider().GetTests());
            }

            return(new List <BaseTest>());
        }
Пример #5
0
        private static TestResults ValidateArchive(string workingDirectory)
        {
            var archiveExtraction = new ArchiveExtraction("uuid", workingDirectory);

            archiveExtraction.ArchiveType = ArchiveType.Noark5;

            var testResults = new ValidateXmlWithSchema().RunTest(archiveExtraction);

            return(testResults);
        }
Пример #6
0
        public ArchiveExtraction ReadFromFile(string archiveFileName, string metadataFileName)
        {
            Log.Information("Reading archive from file: " + archiveFileName);
            Log.Information("Reading archive metadata from file: " + metadataFileName);

            ArchiveExtraction archiveExtraction = _archiveExtractor.Extract(archiveFileName);

            archiveExtraction.ArchiveType = _archiveIdentifier.Identify(metadataFileName);
            return(archiveExtraction);
        }
Пример #7
0
 protected override void Test(ArchiveExtraction archive)
 {
     try
     {
         ValidateXmlDocument(archive.GetStructureDescriptionFileName(), GetPathToAddmlSchema());
         TestSuccess($"Validated XML file {archive.GetStructureDescriptionFileName()} with ADDML schema.");
     }
     catch (Exception e)
     {
         TestError($"Error while validating xml [{archive.GetStructureDescriptionFileName()}] with ADDML schema: {e.Message}");
     }
 }
Пример #8
0
 protected override void Test(ArchiveExtraction archive)
 {
     using (var reader = XmlReader.Create(archive.GetContentDescriptionFileName()))
     {
         int counter = 0;
         while (reader.ReadToNextSibling("arkiv"))
         {
             counter++;
         }
         Console.WriteLine("Number of archives: " + counter);
     }
 }
Пример #9
0
        public TestResults RunTest(ArchiveExtraction archive)
        {
            TestResults = new TestResults(this.GetType().FullName, TestType);

            var start = DateTime.Now;

            Test(archive);
            var stop     = DateTime.Now;
            var duration = stop.Subtract(start).TotalMilliseconds;

            Console.WriteLine("Duration: " + duration); // TODO: use logging mechanism instead

            TestResults.TestDuration = duration;

            return(TestResults);
        }
Пример #10
0
        public void ShouldValidateThatAllChecksumsAreCorrect()
        {
            string workingDirectory  = $"{AppDomain.CurrentDomain.BaseDirectory}\\TestData\\Noark5\\StructureChecksums\\correct";
            var    archiveExtraction = new ArchiveExtraction("uuid", workingDirectory);

            archiveExtraction.ArchiveType = ArchiveType.Noark5;

            var testResults = new ValidateAddmlDataobjectsChecksums().RunTest(archiveExtraction);

            foreach (var testResult in testResults.Results)
            {
                _output.WriteLine(testResult.Message);
            }

            testResults.Results.Count.Should().Be(2);

            testResults.IsSuccess().Should().BeTrue();
        }
        private void btnStart_Click(object sender, RoutedEventArgs e)
        {
            txtResult.Text = "Laster inn arkiv....";

            var builder = new ContainerBuilder();

            builder.RegisterModule(new ArkadeAutofacModule());
            var container = builder.Build();

            using (container.BeginLifetimeScope())
            {
                ArchiveExtractionReader archiveExtractionReader = container.Resolve <ArchiveExtractionReader>();

                ArchiveExtraction archiveExtraction = archiveExtractionReader.ReadFromFile(txtArchiveFileName.Text, txtMetadataFileName.Text);

                txtResult.Text = $"Uuid: {archiveExtraction.Uuid}\n" +
                                 $"WorkingDirectory: {archiveExtraction.WorkingDirectory}\n" +
                                 $"ArchiveType: {archiveExtraction.ArchiveType}";
            }
        }
Пример #12
0
        static void Main(string[] args)
        {
            string archiveFileName  = @"C:\Dropbox (Arkitektum AS)\Arkade5 - Testdata\Testdata\n5-aclie-in-wonderland-komplett.tar";
            string metadataFileName = @"C:\dev\src\arkade\src\Arkivverket.Arkade.Test\TestData\noark5-info.xml";

            if (args.Length != 0)
            {
                archiveFileName  = args[0];
                metadataFileName = args[1];
            }

            var builder = new ContainerBuilder();

            builder.RegisterModule(new ArkadeAutofacModule());
            var container = builder.Build();

            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Debug()
                         .WriteTo.ColoredConsole(outputTemplate: "{Timestamp:yyyy-MM-ddTHH:mm:ss.fff} {SourceContext} [{Level}] {Message}{NewLine}{Exception}")
                         .CreateLogger();

            using (container.BeginLifetimeScope())
            {
                ArchiveExtractionReader archiveExtractionReader = container.Resolve <ArchiveExtractionReader>();

                ArchiveExtraction archiveExtraction = archiveExtractionReader.ReadFromFile(archiveFileName, metadataFileName);
                Console.WriteLine($"Reading from archive: {archiveFileName}");
                Console.WriteLine($"Uuid: {archiveExtraction.Uuid}");
                Console.WriteLine($"WorkingDirectory: {archiveExtraction.WorkingDirectory}");
                Console.WriteLine($"ArchiveType: {archiveExtraction.ArchiveType}");


                List <TestResults> testResults = new TestEngine().RunTestsOnArchive(archiveExtraction);
                foreach (TestResults results in testResults)
                {
                    Console.WriteLine($"Test: {results.TestName}, duration={results.TestDuration}, success={results.IsSuccess()}");
                }
            }
        }
Пример #13
0
 protected override void Test(ArchiveExtraction archive)
 {
     new Common.CheckWellFormedXml().Test(archive.GetStructureDescriptionFileName());
 }
Пример #14
0
 protected abstract void Test(ArchiveExtraction archive);