public void TestImageDocumentFormat() { GlobalOptions options = MongoDbPopulatorTestHelper.GetNewMongoDbPopulatorOptions(); options.MongoDbPopulatorOptions.MongoDbFlushTime = int.MaxValue / 1000; string collectionName = MongoDbPopulatorTestHelper.GetCollectionNameForTest("TestImageDocumentFormat"); var testAdapter = new MongoDbAdapter("TestImageDocumentFormat", options.MongoDatabases.DicomStoreOptions, collectionName); var callbackUsed = false; Action <Exception> exceptionCallback = (exception) => { callbackUsed = true; }; var processor = new ImageMessageProcessor(options.MongoDbPopulatorOptions, testAdapter, 1, exceptionCallback) { Model = Mock.Of <IModel>() }; var header = new MessageHeader(); // Max queue size set to 1 so will immediately process this processor.AddToWriteQueue(_helper.TestImageMessage, header, 1); Assert.False(callbackUsed); Assert.True(processor.AckCount == 1); IMongoCollection <BsonDocument> imageCollection = _helper.TestDatabase.GetCollection <BsonDocument>(collectionName + "_SR"); Assert.True(imageCollection.CountDocuments(new BsonDocument()) == 1); BsonDocument doc = imageCollection.FindAsync(FilterDefinition <BsonDocument> .Empty).Result.Single(); Validate(_helper.TestImageMessage, header, doc); }
public void TestSeriesDocumentFormat() { GlobalOptions options = MongoDbPopulatorTestHelper.GetNewMongoDbPopulatorOptions(); options.MongoDbPopulatorOptions.MongoDbFlushTime = int.MaxValue; string collectionName = MongoDbPopulatorTestHelper.GetCollectionNameForTest("TestSeriesDocumentFormat"); var testAdapter = new MongoDbAdapter("TestSeriesDocumentFormat", options.MongoDatabases.DicomStoreOptions, collectionName); var callbackUsed = false; Action <Exception> exceptionCallback = (exception) => { callbackUsed = true; }; var processor = new SeriesMessageProcessor(options.MongoDbPopulatorOptions, testAdapter, 1, exceptionCallback) { Model = Mock.Of <IModel>() }; // Max queue size set to 1 so will immediately process this processor.AddToWriteQueue(_helper.TestSeriesMessage, new MessageHeader(), 1); Assert.False(callbackUsed); Assert.True(processor.AckCount == 1); IMongoCollection <BsonDocument> collection = _helper.TestDatabase.GetCollection <BsonDocument>(collectionName); Assert.True(collection.CountDocuments(new BsonDocument()) == 1); BsonDocument document = collection.Find(_ => true).ToList()[0]; Validate(_helper.TestSeriesMessage, document); }
public void TestBasicWrite() { string collectionName = MongoDbPopulatorTestHelper.GetCollectionNameForTest("TestBasicWrite"); var adapter = new MongoDbAdapter("TestApplication", _helper.Globals.MongoDatabases.DicomStoreOptions, collectionName); var testDoc = new BsonDocument { { "hello", "world" } }; WriteResult result = adapter.WriteMany(new List <BsonDocument> { testDoc }); Assert.True(result == WriteResult.Success); Assert.True(_helper.TestDatabase.GetCollection <BsonDocument>(collectionName) .CountDocuments(new BsonDocument()) == 1); BsonDocument doc = _helper.TestDatabase.GetCollection <BsonDocument>(collectionName).Find(_ => true).ToList()[0]; Assert.True(doc.Equals(testDoc)); var toWrite = new List <BsonDocument>(); for (var i = 0; i < 99; i++) { toWrite.Add(new BsonDocument { { "hello", i } }); } result = adapter.WriteMany(toWrite); Assert.True(result == WriteResult.Success); Assert.True(_helper.TestDatabase.GetCollection <BsonDocument>(collectionName) .CountDocuments(new BsonDocument()) == 100); }
public void TestPopulatorBasic(int nMessages) { // Arrange string currentCollectionName = MongoDbPopulatorTestHelper.GetCollectionNameForTest(string.Format("TestPopulatorBasic({0})", nMessages)); _helper.Globals.MongoDbPopulatorOptions.SeriesCollection = currentCollectionName; var tester = new MicroserviceTester(_helper.Globals.RabbitOptions, _helper.Globals.MongoDbPopulatorOptions.SeriesQueueConsumerOptions, _helper.Globals.MongoDbPopulatorOptions.ImageQueueConsumerOptions); var host = new MongoDbPopulatorHost(_helper.Globals); host.Start(); using (var timeline = new TestTimeline(tester)) { var ds = new DicomDataset { new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, "1.2.3.4") }; var message = new SeriesMessage { NationalPACSAccessionNumber = "NationalPACSAccessionNumber-test", DirectoryPath = "DirectoryPath-test", StudyInstanceUID = "StudyInstanceUID-test", SeriesInstanceUID = "SeriesInstanceUID-test", ImagesInSeries = 123, DicomDataset = DicomTypeTranslater.SerializeDatasetToJson(ds) }; // Act for (var i = 0; i < nMessages; i++) { timeline.SendMessage(_helper.Globals.MongoDbPopulatorOptions.SeriesQueueConsumerOptions, message); } timeline.StartTimeline(); var timeout = 30000; const int stepSize = 500; if (Debugger.IsAttached) { timeout = int.MaxValue; } var nWritten = 0L; while (nWritten < nMessages && timeout > 0) { nWritten = _helper.TestDatabase.GetCollection <BsonDocument>(currentCollectionName).CountDocuments(new BsonDocument()); Thread.Sleep(stepSize); timeout -= stepSize; } // Assert if (timeout <= 0) { Assert.Fail("Failed to process expected number of messages within the timeout"); } host.Stop("Test end"); tester.Shutdown(); } }