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 {