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 }*/