Mercurial > hg > orthanc
comparison UnitTestsSources/ServerIndexTests.cpp @ 1211:88511c737760
integration db-changes->mainline
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 04 Nov 2014 13:57:11 +0100 |
parents | 1169528a9a5f |
children | efece308018e |
comparison
equal
deleted
inserted
replaced
1208:6502517fd4af | 1211:88511c737760 |
---|---|
56 | 56 |
57 class ServerIndexListener : public IServerIndexListener | 57 class ServerIndexListener : public IServerIndexListener |
58 { | 58 { |
59 public: | 59 public: |
60 std::vector<std::string> deletedFiles_; | 60 std::vector<std::string> deletedFiles_; |
61 std::vector<std::string> deletedResources_; | |
61 std::string ancestorId_; | 62 std::string ancestorId_; |
62 ResourceType ancestorType_; | 63 ResourceType ancestorType_; |
63 | 64 |
64 void Reset() | 65 void Reset() |
65 { | 66 { |
77 virtual void SignalFileDeleted(const FileInfo& info) | 78 virtual void SignalFileDeleted(const FileInfo& info) |
78 { | 79 { |
79 const std::string fileUuid = info.GetUuid(); | 80 const std::string fileUuid = info.GetUuid(); |
80 deletedFiles_.push_back(fileUuid); | 81 deletedFiles_.push_back(fileUuid); |
81 LOG(INFO) << "A file must be removed: " << fileUuid; | 82 LOG(INFO) << "A file must be removed: " << fileUuid; |
82 } | 83 } |
84 | |
85 virtual void SignalChange(const ServerIndexChange& change) | |
86 { | |
87 if (change.GetChangeType() == ChangeType_Deleted) | |
88 { | |
89 deletedResources_.push_back(change.GetPublicId()); | |
90 } | |
91 | |
92 LOG(INFO) << "Change related to resource " << change.GetPublicId() << " of type " | |
93 << EnumerationToString(change.GetResourceType()) << ": " | |
94 << EnumerationToString(change.GetChangeType()); | |
95 } | |
96 | |
83 }; | 97 }; |
84 | 98 |
85 | 99 |
86 class DatabaseWrapperTest : public ::testing::TestWithParam<DatabaseWrapperClass> | 100 class DatabaseWrapperTest : public ::testing::TestWithParam<DatabaseWrapperClass> |
87 { | 101 { |
279 ASSERT_EQ("md5", att.GetCompressedMD5()); | 293 ASSERT_EQ("md5", att.GetCompressedMD5()); |
280 ASSERT_EQ(44u, att.GetUncompressedSize()); | 294 ASSERT_EQ(44u, att.GetUncompressedSize()); |
281 ASSERT_EQ(CompressionType_None, att.GetCompressionType()); | 295 ASSERT_EQ(CompressionType_None, att.GetCompressionType()); |
282 | 296 |
283 ASSERT_EQ(0u, listener_->deletedFiles_.size()); | 297 ASSERT_EQ(0u, listener_->deletedFiles_.size()); |
298 ASSERT_EQ(0u, listener_->deletedResources_.size()); | |
284 ASSERT_EQ(7u, index_->GetTableRecordCount("Resources")); | 299 ASSERT_EQ(7u, index_->GetTableRecordCount("Resources")); |
285 ASSERT_EQ(3u, index_->GetTableRecordCount("AttachedFiles")); | 300 ASSERT_EQ(3u, index_->GetTableRecordCount("AttachedFiles")); |
286 ASSERT_EQ(1u, index_->GetTableRecordCount("Metadata")); | 301 ASSERT_EQ(1u, index_->GetTableRecordCount("Metadata")); |
287 ASSERT_EQ(1u, index_->GetTableRecordCount("MainDicomTags")); | 302 ASSERT_EQ(1u, index_->GetTableRecordCount("MainDicomTags")); |
303 | |
288 index_->DeleteResource(a[0]); | 304 index_->DeleteResource(a[0]); |
289 | 305 ASSERT_EQ(5u, listener_->deletedResources_.size()); |
290 ASSERT_EQ(2u, listener_->deletedFiles_.size()); | 306 ASSERT_EQ(2u, listener_->deletedFiles_.size()); |
291 ASSERT_FALSE(std::find(listener_->deletedFiles_.begin(), | 307 ASSERT_FALSE(std::find(listener_->deletedFiles_.begin(), |
292 listener_->deletedFiles_.end(), | 308 listener_->deletedFiles_.end(), |
293 "my json file") == listener_->deletedFiles_.end()); | 309 "my json file") == listener_->deletedFiles_.end()); |
294 ASSERT_FALSE(std::find(listener_->deletedFiles_.begin(), | 310 ASSERT_FALSE(std::find(listener_->deletedFiles_.begin(), |
298 ASSERT_EQ(2u, index_->GetTableRecordCount("Resources")); | 314 ASSERT_EQ(2u, index_->GetTableRecordCount("Resources")); |
299 ASSERT_EQ(0u, index_->GetTableRecordCount("Metadata")); | 315 ASSERT_EQ(0u, index_->GetTableRecordCount("Metadata")); |
300 ASSERT_EQ(1u, index_->GetTableRecordCount("AttachedFiles")); | 316 ASSERT_EQ(1u, index_->GetTableRecordCount("AttachedFiles")); |
301 ASSERT_EQ(0u, index_->GetTableRecordCount("MainDicomTags")); | 317 ASSERT_EQ(0u, index_->GetTableRecordCount("MainDicomTags")); |
302 index_->DeleteResource(a[5]); | 318 index_->DeleteResource(a[5]); |
319 ASSERT_EQ(7u, listener_->deletedResources_.size()); | |
303 ASSERT_EQ(0u, index_->GetTableRecordCount("Resources")); | 320 ASSERT_EQ(0u, index_->GetTableRecordCount("Resources")); |
304 ASSERT_EQ(0u, index_->GetTableRecordCount("AttachedFiles")); | 321 ASSERT_EQ(0u, index_->GetTableRecordCount("AttachedFiles")); |
305 ASSERT_EQ(2u, index_->GetTableRecordCount("GlobalProperties")); | 322 ASSERT_EQ(2u, index_->GetTableRecordCount("GlobalProperties")); |
306 | 323 |
307 ASSERT_EQ(3u, listener_->deletedFiles_.size()); | 324 ASSERT_EQ(3u, listener_->deletedFiles_.size()); |
393 | 410 |
394 ASSERT_EQ(10u, index_->GetTableRecordCount("Resources")); | 411 ASSERT_EQ(10u, index_->GetTableRecordCount("Resources")); |
395 ASSERT_EQ(10u, index_->GetTableRecordCount("PatientRecyclingOrder")); | 412 ASSERT_EQ(10u, index_->GetTableRecordCount("PatientRecyclingOrder")); |
396 | 413 |
397 listener_->Reset(); | 414 listener_->Reset(); |
415 ASSERT_EQ(0u, listener_->deletedResources_.size()); | |
398 | 416 |
399 index_->DeleteResource(patients[5]); | 417 index_->DeleteResource(patients[5]); |
400 index_->DeleteResource(patients[0]); | 418 index_->DeleteResource(patients[0]); |
419 ASSERT_EQ(2u, listener_->deletedResources_.size()); | |
401 ASSERT_EQ(8u, index_->GetTableRecordCount("Resources")); | 420 ASSERT_EQ(8u, index_->GetTableRecordCount("Resources")); |
402 ASSERT_EQ(8u, index_->GetTableRecordCount("PatientRecyclingOrder")); | 421 ASSERT_EQ(8u, index_->GetTableRecordCount("PatientRecyclingOrder")); |
403 | 422 |
404 ASSERT_EQ(2u, listener_->deletedFiles_.size()); | 423 ASSERT_EQ(2u, listener_->deletedFiles_.size()); |
405 ASSERT_EQ("Patient 5", listener_->deletedFiles_[0]); | 424 ASSERT_EQ("Patient 5", listener_->deletedFiles_[0]); |
406 ASSERT_EQ("Patient 0", listener_->deletedFiles_[1]); | 425 ASSERT_EQ("Patient 0", listener_->deletedFiles_[1]); |
407 | 426 |
408 int64_t p; | 427 int64_t p; |
409 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[1]); | 428 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[1]); |
410 index_->DeleteResource(p); | 429 index_->DeleteResource(p); |
430 ASSERT_EQ(3u, listener_->deletedResources_.size()); | |
411 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[2]); | 431 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[2]); |
412 index_->DeleteResource(p); | 432 index_->DeleteResource(p); |
433 ASSERT_EQ(4u, listener_->deletedResources_.size()); | |
413 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[3]); | 434 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[3]); |
414 index_->DeleteResource(p); | 435 index_->DeleteResource(p); |
436 ASSERT_EQ(5u, listener_->deletedResources_.size()); | |
415 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[4]); | 437 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[4]); |
416 index_->DeleteResource(p); | 438 index_->DeleteResource(p); |
439 ASSERT_EQ(6u, listener_->deletedResources_.size()); | |
417 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[6]); | 440 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[6]); |
418 index_->DeleteResource(p); | 441 index_->DeleteResource(p); |
419 index_->DeleteResource(patients[8]); | 442 index_->DeleteResource(patients[8]); |
443 ASSERT_EQ(8u, listener_->deletedResources_.size()); | |
420 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[7]); | 444 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[7]); |
421 index_->DeleteResource(p); | 445 index_->DeleteResource(p); |
446 ASSERT_EQ(9u, listener_->deletedResources_.size()); | |
422 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[9]); | 447 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[9]); |
423 index_->DeleteResource(p); | 448 index_->DeleteResource(p); |
424 ASSERT_FALSE(index_->SelectPatientToRecycle(p)); | 449 ASSERT_FALSE(index_->SelectPatientToRecycle(p)); |
450 ASSERT_EQ(10u, listener_->deletedResources_.size()); | |
425 | 451 |
426 ASSERT_EQ(10u, listener_->deletedFiles_.size()); | 452 ASSERT_EQ(10u, listener_->deletedFiles_.size()); |
427 ASSERT_EQ(0u, index_->GetTableRecordCount("Resources")); | 453 ASSERT_EQ(0u, index_->GetTableRecordCount("Resources")); |
428 ASSERT_EQ(0u, index_->GetTableRecordCount("PatientRecyclingOrder")); | 454 ASSERT_EQ(0u, index_->GetTableRecordCount("PatientRecyclingOrder")); |
429 } | 455 } |
475 ASSERT_EQ(5u, index_->GetTableRecordCount("Resources")); | 501 ASSERT_EQ(5u, index_->GetTableRecordCount("Resources")); |
476 ASSERT_EQ(0u, listener_->deletedFiles_.size()); | 502 ASSERT_EQ(0u, listener_->deletedFiles_.size()); |
477 | 503 |
478 // Unprotecting a patient puts it at the last position in the recycling queue | 504 // Unprotecting a patient puts it at the last position in the recycling queue |
479 int64_t p; | 505 int64_t p; |
506 ASSERT_EQ(0u, listener_->deletedResources_.size()); | |
480 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[0]); | 507 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[0]); |
481 index_->DeleteResource(p); | 508 index_->DeleteResource(p); |
509 ASSERT_EQ(1u, listener_->deletedResources_.size()); | |
482 ASSERT_TRUE(index_->SelectPatientToRecycle(p, patients[1])); ASSERT_EQ(p, patients[4]); | 510 ASSERT_TRUE(index_->SelectPatientToRecycle(p, patients[1])); ASSERT_EQ(p, patients[4]); |
483 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[1]); | 511 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[1]); |
484 index_->DeleteResource(p); | 512 index_->DeleteResource(p); |
513 ASSERT_EQ(2u, listener_->deletedResources_.size()); | |
485 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[4]); | 514 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[4]); |
486 index_->DeleteResource(p); | 515 index_->DeleteResource(p); |
516 ASSERT_EQ(3u, listener_->deletedResources_.size()); | |
487 ASSERT_FALSE(index_->SelectPatientToRecycle(p, patients[2])); | 517 ASSERT_FALSE(index_->SelectPatientToRecycle(p, patients[2])); |
488 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[2]); | 518 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[2]); |
489 index_->DeleteResource(p); | 519 index_->DeleteResource(p); |
520 ASSERT_EQ(4u, listener_->deletedResources_.size()); | |
490 // "patients[3]" is still protected | 521 // "patients[3]" is still protected |
491 ASSERT_FALSE(index_->SelectPatientToRecycle(p)); | 522 ASSERT_FALSE(index_->SelectPatientToRecycle(p)); |
492 | 523 |
493 ASSERT_EQ(4u, listener_->deletedFiles_.size()); | 524 ASSERT_EQ(4u, listener_->deletedFiles_.size()); |
494 ASSERT_EQ(1u, index_->GetTableRecordCount("Resources")); | 525 ASSERT_EQ(1u, index_->GetTableRecordCount("Resources")); |
498 ASSERT_EQ(1u, index_->GetTableRecordCount("PatientRecyclingOrder")); | 529 ASSERT_EQ(1u, index_->GetTableRecordCount("PatientRecyclingOrder")); |
499 ASSERT_FALSE(index_->SelectPatientToRecycle(p, patients[3])); | 530 ASSERT_FALSE(index_->SelectPatientToRecycle(p, patients[3])); |
500 ASSERT_TRUE(index_->SelectPatientToRecycle(p, patients[2])); | 531 ASSERT_TRUE(index_->SelectPatientToRecycle(p, patients[2])); |
501 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[3]); | 532 ASSERT_TRUE(index_->SelectPatientToRecycle(p)); ASSERT_EQ(p, patients[3]); |
502 index_->DeleteResource(p); | 533 index_->DeleteResource(p); |
534 ASSERT_EQ(5u, listener_->deletedResources_.size()); | |
503 | 535 |
504 ASSERT_EQ(5u, listener_->deletedFiles_.size()); | 536 ASSERT_EQ(5u, listener_->deletedFiles_.size()); |
505 ASSERT_EQ(0u, index_->GetTableRecordCount("Resources")); | 537 ASSERT_EQ(0u, index_->GetTableRecordCount("Resources")); |
506 ASSERT_EQ(0u, index_->GetTableRecordCount("PatientRecyclingOrder")); | 538 ASSERT_EQ(0u, index_->GetTableRecordCount("PatientRecyclingOrder")); |
507 } | 539 } |
516 ASSERT_EQ(4u, index_->IncrementGlobalSequence(GlobalProperty_AnonymizationSequence)); | 548 ASSERT_EQ(4u, index_->IncrementGlobalSequence(GlobalProperty_AnonymizationSequence)); |
517 } | 549 } |
518 | 550 |
519 | 551 |
520 | 552 |
521 TEST_P(DatabaseWrapperTest, LookupTagValue) | 553 TEST_P(DatabaseWrapperTest, LookupIdentifier) |
522 { | 554 { |
523 int64_t a[] = { | 555 int64_t a[] = { |
524 index_->CreateResource("a", ResourceType_Study), // 0 | 556 index_->CreateResource("a", ResourceType_Study), // 0 |
525 index_->CreateResource("b", ResourceType_Study), // 1 | 557 index_->CreateResource("b", ResourceType_Study), // 1 |
526 index_->CreateResource("c", ResourceType_Study), // 2 | 558 index_->CreateResource("c", ResourceType_Study), // 2 |
533 m.Clear(); m.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "0"); index_->SetMainDicomTags(a[2], m); | 565 m.Clear(); m.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "0"); index_->SetMainDicomTags(a[2], m); |
534 m.Clear(); m.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, "0"); index_->SetMainDicomTags(a[3], m); | 566 m.Clear(); m.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, "0"); index_->SetMainDicomTags(a[3], m); |
535 | 567 |
536 std::list<int64_t> s; | 568 std::list<int64_t> s; |
537 | 569 |
538 index_->LookupTagValue(s, DICOM_TAG_STUDY_INSTANCE_UID, "0"); | 570 index_->LookupIdentifier(s, DICOM_TAG_STUDY_INSTANCE_UID, "0"); |
539 ASSERT_EQ(2u, s.size()); | 571 ASSERT_EQ(2u, s.size()); |
540 ASSERT_TRUE(std::find(s.begin(), s.end(), a[0]) != s.end()); | 572 ASSERT_TRUE(std::find(s.begin(), s.end(), a[0]) != s.end()); |
541 ASSERT_TRUE(std::find(s.begin(), s.end(), a[2]) != s.end()); | 573 ASSERT_TRUE(std::find(s.begin(), s.end(), a[2]) != s.end()); |
542 | 574 |
543 index_->LookupTagValue(s, "0"); | 575 index_->LookupIdentifier(s, "0"); |
544 ASSERT_EQ(3u, s.size()); | 576 ASSERT_EQ(3u, s.size()); |
545 ASSERT_TRUE(std::find(s.begin(), s.end(), a[0]) != s.end()); | 577 ASSERT_TRUE(std::find(s.begin(), s.end(), a[0]) != s.end()); |
546 ASSERT_TRUE(std::find(s.begin(), s.end(), a[2]) != s.end()); | 578 ASSERT_TRUE(std::find(s.begin(), s.end(), a[2]) != s.end()); |
547 ASSERT_TRUE(std::find(s.begin(), s.end(), a[3]) != s.end()); | 579 ASSERT_TRUE(std::find(s.begin(), s.end(), a[3]) != s.end()); |
548 | 580 |
549 index_->LookupTagValue(s, DICOM_TAG_STUDY_INSTANCE_UID, "1"); | 581 index_->LookupIdentifier(s, DICOM_TAG_STUDY_INSTANCE_UID, "1"); |
550 ASSERT_EQ(1u, s.size()); | 582 ASSERT_EQ(1u, s.size()); |
551 ASSERT_TRUE(std::find(s.begin(), s.end(), a[1]) != s.end()); | 583 ASSERT_TRUE(std::find(s.begin(), s.end(), a[1]) != s.end()); |
552 | 584 |
553 index_->LookupTagValue(s, "1"); | 585 index_->LookupIdentifier(s, "1"); |
554 ASSERT_EQ(1u, s.size()); | 586 ASSERT_EQ(1u, s.size()); |
555 ASSERT_TRUE(std::find(s.begin(), s.end(), a[1]) != s.end()); | 587 ASSERT_TRUE(std::find(s.begin(), s.end(), a[1]) != s.end()); |
556 | 588 |
557 | 589 |
558 /*{ | 590 /*{ |
559 std::list<std::string> s; | 591 std::list<std::string> s; |
560 context.GetIndex().LookupTagValue(s, DICOM_TAG_STUDY_INSTANCE_UID, "1.2.250.1.74.20130819132500.29000036381059"); | 592 context.GetIndex().LookupIdentifier(s, DICOM_TAG_STUDY_INSTANCE_UID, "1.2.250.1.74.20130819132500.29000036381059"); |
561 for (std::list<std::string>::iterator i = s.begin(); i != s.end(); i++) | 593 for (std::list<std::string>::iterator i = s.begin(); i != s.end(); i++) |
562 { | 594 { |
563 std::cout << "*** " << *i << std::endl;; | 595 std::cout << "*** " << *i << std::endl;; |
564 } | 596 } |
565 }*/ | 597 }*/ |