Mercurial > hg > orthanc
comparison UnitTestsSources/MultiThreadingTests.cpp @ 2664:a21b244efb37 jobs
serialization of DicomModalityStoreJob, OrthancPeerStoreJob and ResourceModificationJob
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 07 Jun 2018 21:37:40 +0200 |
parents | 228e2783ce83 |
children | 389d050a2e66 |
comparison
equal
deleted
inserted
replaced
2663:228e2783ce83 | 2664:a21b244efb37 |
---|---|
57 #include "../OrthancServer/ServerJobs/Operations/StorePeerOperation.h" | 57 #include "../OrthancServer/ServerJobs/Operations/StorePeerOperation.h" |
58 #include "../OrthancServer/ServerJobs/Operations/StoreScuOperation.h" | 58 #include "../OrthancServer/ServerJobs/Operations/StoreScuOperation.h" |
59 #include "../OrthancServer/ServerJobs/Operations/SystemCallOperation.h" | 59 #include "../OrthancServer/ServerJobs/Operations/SystemCallOperation.h" |
60 | 60 |
61 #include "../OrthancServer/ServerJobs/ArchiveJob.h" | 61 #include "../OrthancServer/ServerJobs/ArchiveJob.h" |
62 | 62 #include "../OrthancServer/ServerJobs/DicomModalityStoreJob.h" |
63 #include "../OrthancServer/ServerJobs/OrthancPeerStoreJob.h" | |
64 #include "../OrthancServer/ServerJobs/ResourceModificationJob.h" | |
63 | 65 |
64 | 66 |
65 using namespace Orthanc; | 67 using namespace Orthanc; |
66 | 68 |
67 namespace | 69 namespace |
949 ASSERT_TRUE(IsSameTagValue(*modified, *second, DICOM_TAG_SERIES_INSTANCE_UID)); | 951 ASSERT_TRUE(IsSameTagValue(*modified, *second, DICOM_TAG_SERIES_INSTANCE_UID)); |
950 } | 952 } |
951 } | 953 } |
952 | 954 |
953 | 955 |
956 TEST(JobsSerialization, DicomInstanceOrigin) | |
957 { | |
958 Json::Value s; | |
959 | |
960 { | |
961 DicomInstanceOrigin origin; | |
962 origin.Serialize(s); | |
963 } | |
964 | |
965 { | |
966 DicomInstanceOrigin origin(s); | |
967 ASSERT_EQ(RequestOrigin_Unknown, origin.GetRequestOrigin()); | |
968 ASSERT_THROW(origin.GetRemoteIp(), OrthancException); | |
969 ASSERT_EQ("", std::string(origin.GetRemoteAetC())); | |
970 ASSERT_THROW(origin.GetCalledAet(), OrthancException); | |
971 ASSERT_THROW(origin.GetHttpUsername(), OrthancException); | |
972 } | |
973 | |
974 { | |
975 DicomInstanceOrigin origin(DicomInstanceOrigin::FromDicomProtocol("host", "aet", "called")); | |
976 origin.Serialize(s); | |
977 } | |
978 | |
979 { | |
980 DicomInstanceOrigin origin(s); | |
981 ASSERT_EQ(RequestOrigin_DicomProtocol, origin.GetRequestOrigin()); | |
982 ASSERT_EQ("host", origin.GetRemoteIp()); | |
983 ASSERT_EQ("aet", std::string(origin.GetRemoteAetC())); | |
984 ASSERT_EQ("called", origin.GetCalledAet()); | |
985 ASSERT_THROW(origin.GetHttpUsername(), OrthancException); | |
986 } | |
987 | |
988 { | |
989 DicomInstanceOrigin origin(DicomInstanceOrigin::FromHttp("host", "username")); | |
990 origin.Serialize(s); | |
991 } | |
992 | |
993 { | |
994 DicomInstanceOrigin origin(s); | |
995 ASSERT_EQ(RequestOrigin_RestApi, origin.GetRequestOrigin()); | |
996 ASSERT_EQ("host", origin.GetRemoteIp()); | |
997 ASSERT_EQ("", std::string(origin.GetRemoteAetC())); | |
998 ASSERT_THROW(origin.GetCalledAet(), OrthancException); | |
999 ASSERT_EQ("username", origin.GetHttpUsername()); | |
1000 } | |
1001 | |
1002 { | |
1003 DicomInstanceOrigin origin(DicomInstanceOrigin::FromLua()); | |
1004 origin.Serialize(s); | |
1005 } | |
1006 | |
1007 { | |
1008 DicomInstanceOrigin origin(s); | |
1009 ASSERT_EQ(RequestOrigin_Lua, origin.GetRequestOrigin()); | |
1010 } | |
1011 | |
1012 { | |
1013 DicomInstanceOrigin origin(DicomInstanceOrigin::FromPlugins()); | |
1014 origin.Serialize(s); | |
1015 } | |
1016 | |
1017 { | |
1018 DicomInstanceOrigin origin(s); | |
1019 ASSERT_EQ(RequestOrigin_Plugins, origin.GetRequestOrigin()); | |
1020 } | |
1021 } | |
1022 | |
1023 | |
954 TEST(JobsSerialization, Registry) | 1024 TEST(JobsSerialization, Registry) |
955 { | 1025 { |
956 // TODO : Test serialization of JobsRegistry | 1026 // TODO : Test serialization of JobsRegistry |
957 } | 1027 } |
958 | 1028 |
1152 Json::Value s; | 1222 Json::Value s; |
1153 | 1223 |
1154 { | 1224 { |
1155 boost::shared_ptr<TemporaryFile> tmp(new TemporaryFile); | 1225 boost::shared_ptr<TemporaryFile> tmp(new TemporaryFile); |
1156 ArchiveJob job(tmp, GetContext(), false, false); | 1226 ArchiveJob job(tmp, GetContext(), false, false); |
1157 ASSERT_FALSE(job.Serialize(s)); | 1227 ASSERT_FALSE(job.Serialize(s)); // Cannot serialize this |
1158 } | 1228 } |
1159 | 1229 |
1160 // TODO : DicomModalityStoreJob | 1230 // DicomModalityStoreJob |
1161 | 1231 |
1162 // TODO : OrthancPeerStoreJob | 1232 { |
1163 | 1233 RemoteModalityParameters modality; |
1164 // TODO : ResourceModificationJob | 1234 modality.SetApplicationEntityTitle("REMOTE"); |
1165 } | 1235 modality.SetHost("192.168.1.1"); |
1236 modality.SetPort(1000); | |
1237 modality.SetManufacturer(ModalityManufacturer_StoreScp); | |
1238 | |
1239 DicomModalityStoreJob job(GetContext()); | |
1240 job.SetLocalAet("LOCAL"); | |
1241 job.SetRemoteModality(modality); | |
1242 job.SetMoveOriginator("MOVESCU", 42); | |
1243 | |
1244 ASSERT_TRUE(job.Serialize(s)); | |
1245 } | |
1246 | |
1247 OrthancJobUnserializer unserializer(GetContext()); | |
1248 | |
1249 { | |
1250 std::auto_ptr<IJob> job; | |
1251 job.reset(unserializer.UnserializeJob(s)); | |
1252 | |
1253 DicomModalityStoreJob& tmp = dynamic_cast<DicomModalityStoreJob&>(*job); | |
1254 ASSERT_EQ("LOCAL", tmp.GetLocalAet()); | |
1255 ASSERT_EQ("REMOTE", tmp.GetRemoteModality().GetApplicationEntityTitle()); | |
1256 ASSERT_EQ("192.168.1.1", tmp.GetRemoteModality().GetHost()); | |
1257 ASSERT_EQ(1000, tmp.GetRemoteModality().GetPort()); | |
1258 ASSERT_EQ(ModalityManufacturer_StoreScp, tmp.GetRemoteModality().GetManufacturer()); | |
1259 ASSERT_TRUE(tmp.HasMoveOriginator()); | |
1260 ASSERT_EQ("MOVESCU", tmp.GetMoveOriginatorAet()); | |
1261 ASSERT_EQ(42, tmp.GetMoveOriginatorId()); | |
1262 } | |
1263 | |
1264 // OrthancPeerStoreJob | |
1265 | |
1266 { | |
1267 WebServiceParameters peer; | |
1268 peer.SetUrl("http://localhost/"); | |
1269 peer.SetUsername("username"); | |
1270 peer.SetPassword("password"); | |
1271 peer.SetPkcs11Enabled(true); | |
1272 | |
1273 OrthancPeerStoreJob job(GetContext()); | |
1274 job.SetPeer(peer); | |
1275 | |
1276 ASSERT_TRUE(job.Serialize(s)); | |
1277 } | |
1278 | |
1279 { | |
1280 std::auto_ptr<IJob> job; | |
1281 job.reset(unserializer.UnserializeJob(s)); | |
1282 | |
1283 OrthancPeerStoreJob& tmp = dynamic_cast<OrthancPeerStoreJob&>(*job); | |
1284 ASSERT_EQ("http://localhost/", tmp.GetPeer().GetUrl()); | |
1285 ASSERT_EQ("username", tmp.GetPeer().GetUsername()); | |
1286 ASSERT_EQ("password", tmp.GetPeer().GetPassword()); | |
1287 ASSERT_TRUE(tmp.GetPeer().IsPkcs11Enabled()); | |
1288 } | |
1289 | |
1290 // ResourceModificationJob | |
1291 | |
1292 { | |
1293 std::auto_ptr<DicomModification> modification(new DicomModification); | |
1294 modification->SetupAnonymization(DicomVersion_2008); | |
1295 | |
1296 ResourceModificationJob job(GetContext()); | |
1297 job.SetModification(modification.release(), true); | |
1298 job.SetOrigin(DicomInstanceOrigin::FromLua()); | |
1299 | |
1300 ASSERT_TRUE(job.Serialize(s)); | |
1301 } | |
1302 | |
1303 { | |
1304 std::auto_ptr<IJob> job; | |
1305 job.reset(unserializer.UnserializeJob(s)); | |
1306 | |
1307 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); | |
1308 ASSERT_TRUE(tmp.IsAnonymization()); | |
1309 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); | |
1310 ASSERT_TRUE(tmp.GetModification().IsRemoved(DICOM_TAG_STUDY_DESCRIPTION)); | |
1311 } | |
1312 } |