Mercurial > hg > orthanc
comparison UnitTestsSources/MultiThreadingTests.cpp @ 2853:52b017d22a4f
New URI: "/studies/.../merge" to merge a study
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 02 Oct 2018 17:05:07 +0200 |
parents | 2da68edacab6 |
children | 8b00e4cb4a6b |
comparison
equal
deleted
inserted
replaced
2851:859e880ac9a8 | 2853:52b017d22a4f |
---|---|
59 #include "../OrthancServer/ServerJobs/Operations/StoreScuOperation.h" | 59 #include "../OrthancServer/ServerJobs/Operations/StoreScuOperation.h" |
60 #include "../OrthancServer/ServerJobs/Operations/SystemCallOperation.h" | 60 #include "../OrthancServer/ServerJobs/Operations/SystemCallOperation.h" |
61 | 61 |
62 #include "../OrthancServer/ServerJobs/ArchiveJob.h" | 62 #include "../OrthancServer/ServerJobs/ArchiveJob.h" |
63 #include "../OrthancServer/ServerJobs/DicomModalityStoreJob.h" | 63 #include "../OrthancServer/ServerJobs/DicomModalityStoreJob.h" |
64 #include "../OrthancServer/ServerJobs/MergeStudyJob.h" | |
64 #include "../OrthancServer/ServerJobs/OrthancPeerStoreJob.h" | 65 #include "../OrthancServer/ServerJobs/OrthancPeerStoreJob.h" |
65 #include "../OrthancServer/ServerJobs/ResourceModificationJob.h" | 66 #include "../OrthancServer/ServerJobs/ResourceModificationJob.h" |
66 #include "../OrthancServer/ServerJobs/SplitStudyJob.h" | 67 #include "../OrthancServer/ServerJobs/SplitStudyJob.h" |
67 | 68 |
68 | 69 |
1559 ASSERT_TRUE(tmp.GetModification().IsRemoved(DICOM_TAG_STUDY_DESCRIPTION)); | 1560 ASSERT_TRUE(tmp.GetModification().IsRemoved(DICOM_TAG_STUDY_DESCRIPTION)); |
1560 } | 1561 } |
1561 | 1562 |
1562 // SplitStudyJob | 1563 // SplitStudyJob |
1563 | 1564 |
1564 std::string id; | 1565 std::string instance; |
1565 ASSERT_TRUE(CreateInstance(id)); | 1566 ASSERT_TRUE(CreateInstance(instance)); |
1566 | 1567 |
1567 std::string study, series; | 1568 std::string study, series; |
1568 | 1569 |
1569 { | 1570 { |
1570 ServerContext::DicomCacheLocker lock(GetContext(), id); | 1571 ServerContext::DicomCacheLocker lock(GetContext(), instance); |
1571 study = lock.GetDicom().GetHasher().HashStudy(); | 1572 study = lock.GetDicom().GetHasher().HashStudy(); |
1572 series = lock.GetDicom().GetHasher().HashSeries(); | 1573 series = lock.GetDicom().GetHasher().HashSeries(); |
1573 } | 1574 } |
1574 | 1575 |
1575 { | 1576 { |
1576 std::string a, b, c; | 1577 std::list<std::string> tmp; |
1578 GetContext().GetIndex().GetAllUuids(tmp, ResourceType_Study); | |
1579 ASSERT_EQ(1u, tmp.size()); | |
1580 ASSERT_EQ(study, tmp.front()); | |
1581 GetContext().GetIndex().GetAllUuids(tmp, ResourceType_Series); | |
1582 ASSERT_EQ(1u, tmp.size()); | |
1583 ASSERT_EQ(series, tmp.front()); | |
1584 } | |
1585 | |
1586 std::string study2; | |
1587 | |
1588 { | |
1589 std::string a, b; | |
1577 | 1590 |
1578 { | 1591 { |
1579 ASSERT_THROW(SplitStudyJob(GetContext(), std::string("nope")), OrthancException); | 1592 ASSERT_THROW(SplitStudyJob(GetContext(), std::string("nope")), OrthancException); |
1580 | 1593 |
1581 SplitStudyJob job(GetContext(), study); | 1594 SplitStudyJob job(GetContext(), study); |
1594 | 1607 |
1595 job.Start(); | 1608 job.Start(); |
1596 ASSERT_EQ(JobStepCode_Continue, job.Step().GetCode()); | 1609 ASSERT_EQ(JobStepCode_Continue, job.Step().GetCode()); |
1597 ASSERT_EQ(JobStepCode_Success, job.Step().GetCode()); | 1610 ASSERT_EQ(JobStepCode_Success, job.Step().GetCode()); |
1598 | 1611 |
1599 c = job.GetTargetStudy(); | 1612 study2 = job.GetTargetStudy(); |
1600 ASSERT_FALSE(c.empty()); | 1613 ASSERT_FALSE(study2.empty()); |
1601 | 1614 |
1602 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1615 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1603 ASSERT_TRUE(job.Serialize(s)); | 1616 ASSERT_TRUE(job.Serialize(s)); |
1604 } | 1617 } |
1605 | 1618 |
1612 ASSERT_EQ(study, tmp.GetSourceStudy()); | 1625 ASSERT_EQ(study, tmp.GetSourceStudy()); |
1613 ASSERT_EQ(a, tmp.GetTargetStudyUid()); | 1626 ASSERT_EQ(a, tmp.GetTargetStudyUid()); |
1614 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); | 1627 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); |
1615 | 1628 |
1616 std::string s; | 1629 std::string s; |
1617 ASSERT_EQ(c, tmp.GetTargetStudy()); | 1630 ASSERT_EQ(study2, tmp.GetTargetStudy()); |
1618 ASSERT_FALSE(tmp.LookupTargetSeriesUid(s, "nope")); | 1631 ASSERT_FALSE(tmp.LookupTargetSeriesUid(s, "nope")); |
1619 ASSERT_TRUE(tmp.LookupTargetSeriesUid(s, series)); | 1632 ASSERT_TRUE(tmp.LookupTargetSeriesUid(s, series)); |
1620 ASSERT_EQ(b, s); | 1633 ASSERT_EQ(b, s); |
1621 | 1634 |
1622 ASSERT_FALSE(tmp.LookupReplacement(s, DICOM_TAG_STUDY_DESCRIPTION)); | 1635 ASSERT_FALSE(tmp.LookupReplacement(s, DICOM_TAG_STUDY_DESCRIPTION)); |
1624 ASSERT_EQ("hello", s); | 1637 ASSERT_EQ("hello", s); |
1625 ASSERT_FALSE(tmp.IsRemoved(DICOM_TAG_PATIENT_NAME)); | 1638 ASSERT_FALSE(tmp.IsRemoved(DICOM_TAG_PATIENT_NAME)); |
1626 ASSERT_TRUE(tmp.IsRemoved(DICOM_TAG_PATIENT_BIRTH_DATE)); | 1639 ASSERT_TRUE(tmp.IsRemoved(DICOM_TAG_PATIENT_BIRTH_DATE)); |
1627 } | 1640 } |
1628 } | 1641 } |
1642 | |
1643 { | |
1644 std::list<std::string> tmp; | |
1645 GetContext().GetIndex().GetAllUuids(tmp, ResourceType_Study); | |
1646 ASSERT_EQ(2u, tmp.size()); | |
1647 GetContext().GetIndex().GetAllUuids(tmp, ResourceType_Series); | |
1648 ASSERT_EQ(2u, tmp.size()); | |
1649 } | |
1650 | |
1651 // MergeStudyJob | |
1652 | |
1653 { | |
1654 ASSERT_THROW(SplitStudyJob(GetContext(), std::string("nope")), OrthancException); | |
1655 | |
1656 MergeStudyJob job(GetContext(), study); | |
1657 job.SetKeepSource(true); | |
1658 job.AddSource(study2); | |
1659 ASSERT_THROW(job.AddSourceSeries("nope"), OrthancException); | |
1660 ASSERT_THROW(job.AddSourceStudy("nope"), OrthancException); | |
1661 ASSERT_THROW(job.AddSource("nope"), OrthancException); | |
1662 job.SetOrigin(DicomInstanceOrigin::FromLua()); | |
1663 | |
1664 ASSERT_EQ(job.GetTargetStudy(), study); | |
1665 | |
1666 job.Start(); | |
1667 ASSERT_EQ(JobStepCode_Continue, job.Step().GetCode()); | |
1668 ASSERT_EQ(JobStepCode_Success, job.Step().GetCode()); | |
1669 | |
1670 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | |
1671 ASSERT_TRUE(job.Serialize(s)); | |
1672 } | |
1673 | |
1674 { | |
1675 std::list<std::string> tmp; | |
1676 GetContext().GetIndex().GetAllUuids(tmp, ResourceType_Study); | |
1677 ASSERT_EQ(2u, tmp.size()); | |
1678 GetContext().GetIndex().GetAllUuids(tmp, ResourceType_Series); | |
1679 ASSERT_EQ(3u, tmp.size()); | |
1680 } | |
1681 | |
1682 { | |
1683 std::auto_ptr<IJob> job; | |
1684 job.reset(unserializer.UnserializeJob(s)); | |
1685 | |
1686 MergeStudyJob& tmp = dynamic_cast<MergeStudyJob&>(*job); | |
1687 ASSERT_TRUE(tmp.IsKeepSource()); | |
1688 ASSERT_EQ(study, tmp.GetTargetStudy()); | |
1689 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); | |
1690 } | |
1629 } | 1691 } |
1630 | 1692 |
1631 | 1693 |
1632 TEST(JobsSerialization, Registry) | 1694 TEST(JobsSerialization, Registry) |
1633 { | 1695 { |