Mercurial > hg > orthanc-databases
diff Framework/Plugins/IndexUnitTests.h @ 226:a4918d57435c
DatabaseManager doesn't IDatabaseFactory anymore
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 02 Apr 2021 19:23:36 +0200 |
parents | 94c9908e6aca |
children | e9ba888f371b |
line wrap: on
line diff
--- a/Framework/Plugins/IndexUnitTests.h Thu Apr 01 19:18:19 2021 +0200 +++ b/Framework/Plugins/IndexUnitTests.h Fri Apr 02 19:23:36 2021 +0200 @@ -182,128 +182,127 @@ db.SetOutputFactory(new DatabaseBackendAdapterV2::Factory(&context, NULL)); - DatabaseManager manager(db.CreateDatabaseFactory()); - manager.Open(); + std::unique_ptr<DatabaseManager> manager(IndexBackend::CreateSingleDatabaseManager(db)); std::unique_ptr<IDatabaseBackendOutput> output(db.CreateOutput()); std::string s; - ASSERT_TRUE(db.LookupGlobalProperty(s, manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseSchemaVersion)); + ASSERT_TRUE(db.LookupGlobalProperty(s, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseSchemaVersion)); ASSERT_EQ("6", s); - ASSERT_FALSE(db.LookupGlobalProperty(s, manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_AnonymizationSequence)); - db.SetGlobalProperty(manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_AnonymizationSequence, "Hello"); - ASSERT_TRUE(db.LookupGlobalProperty(s, manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_AnonymizationSequence)); + ASSERT_FALSE(db.LookupGlobalProperty(s, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_AnonymizationSequence)); + db.SetGlobalProperty(*manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_AnonymizationSequence, "Hello"); + ASSERT_TRUE(db.LookupGlobalProperty(s, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_AnonymizationSequence)); ASSERT_EQ("Hello", s); - db.SetGlobalProperty(manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_AnonymizationSequence, "HelloWorld"); - ASSERT_TRUE(db.LookupGlobalProperty(s, manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_AnonymizationSequence)); + db.SetGlobalProperty(*manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_AnonymizationSequence, "HelloWorld"); + ASSERT_TRUE(db.LookupGlobalProperty(s, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_AnonymizationSequence)); ASSERT_EQ("HelloWorld", s); - int64_t a = db.CreateResource(manager, "study", OrthancPluginResourceType_Study); - ASSERT_TRUE(db.IsExistingResource(manager, a)); - ASSERT_FALSE(db.IsExistingResource(manager, a + 1)); + int64_t a = db.CreateResource(*manager, "study", OrthancPluginResourceType_Study); + ASSERT_TRUE(db.IsExistingResource(*manager, a)); + ASSERT_FALSE(db.IsExistingResource(*manager, a + 1)); int64_t b; OrthancPluginResourceType t; - ASSERT_FALSE(db.LookupResource(b, t, manager, "world")); - ASSERT_TRUE(db.LookupResource(b, t, manager, "study")); + ASSERT_FALSE(db.LookupResource(b, t, *manager, "world")); + ASSERT_TRUE(db.LookupResource(b, t, *manager, "study")); ASSERT_EQ(a, b); ASSERT_EQ(OrthancPluginResourceType_Study, t); - b = db.CreateResource(manager, "series", OrthancPluginResourceType_Series); + b = db.CreateResource(*manager, "series", OrthancPluginResourceType_Series); ASSERT_NE(a, b); - ASSERT_EQ("study", db.GetPublicId(manager, a)); - ASSERT_EQ("series", db.GetPublicId(manager, b)); - ASSERT_EQ(OrthancPluginResourceType_Study, db.GetResourceType(manager, a)); - ASSERT_EQ(OrthancPluginResourceType_Series, db.GetResourceType(manager, b)); + ASSERT_EQ("study", db.GetPublicId(*manager, a)); + ASSERT_EQ("series", db.GetPublicId(*manager, b)); + ASSERT_EQ(OrthancPluginResourceType_Study, db.GetResourceType(*manager, a)); + ASSERT_EQ(OrthancPluginResourceType_Series, db.GetResourceType(*manager, b)); - db.AttachChild(manager, a, b); + db.AttachChild(*manager, a, b); int64_t c; - ASSERT_FALSE(db.LookupParent(c, manager, a)); - ASSERT_TRUE(db.LookupParent(c, manager, b)); + ASSERT_FALSE(db.LookupParent(c, *manager, a)); + ASSERT_TRUE(db.LookupParent(c, *manager, b)); ASSERT_EQ(a, c); - c = db.CreateResource(manager, "series2", OrthancPluginResourceType_Series); - db.AttachChild(manager, a, c); + c = db.CreateResource(*manager, "series2", OrthancPluginResourceType_Series); + db.AttachChild(*manager, a, c); - ASSERT_EQ(3u, db.GetAllResourcesCount(manager)); - ASSERT_EQ(0u, db.GetResourcesCount(manager, OrthancPluginResourceType_Patient)); - ASSERT_EQ(1u, db.GetResourcesCount(manager, OrthancPluginResourceType_Study)); - ASSERT_EQ(2u, db.GetResourcesCount(manager, OrthancPluginResourceType_Series)); + ASSERT_EQ(3u, db.GetAllResourcesCount(*manager)); + ASSERT_EQ(0u, db.GetResourcesCount(*manager, OrthancPluginResourceType_Patient)); + ASSERT_EQ(1u, db.GetResourcesCount(*manager, OrthancPluginResourceType_Study)); + ASSERT_EQ(2u, db.GetResourcesCount(*manager, OrthancPluginResourceType_Series)); - ASSERT_FALSE(db.GetParentPublicId(s, manager, a)); - ASSERT_TRUE(db.GetParentPublicId(s, manager, b)); ASSERT_EQ("study", s); - ASSERT_TRUE(db.GetParentPublicId(s, manager, c)); ASSERT_EQ("study", s); + ASSERT_FALSE(db.GetParentPublicId(s, *manager, a)); + ASSERT_TRUE(db.GetParentPublicId(s, *manager, b)); ASSERT_EQ("study", s); + ASSERT_TRUE(db.GetParentPublicId(s, *manager, c)); ASSERT_EQ("study", s); std::list<std::string> children; - db.GetChildren(children, manager, a); + db.GetChildren(children, *manager, a); ASSERT_EQ(2u, children.size()); - db.GetChildren(children, manager, b); + db.GetChildren(children, *manager, b); ASSERT_EQ(0u, children.size()); - db.GetChildren(children, manager, c); + db.GetChildren(children, *manager, c); ASSERT_EQ(0u, children.size()); std::list<std::string> cp; - db.GetChildrenPublicId(cp, manager, a); + db.GetChildrenPublicId(cp, *manager, a); ASSERT_EQ(2u, cp.size()); ASSERT_TRUE(cp.front() == "series" || cp.front() == "series2"); ASSERT_TRUE(cp.back() == "series" || cp.back() == "series2"); ASSERT_NE(cp.front(), cp.back()); std::list<std::string> pub; - db.GetAllPublicIds(pub, manager, OrthancPluginResourceType_Patient); + db.GetAllPublicIds(pub, *manager, OrthancPluginResourceType_Patient); ASSERT_EQ(0u, pub.size()); - db.GetAllPublicIds(pub, manager, OrthancPluginResourceType_Study); + db.GetAllPublicIds(pub, *manager, OrthancPluginResourceType_Study); ASSERT_EQ(1u, pub.size()); ASSERT_EQ("study", pub.front()); - db.GetAllPublicIds(pub, manager, OrthancPluginResourceType_Series); + db.GetAllPublicIds(pub, *manager, OrthancPluginResourceType_Series); ASSERT_EQ(2u, pub.size()); ASSERT_TRUE(pub.front() == "series" || pub.front() == "series2"); ASSERT_TRUE(pub.back() == "series" || pub.back() == "series2"); ASSERT_NE(pub.front(), pub.back()); std::list<int64_t> ci; - db.GetChildrenInternalId(ci, manager, a); + db.GetChildrenInternalId(ci, *manager, a); ASSERT_EQ(2u, ci.size()); ASSERT_TRUE(ci.front() == b || ci.front() == c); ASSERT_TRUE(ci.back() == b || ci.back() == c); ASSERT_NE(ci.front(), ci.back()); - db.SetMetadata(manager, a, Orthanc::MetadataType_ModifiedFrom, "modified"); - db.SetMetadata(manager, a, Orthanc::MetadataType_LastUpdate, "update2"); - ASSERT_FALSE(db.LookupMetadata(s, manager, b, Orthanc::MetadataType_LastUpdate)); - ASSERT_TRUE(db.LookupMetadata(s, manager, a, Orthanc::MetadataType_LastUpdate)); + db.SetMetadata(*manager, a, Orthanc::MetadataType_ModifiedFrom, "modified"); + db.SetMetadata(*manager, a, Orthanc::MetadataType_LastUpdate, "update2"); + ASSERT_FALSE(db.LookupMetadata(s, *manager, b, Orthanc::MetadataType_LastUpdate)); + ASSERT_TRUE(db.LookupMetadata(s, *manager, a, Orthanc::MetadataType_LastUpdate)); ASSERT_EQ("update2", s); - db.SetMetadata(manager, a, Orthanc::MetadataType_LastUpdate, "update"); - ASSERT_TRUE(db.LookupMetadata(s, manager, a, Orthanc::MetadataType_LastUpdate)); + db.SetMetadata(*manager, a, Orthanc::MetadataType_LastUpdate, "update"); + ASSERT_TRUE(db.LookupMetadata(s, *manager, a, Orthanc::MetadataType_LastUpdate)); ASSERT_EQ("update", s); std::list<int32_t> md; - db.ListAvailableMetadata(md, manager, a); + db.ListAvailableMetadata(md, *manager, a); ASSERT_EQ(2u, md.size()); ASSERT_TRUE(md.front() == Orthanc::MetadataType_ModifiedFrom || md.back() == Orthanc::MetadataType_ModifiedFrom); ASSERT_TRUE(md.front() == Orthanc::MetadataType_LastUpdate || md.back() == Orthanc::MetadataType_LastUpdate); std::string mdd; - ASSERT_TRUE(db.LookupMetadata(mdd, manager, a, Orthanc::MetadataType_ModifiedFrom)); + ASSERT_TRUE(db.LookupMetadata(mdd, *manager, a, Orthanc::MetadataType_ModifiedFrom)); ASSERT_EQ("modified", mdd); - ASSERT_TRUE(db.LookupMetadata(mdd, manager, a, Orthanc::MetadataType_LastUpdate)); + ASSERT_TRUE(db.LookupMetadata(mdd, *manager, a, Orthanc::MetadataType_LastUpdate)); ASSERT_EQ("update", mdd); - db.ListAvailableMetadata(md, manager, b); + db.ListAvailableMetadata(md, *manager, b); ASSERT_EQ(0u, md.size()); - db.DeleteMetadata(manager, a, Orthanc::MetadataType_LastUpdate); - db.DeleteMetadata(manager, b, Orthanc::MetadataType_LastUpdate); - ASSERT_FALSE(db.LookupMetadata(s, manager, a, Orthanc::MetadataType_LastUpdate)); + db.DeleteMetadata(*manager, a, Orthanc::MetadataType_LastUpdate); + db.DeleteMetadata(*manager, b, Orthanc::MetadataType_LastUpdate); + ASSERT_FALSE(db.LookupMetadata(s, *manager, a, Orthanc::MetadataType_LastUpdate)); - db.ListAvailableMetadata(md, manager, a); + db.ListAvailableMetadata(md, *manager, a); ASSERT_EQ(1u, md.size()); ASSERT_EQ(Orthanc::MetadataType_ModifiedFrom, md.front()); - ASSERT_EQ(0u, db.GetTotalCompressedSize(manager)); - ASSERT_EQ(0u, db.GetTotalUncompressedSize(manager)); + ASSERT_EQ(0u, db.GetTotalCompressedSize(*manager)); + ASSERT_EQ(0u, db.GetTotalUncompressedSize(*manager)); std::list<int32_t> fc; @@ -326,17 +325,17 @@ a2.compressedSize = 4242; a2.compressedHash = "md5_2"; - db.AddAttachment(manager, a, a1); - db.ListAvailableAttachments(fc, manager, a); + db.AddAttachment(*manager, a, a1); + db.ListAvailableAttachments(fc, *manager, a); ASSERT_EQ(1u, fc.size()); ASSERT_EQ(Orthanc::FileContentType_Dicom, fc.front()); - db.AddAttachment(manager, a, a2); - db.ListAvailableAttachments(fc, manager, a); + db.AddAttachment(*manager, a, a2); + db.ListAvailableAttachments(fc, *manager, a); ASSERT_EQ(2u, fc.size()); - ASSERT_FALSE(db.LookupAttachment(*output, manager, b, Orthanc::FileContentType_Dicom)); + ASSERT_FALSE(db.LookupAttachment(*output, *manager, b, Orthanc::FileContentType_Dicom)); - ASSERT_EQ(4284u, db.GetTotalCompressedSize(manager)); - ASSERT_EQ(4284u, db.GetTotalUncompressedSize(manager)); + ASSERT_EQ(4284u, db.GetTotalCompressedSize(*manager)); + ASSERT_EQ(4284u, db.GetTotalUncompressedSize(*manager)); expectedAttachment.reset(new OrthancPluginAttachment); expectedAttachment->uuid = "uuid1"; @@ -346,7 +345,7 @@ expectedAttachment->compressionType = Orthanc::CompressionType_None; expectedAttachment->compressedSize = 42; expectedAttachment->compressedHash = "md5_1"; - ASSERT_TRUE(db.LookupAttachment(*output, manager, a, Orthanc::FileContentType_Dicom)); + ASSERT_TRUE(db.LookupAttachment(*output, *manager, a, Orthanc::FileContentType_Dicom)); expectedAttachment.reset(new OrthancPluginAttachment); expectedAttachment->uuid = "uuid2"; @@ -356,21 +355,21 @@ expectedAttachment->compressionType = Orthanc::CompressionType_None; expectedAttachment->compressedSize = 4242; expectedAttachment->compressedHash = "md5_2"; - ASSERT_TRUE(db.LookupAttachment(*output, manager, a, Orthanc::FileContentType_DicomAsJson)); + ASSERT_TRUE(db.LookupAttachment(*output, *manager, a, Orthanc::FileContentType_DicomAsJson)); - db.ListAvailableAttachments(fc, manager, b); + db.ListAvailableAttachments(fc, *manager, b); ASSERT_EQ(0u, fc.size()); - db.DeleteAttachment(*output, manager, a, Orthanc::FileContentType_Dicom); - db.ListAvailableAttachments(fc, manager, a); + db.DeleteAttachment(*output, *manager, a, Orthanc::FileContentType_Dicom); + db.ListAvailableAttachments(fc, *manager, a); ASSERT_EQ(1u, fc.size()); ASSERT_EQ(Orthanc::FileContentType_DicomAsJson, fc.front()); - db.DeleteAttachment(*output, manager, a, Orthanc::FileContentType_DicomAsJson); - db.ListAvailableAttachments(fc, manager, a); + db.DeleteAttachment(*output, *manager, a, Orthanc::FileContentType_DicomAsJson); + db.ListAvailableAttachments(fc, *manager, a); ASSERT_EQ(0u, fc.size()); - db.SetIdentifierTag(manager, a, 0x0010, 0x0020, "patient"); - db.SetIdentifierTag(manager, a, 0x0020, 0x000d, "study"); + db.SetIdentifierTag(*manager, a, 0x0010, 0x0020, "patient"); + db.SetIdentifierTag(*manager, a, 0x0020, 0x000d, "study"); expectedDicomTags.clear(); expectedDicomTags.push_back(OrthancPluginDicomTag()); @@ -381,14 +380,14 @@ expectedDicomTags.back().group = 0x0020; expectedDicomTags.back().element = 0x000d; expectedDicomTags.back().value = "study"; - db.GetMainDicomTags(*output, manager, a); + db.GetMainDicomTags(*output, *manager, a); - db.LookupIdentifier(ci, manager, OrthancPluginResourceType_Study, 0x0010, 0x0020, + db.LookupIdentifier(ci, *manager, OrthancPluginResourceType_Study, 0x0010, 0x0020, OrthancPluginIdentifierConstraint_Equal, "patient"); ASSERT_EQ(1u, ci.size()); ASSERT_EQ(a, ci.front()); - db.LookupIdentifier(ci, manager, OrthancPluginResourceType_Study, 0x0010, 0x0020, + db.LookupIdentifier(ci, *manager, OrthancPluginResourceType_Study, 0x0010, 0x0020, OrthancPluginIdentifierConstraint_Equal, "study"); ASSERT_EQ(0u, ci.size()); @@ -403,67 +402,67 @@ exp.studyInstanceUid = "study"; exp.seriesInstanceUid = "series"; exp.sopInstanceUid = "instance"; - db.LogExportedResource(manager, exp); + db.LogExportedResource(*manager, exp); expectedExported.reset(new OrthancPluginExportedResource()); *expectedExported = exp; expectedExported->seq = 1; bool done; - db.GetExportedResources(*output, done, manager, 0, 10); + db.GetExportedResources(*output, done, *manager, 0, 10); - db.GetAllPublicIds(pub, manager, OrthancPluginResourceType_Patient); ASSERT_EQ(0u, pub.size()); - db.GetAllPublicIds(pub, manager, OrthancPluginResourceType_Study); ASSERT_EQ(1u, pub.size()); - db.GetAllPublicIds(pub, manager, OrthancPluginResourceType_Series); ASSERT_EQ(2u, pub.size()); - db.GetAllPublicIds(pub, manager, OrthancPluginResourceType_Instance); ASSERT_EQ(0u, pub.size()); - ASSERT_EQ(3u, db.GetAllResourcesCount(manager)); + db.GetAllPublicIds(pub, *manager, OrthancPluginResourceType_Patient); ASSERT_EQ(0u, pub.size()); + db.GetAllPublicIds(pub, *manager, OrthancPluginResourceType_Study); ASSERT_EQ(1u, pub.size()); + db.GetAllPublicIds(pub, *manager, OrthancPluginResourceType_Series); ASSERT_EQ(2u, pub.size()); + db.GetAllPublicIds(pub, *manager, OrthancPluginResourceType_Instance); ASSERT_EQ(0u, pub.size()); + ASSERT_EQ(3u, db.GetAllResourcesCount(*manager)); - ASSERT_EQ(0u, db.GetUnprotectedPatientsCount(manager)); // No patient was inserted - ASSERT_TRUE(db.IsExistingResource(manager, c)); + ASSERT_EQ(0u, db.GetUnprotectedPatientsCount(*manager)); // No patient was inserted + ASSERT_TRUE(db.IsExistingResource(*manager, c)); { // A transaction is needed here for MySQL, as it was not possible // to implement recursive deletion of resources using pure SQL // statements - manager.StartTransaction(TransactionType_ReadWrite); - db.DeleteResource(*output, manager, c); - manager.CommitTransaction(); + manager->StartTransaction(TransactionType_ReadWrite); + db.DeleteResource(*output, *manager, c); + manager->CommitTransaction(); } - ASSERT_FALSE(db.IsExistingResource(manager, c)); - ASSERT_TRUE(db.IsExistingResource(manager, a)); - ASSERT_TRUE(db.IsExistingResource(manager, b)); - ASSERT_EQ(2u, db.GetAllResourcesCount(manager)); - db.DeleteResource(*output, manager, a); - ASSERT_EQ(0u, db.GetAllResourcesCount(manager)); - ASSERT_FALSE(db.IsExistingResource(manager, a)); - ASSERT_FALSE(db.IsExistingResource(manager, b)); - ASSERT_FALSE(db.IsExistingResource(manager, c)); + ASSERT_FALSE(db.IsExistingResource(*manager, c)); + ASSERT_TRUE(db.IsExistingResource(*manager, a)); + ASSERT_TRUE(db.IsExistingResource(*manager, b)); + ASSERT_EQ(2u, db.GetAllResourcesCount(*manager)); + db.DeleteResource(*output, *manager, a); + ASSERT_EQ(0u, db.GetAllResourcesCount(*manager)); + ASSERT_FALSE(db.IsExistingResource(*manager, a)); + ASSERT_FALSE(db.IsExistingResource(*manager, b)); + ASSERT_FALSE(db.IsExistingResource(*manager, c)); - ASSERT_EQ(0u, db.GetAllResourcesCount(manager)); - ASSERT_EQ(0u, db.GetUnprotectedPatientsCount(manager)); - int64_t p1 = db.CreateResource(manager, "patient1", OrthancPluginResourceType_Patient); - int64_t p2 = db.CreateResource(manager, "patient2", OrthancPluginResourceType_Patient); - int64_t p3 = db.CreateResource(manager, "patient3", OrthancPluginResourceType_Patient); - ASSERT_EQ(3u, db.GetUnprotectedPatientsCount(manager)); + ASSERT_EQ(0u, db.GetAllResourcesCount(*manager)); + ASSERT_EQ(0u, db.GetUnprotectedPatientsCount(*manager)); + int64_t p1 = db.CreateResource(*manager, "patient1", OrthancPluginResourceType_Patient); + int64_t p2 = db.CreateResource(*manager, "patient2", OrthancPluginResourceType_Patient); + int64_t p3 = db.CreateResource(*manager, "patient3", OrthancPluginResourceType_Patient); + ASSERT_EQ(3u, db.GetUnprotectedPatientsCount(*manager)); int64_t r; - ASSERT_TRUE(db.SelectPatientToRecycle(r, manager)); + ASSERT_TRUE(db.SelectPatientToRecycle(r, *manager)); ASSERT_EQ(p1, r); - ASSERT_TRUE(db.SelectPatientToRecycle(r, manager, p1)); + ASSERT_TRUE(db.SelectPatientToRecycle(r, *manager, p1)); ASSERT_EQ(p2, r); - ASSERT_FALSE(db.IsProtectedPatient(manager, p1)); - db.SetProtectedPatient(manager, p1, true); - ASSERT_TRUE(db.IsProtectedPatient(manager, p1)); - ASSERT_TRUE(db.SelectPatientToRecycle(r, manager)); + ASSERT_FALSE(db.IsProtectedPatient(*manager, p1)); + db.SetProtectedPatient(*manager, p1, true); + ASSERT_TRUE(db.IsProtectedPatient(*manager, p1)); + ASSERT_TRUE(db.SelectPatientToRecycle(r, *manager)); ASSERT_EQ(p2, r); - db.SetProtectedPatient(manager, p1, false); - ASSERT_FALSE(db.IsProtectedPatient(manager, p1)); - ASSERT_TRUE(db.SelectPatientToRecycle(r, manager)); + db.SetProtectedPatient(*manager, p1, false); + ASSERT_FALSE(db.IsProtectedPatient(*manager, p1)); + ASSERT_TRUE(db.SelectPatientToRecycle(r, *manager)); ASSERT_EQ(p2, r); - db.DeleteResource(*output, manager, p2); - ASSERT_TRUE(db.SelectPatientToRecycle(r, manager, p3)); + db.DeleteResource(*output, *manager, p2); + ASSERT_TRUE(db.SelectPatientToRecycle(r, *manager, p3)); ASSERT_EQ(p1, r); - manager.Close(); + manager->Close(); }