Mercurial > hg > orthanc
comparison OrthancServer/UnitTestsSources/ServerJobsTests.cpp @ 4693:45bce660ce3a
added routes for bulk anonymization/modification
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 16 Jun 2021 16:44:04 +0200 |
parents | 2e850edf03d6 |
children | f0038043fb97 7826ac059c31 |
comparison
equal
deleted
inserted
replaced
4692:e68edf92e5cc | 4693:45bce660ce3a |
---|---|
817 | 817 |
818 // ResourceModificationJob | 818 // ResourceModificationJob |
819 | 819 |
820 { | 820 { |
821 std::unique_ptr<DicomModification> modification(new DicomModification); | 821 std::unique_ptr<DicomModification> modification(new DicomModification); |
822 modification->SetupAnonymization(DicomVersion_2008); | 822 modification->SetupAnonymization(DicomVersion_2008); |
823 modification->SetLevel(ResourceType_Series); | |
823 | 824 |
824 ResourceModificationJob job(GetContext()); | 825 ResourceModificationJob job(GetContext()); |
825 job.SetModification(modification.release(), ResourceType_Patient, true); | 826 ASSERT_THROW(job.IsSingleResourceModification(), OrthancException); |
827 job.SetSingleResourceModification(modification.release(), ResourceType_Patient, true); | |
826 job.SetOrigin(DicomInstanceOrigin::FromLua()); | 828 job.SetOrigin(DicomInstanceOrigin::FromLua()); |
829 ASSERT_TRUE(job.IsAnonymization()); | |
830 ASSERT_TRUE(job.IsSingleResourceModification()); | |
831 ASSERT_EQ(ResourceType_Patient, job.GetOutputLevel()); | |
827 | 832 |
828 job.AddTrailingStep(); // Necessary since 1.7.0 | 833 job.AddTrailingStep(); // Necessary since 1.7.0 |
829 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 834 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
830 ASSERT_TRUE(job.Serialize(s)); | 835 ASSERT_TRUE(job.Serialize(s)); |
831 } | 836 } |
838 ASSERT_TRUE(tmp.IsAnonymization()); | 843 ASSERT_TRUE(tmp.IsAnonymization()); |
839 ASSERT_FALSE(tmp.IsTranscode()); | 844 ASSERT_FALSE(tmp.IsTranscode()); |
840 ASSERT_THROW(tmp.GetTransferSyntax(), OrthancException); | 845 ASSERT_THROW(tmp.GetTransferSyntax(), OrthancException); |
841 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); | 846 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); |
842 ASSERT_TRUE(tmp.GetModification().IsRemoved(DICOM_TAG_STUDY_DESCRIPTION)); | 847 ASSERT_TRUE(tmp.GetModification().IsRemoved(DICOM_TAG_STUDY_DESCRIPTION)); |
848 ASSERT_TRUE(tmp.IsSingleResourceModification()); | |
849 ASSERT_EQ(ResourceType_Patient, tmp.GetOutputLevel()); | |
850 ASSERT_EQ(ResourceType_Series, tmp.GetModification().GetLevel()); | |
851 } | |
852 | |
853 { | |
854 // Backward compatibility with Orthanc 1.9.3 | |
855 ASSERT_TRUE(s.isMember("OutputLevel")); | |
856 ASSERT_TRUE(s.isMember("IsSingleResource")); | |
857 s.removeMember("OutputLevel"); | |
858 s.removeMember("IsSingleResource"); | |
859 | |
860 std::unique_ptr<IJob> job; | |
861 job.reset(unserializer.UnserializeJob(s)); | |
862 | |
863 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); | |
864 ASSERT_TRUE(tmp.IsSingleResourceModification()); | |
865 ASSERT_EQ(ResourceType_Series, tmp.GetOutputLevel()); // old, incorrect behavior | |
866 ASSERT_EQ(ResourceType_Series, tmp.GetModification().GetLevel()); | |
843 } | 867 } |
844 | 868 |
845 { | 869 { |
846 ResourceModificationJob job(GetContext()); | 870 ResourceModificationJob job(GetContext()); |
847 ASSERT_THROW(job.SetTranscode("nope"), OrthancException); | 871 ASSERT_THROW(job.SetTranscode("nope"), OrthancException); |
848 job.SetTranscode(DicomTransferSyntax_JPEGProcess1); | 872 job.SetTranscode(DicomTransferSyntax_JPEGProcess1); |
873 job.SetSingleResourceModification(new DicomModification, ResourceType_Study, false); | |
849 | 874 |
850 job.AddTrailingStep(); // Necessary since 1.7.0 | 875 job.AddTrailingStep(); // Necessary since 1.7.0 |
851 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 876 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
852 ASSERT_TRUE(job.Serialize(s)); | 877 ASSERT_TRUE(job.Serialize(s)); |
853 } | 878 } |
859 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); | 884 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); |
860 ASSERT_FALSE(tmp.IsAnonymization()); | 885 ASSERT_FALSE(tmp.IsAnonymization()); |
861 ASSERT_TRUE(tmp.IsTranscode()); | 886 ASSERT_TRUE(tmp.IsTranscode()); |
862 ASSERT_EQ(DicomTransferSyntax_JPEGProcess1, tmp.GetTransferSyntax()); | 887 ASSERT_EQ(DicomTransferSyntax_JPEGProcess1, tmp.GetTransferSyntax()); |
863 ASSERT_EQ(RequestOrigin_Unknown, tmp.GetOrigin().GetRequestOrigin()); | 888 ASSERT_EQ(RequestOrigin_Unknown, tmp.GetOrigin().GetRequestOrigin()); |
889 ASSERT_TRUE(tmp.IsSingleResourceModification()); | |
890 ASSERT_EQ(ResourceType_Study, tmp.GetOutputLevel()); | |
891 ASSERT_EQ(ResourceType_Instance, tmp.GetModification().GetLevel()); | |
892 } | |
893 | |
894 { | |
895 ResourceModificationJob job(GetContext()); | |
896 job.SetMultipleResourcesModification(new DicomModification, true); | |
897 job.AddInstance("toto"); | |
898 job.AddInstance("tutu"); | |
899 job.AddTrailingStep(); // Necessary since 1.7.0 | |
900 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | |
901 ASSERT_TRUE(job.Serialize(s)); | |
902 } | |
903 | |
904 { | |
905 std::unique_ptr<IJob> job; | |
906 job.reset(unserializer.UnserializeJob(s)); | |
907 | |
908 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); | |
909 | |
910 std::set<std::string> instances; | |
911 for (size_t i = 0; i < tmp.GetInstancesCount(); i++) | |
912 { | |
913 instances.insert(tmp.GetInstance(i)); | |
914 } | |
915 | |
916 ASSERT_EQ(2u, instances.size()); | |
917 ASSERT_TRUE(instances.find("toto") != instances.end()); | |
918 ASSERT_TRUE(instances.find("tutu") != instances.end()); | |
919 | |
920 ASSERT_TRUE(tmp.IsAnonymization()); | |
921 ASSERT_FALSE(tmp.IsSingleResourceModification()); | |
922 ASSERT_THROW(tmp.GetOutputLevel(), OrthancException); | |
923 ASSERT_EQ(ResourceType_Instance, tmp.GetModification().GetLevel()); | |
924 } | |
925 | |
926 { | |
927 // Test behavior on broken serialization | |
928 ASSERT_FALSE(s.isMember("OutputLevel")); | |
929 ASSERT_TRUE(s.isMember("IsSingleResource")); | |
930 s.removeMember("IsSingleResource"); | |
931 | |
932 { | |
933 std::unique_ptr<IJob> job; | |
934 job.reset(unserializer.UnserializeJob(s)); | |
935 | |
936 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); | |
937 ASSERT_TRUE(tmp.IsAnonymization()); | |
938 ASSERT_TRUE(tmp.IsSingleResourceModification()); | |
939 ASSERT_EQ(ResourceType_Patient, tmp.GetOutputLevel()); | |
940 ASSERT_EQ(ResourceType_Instance, tmp.GetModification().GetLevel()); | |
941 } | |
942 | |
943 s["Modification"]["Level"] = "Series"; | |
944 | |
945 { | |
946 std::unique_ptr<IJob> job; | |
947 job.reset(unserializer.UnserializeJob(s)); | |
948 | |
949 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); | |
950 ASSERT_TRUE(tmp.IsAnonymization()); | |
951 ASSERT_TRUE(tmp.IsSingleResourceModification()); | |
952 ASSERT_EQ(ResourceType_Series, tmp.GetOutputLevel()); | |
953 ASSERT_EQ(ResourceType_Series, tmp.GetModification().GetLevel()); | |
954 } | |
864 } | 955 } |
865 | 956 |
866 // SplitStudyJob | 957 // SplitStudyJob |
867 | 958 |
868 std::string instance; | 959 std::string instance; |