public void TestExtractJobInfo_Equality() { Guid guid = Guid.NewGuid(); var info1 = new ExtractJobInfo( guid, _dateTimeProvider.UtcNow(), "1234", "test/directory", "KeyTag", 123, "MR", ExtractJobStatus.WaitingForCollectionInfo, isIdentifiableExtraction: true, isNoFilterExtraction: true ); var info2 = new ExtractJobInfo( guid, _dateTimeProvider.UtcNow(), "1234", "test/directory", "KeyTag", 123, "MR", ExtractJobStatus.WaitingForCollectionInfo, isIdentifiableExtraction: true, isNoFilterExtraction: true ); Assert.AreEqual(info1, info2); }
public void Equality() { var guid = Guid.NewGuid(); var info1 = new CompletedExtractJobInfo( guid, _dateTimeProvider.UtcNow(), _dateTimeProvider.UtcNow() + TimeSpan.FromHours(1), "1234", "test/directory", "KeyTag", 123, "MR", isIdentifiableExtraction: true, isNoFilterExtraction: true ); var info2 = new CompletedExtractJobInfo( guid, _dateTimeProvider.UtcNow(), _dateTimeProvider.UtcNow() + TimeSpan.FromHours(1), "1234", "test/directory", "KeyTag", 123, "MR", isIdentifiableExtraction: true, isNoFilterExtraction: true ); Assert.AreEqual(info1, info2); }
private static CompletedExtractJobInfo TestJobInfo( bool isIdentifiableExtraction = false, bool isNoFilterExtraction = false ) => new CompletedExtractJobInfo( Guid.NewGuid(), _dateTimeProvider.UtcNow(), _dateTimeProvider.UtcNow() + TimeSpan.FromHours(1), "1234", "extractions/test", "keyTag", 123, null, isIdentifiableExtraction, isNoFilterExtraction );
public void TestMongoExtractionMessageHeaderDoc_FromMessageHeader() { Guid guid = Guid.NewGuid(); Guid p1 = Guid.NewGuid(); Guid p2 = Guid.NewGuid(); const long unixTimeNow = 1234; var dateTimeProvider = new TestDateTimeProvider(); var header = new MessageHeader { MessageGuid = guid, ProducerExecutableName = "TestFromMessageHeader", ProducerProcessID = 1234, Parents = new[] { p1, p2 }, OriginalPublishTimestamp = unixTimeNow, }; MongoExtractionMessageHeaderDoc doc = MongoExtractionMessageHeaderDoc.FromMessageHeader(guid, header, dateTimeProvider); var expected = new MongoExtractionMessageHeaderDoc( guid, guid, "TestFromMessageHeader", 1234, DateTime.UnixEpoch + TimeSpan.FromSeconds(unixTimeNow), $"{p1}->{p2}", dateTimeProvider.UtcNow() ); Assert.AreEqual(expected, doc); }
public void TestPersistMessageToStoreImpl_ExtractionRequestInfoMessage() { Guid guid = Guid.NewGuid(); var testExtractionRequestInfoMessage = new ExtractionRequestInfoMessage { ExtractionJobIdentifier = guid, ProjectNumber = "1234-5678", ExtractionDirectory = "1234-5678/testExtract", JobSubmittedAt = _dateTimeProvider.UtcNow(), KeyTag = "StudyInstanceUID", KeyValueCount = 1, ExtractionModality = "CT", IsIdentifiableExtraction = true, IsNoFilterExtraction = true, }; var testHeader = new MessageHeader { MessageGuid = Guid.NewGuid(), OriginalPublishTimestamp = MessageHeader.UnixTime(_dateTimeProvider.UtcNow()), Parents = new[] { Guid.NewGuid(), }, ProducerExecutableName = "MongoExtractStoreTests", ProducerProcessID = 1234, }; var client = new TestMongoClient(); var store = new MongoExtractJobStore(client, ExtractionDatabaseName, _dateTimeProvider); store.PersistMessageToStore(testExtractionRequestInfoMessage, testHeader); Dictionary <Guid, MongoExtractJobDoc> docs = client.ExtractionDatabase.InProgressCollection.Documents; Assert.AreEqual(docs.Count, 1); MongoExtractJobDoc extractJob = docs.Values.ToList()[0]; var expected = new MongoExtractJobDoc( guid, MongoExtractionMessageHeaderDoc.FromMessageHeader(guid, testHeader, _dateTimeProvider), "1234-5678", ExtractJobStatus.WaitingForCollectionInfo, "1234-5678/testExtract", _dateTimeProvider.UtcNow(), "StudyInstanceUID", 1, "CT", isIdentifiableExtraction: true, isNoFilterExtraction: true, null); Assert.AreEqual(expected, extractJob); }
public void Integration_HappyPath(ReportFormat reportFormat) { // Test messages: // - series-1 // - series-1-anon-1.dcm -> valid using var pf = new PathFixtures($"Integration_HappyPath_{reportFormat}"); var jobId = Guid.NewGuid(); var testExtractionRequestInfoMessage = new ExtractionRequestInfoMessage { JobSubmittedAt = _dateTimeProvider.UtcNow(), ProjectNumber = "testProj1", ExtractionJobIdentifier = jobId, ExtractionDirectory = pf.ProjExtractDirRelative, KeyTag = "SeriesInstanceUID", KeyValueCount = 1, }; var testExtractFileCollectionInfoMessage = new ExtractFileCollectionInfoMessage { JobSubmittedAt = _dateTimeProvider.UtcNow(), ProjectNumber = "testProj1", ExtractionJobIdentifier = jobId, ExtractionDirectory = pf.ProjExtractDirRelative, ExtractFileMessagesDispatched = new JsonCompatibleDictionary <MessageHeader, string> { { new MessageHeader(), "series-1-anon-1.dcm" }, }, RejectionReasons = new Dictionary <string, int> { { "rejected - blah", 1 }, }, KeyValue = "series-1", }; var testIsIdentifiableMessage = new ExtractedFileVerificationMessage { JobSubmittedAt = _dateTimeProvider.UtcNow(), OutputFilePath = "series-1-anon-1.dcm", ProjectNumber = "testProj1", ExtractionJobIdentifier = jobId, ExtractionDirectory = pf.ProjExtractDirRelative, IsIdentifiable = false, Report = "[]", DicomFilePath = "series-1-orig-1.dcm", }; GlobalOptions globals = new GlobalOptionsFactory().Load(); VerifyReports( globals, pf, reportFormat, new[] { new Tuple <ConsumerOptions, IMessage>(globals.CohortPackagerOptions.ExtractRequestInfoOptions, testExtractionRequestInfoMessage), new Tuple <ConsumerOptions, IMessage>(globals.CohortPackagerOptions.FileCollectionInfoOptions, testExtractFileCollectionInfoMessage), new Tuple <ConsumerOptions, IMessage>(globals.CohortPackagerOptions.VerificationStatusOptions, testIsIdentifiableMessage), } ); }