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 }