Mercurial > hg > orthanc
diff 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 |
line wrap: on
line diff
--- a/UnitTestsSources/MultiThreadingTests.cpp Thu Jun 07 18:18:02 2018 +0200 +++ b/UnitTestsSources/MultiThreadingTests.cpp Thu Jun 07 21:37:40 2018 +0200 @@ -59,7 +59,9 @@ #include "../OrthancServer/ServerJobs/Operations/SystemCallOperation.h" #include "../OrthancServer/ServerJobs/ArchiveJob.h" - +#include "../OrthancServer/ServerJobs/DicomModalityStoreJob.h" +#include "../OrthancServer/ServerJobs/OrthancPeerStoreJob.h" +#include "../OrthancServer/ServerJobs/ResourceModificationJob.h" using namespace Orthanc; @@ -951,6 +953,74 @@ } +TEST(JobsSerialization, DicomInstanceOrigin) +{ + Json::Value s; + + { + DicomInstanceOrigin origin; + origin.Serialize(s); + } + + { + DicomInstanceOrigin origin(s); + ASSERT_EQ(RequestOrigin_Unknown, origin.GetRequestOrigin()); + ASSERT_THROW(origin.GetRemoteIp(), OrthancException); + ASSERT_EQ("", std::string(origin.GetRemoteAetC())); + ASSERT_THROW(origin.GetCalledAet(), OrthancException); + ASSERT_THROW(origin.GetHttpUsername(), OrthancException); + } + + { + DicomInstanceOrigin origin(DicomInstanceOrigin::FromDicomProtocol("host", "aet", "called")); + origin.Serialize(s); + } + + { + DicomInstanceOrigin origin(s); + ASSERT_EQ(RequestOrigin_DicomProtocol, origin.GetRequestOrigin()); + ASSERT_EQ("host", origin.GetRemoteIp()); + ASSERT_EQ("aet", std::string(origin.GetRemoteAetC())); + ASSERT_EQ("called", origin.GetCalledAet()); + ASSERT_THROW(origin.GetHttpUsername(), OrthancException); + } + + { + DicomInstanceOrigin origin(DicomInstanceOrigin::FromHttp("host", "username")); + origin.Serialize(s); + } + + { + DicomInstanceOrigin origin(s); + ASSERT_EQ(RequestOrigin_RestApi, origin.GetRequestOrigin()); + ASSERT_EQ("host", origin.GetRemoteIp()); + ASSERT_EQ("", std::string(origin.GetRemoteAetC())); + ASSERT_THROW(origin.GetCalledAet(), OrthancException); + ASSERT_EQ("username", origin.GetHttpUsername()); + } + + { + DicomInstanceOrigin origin(DicomInstanceOrigin::FromLua()); + origin.Serialize(s); + } + + { + DicomInstanceOrigin origin(s); + ASSERT_EQ(RequestOrigin_Lua, origin.GetRequestOrigin()); + } + + { + DicomInstanceOrigin origin(DicomInstanceOrigin::FromPlugins()); + origin.Serialize(s); + } + + { + DicomInstanceOrigin origin(s); + ASSERT_EQ(RequestOrigin_Plugins, origin.GetRequestOrigin()); + } +} + + TEST(JobsSerialization, Registry) { // TODO : Test serialization of JobsRegistry @@ -1154,12 +1224,89 @@ { boost::shared_ptr<TemporaryFile> tmp(new TemporaryFile); ArchiveJob job(tmp, GetContext(), false, false); - ASSERT_FALSE(job.Serialize(s)); + ASSERT_FALSE(job.Serialize(s)); // Cannot serialize this + } + + // DicomModalityStoreJob + + { + RemoteModalityParameters modality; + modality.SetApplicationEntityTitle("REMOTE"); + modality.SetHost("192.168.1.1"); + modality.SetPort(1000); + modality.SetManufacturer(ModalityManufacturer_StoreScp); + + DicomModalityStoreJob job(GetContext()); + job.SetLocalAet("LOCAL"); + job.SetRemoteModality(modality); + job.SetMoveOriginator("MOVESCU", 42); + + ASSERT_TRUE(job.Serialize(s)); + } + + OrthancJobUnserializer unserializer(GetContext()); + + { + std::auto_ptr<IJob> job; + job.reset(unserializer.UnserializeJob(s)); + + DicomModalityStoreJob& tmp = dynamic_cast<DicomModalityStoreJob&>(*job); + ASSERT_EQ("LOCAL", tmp.GetLocalAet()); + ASSERT_EQ("REMOTE", tmp.GetRemoteModality().GetApplicationEntityTitle()); + ASSERT_EQ("192.168.1.1", tmp.GetRemoteModality().GetHost()); + ASSERT_EQ(1000, tmp.GetRemoteModality().GetPort()); + ASSERT_EQ(ModalityManufacturer_StoreScp, tmp.GetRemoteModality().GetManufacturer()); + ASSERT_TRUE(tmp.HasMoveOriginator()); + ASSERT_EQ("MOVESCU", tmp.GetMoveOriginatorAet()); + ASSERT_EQ(42, tmp.GetMoveOriginatorId()); } - // TODO : DicomModalityStoreJob + // OrthancPeerStoreJob + + { + WebServiceParameters peer; + peer.SetUrl("http://localhost/"); + peer.SetUsername("username"); + peer.SetPassword("password"); + peer.SetPkcs11Enabled(true); + + OrthancPeerStoreJob job(GetContext()); + job.SetPeer(peer); + + ASSERT_TRUE(job.Serialize(s)); + } + + { + std::auto_ptr<IJob> job; + job.reset(unserializer.UnserializeJob(s)); - // TODO : OrthancPeerStoreJob + OrthancPeerStoreJob& tmp = dynamic_cast<OrthancPeerStoreJob&>(*job); + ASSERT_EQ("http://localhost/", tmp.GetPeer().GetUrl()); + ASSERT_EQ("username", tmp.GetPeer().GetUsername()); + ASSERT_EQ("password", tmp.GetPeer().GetPassword()); + ASSERT_TRUE(tmp.GetPeer().IsPkcs11Enabled()); + } + + // ResourceModificationJob + + { + std::auto_ptr<DicomModification> modification(new DicomModification); + modification->SetupAnonymization(DicomVersion_2008); - // TODO : ResourceModificationJob + ResourceModificationJob job(GetContext()); + job.SetModification(modification.release(), true); + job.SetOrigin(DicomInstanceOrigin::FromLua()); + + ASSERT_TRUE(job.Serialize(s)); + } + + { + std::auto_ptr<IJob> job; + job.reset(unserializer.UnserializeJob(s)); + + ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); + ASSERT_TRUE(tmp.IsAnonymization()); + ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); + ASSERT_TRUE(tmp.GetModification().IsRemoved(DICOM_TAG_STUDY_DESCRIPTION)); + } }