Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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();
            }
        }