comparison UnitTestsSources/MultiThreadingTests.cpp @ 3920:82e88ff003d7 c-get

merge default -> c-get
author Alain Mazy <alain@mazy.be>
date Tue, 12 May 2020 14:58:24 +0200
parents 8f7ad4989fec
children 5b882ad2ffd0
comparison
equal deleted inserted replaced
3918:dba48c162b7b 3920:82e88ff003d7
60 #include "../OrthancServer/ServerJobs/Operations/StoreScuOperation.h" 60 #include "../OrthancServer/ServerJobs/Operations/StoreScuOperation.h"
61 #include "../OrthancServer/ServerJobs/Operations/SystemCallOperation.h" 61 #include "../OrthancServer/ServerJobs/Operations/SystemCallOperation.h"
62 62
63 #include "../OrthancServer/ServerJobs/ArchiveJob.h" 63 #include "../OrthancServer/ServerJobs/ArchiveJob.h"
64 #include "../OrthancServer/ServerJobs/DicomModalityStoreJob.h" 64 #include "../OrthancServer/ServerJobs/DicomModalityStoreJob.h"
65 #include "../OrthancServer/ServerJobs/DicomMoveScuJob.h"
65 #include "../OrthancServer/ServerJobs/MergeStudyJob.h" 66 #include "../OrthancServer/ServerJobs/MergeStudyJob.h"
66 #include "../OrthancServer/ServerJobs/OrthancPeerStoreJob.h" 67 #include "../OrthancServer/ServerJobs/OrthancPeerStoreJob.h"
67 #include "../OrthancServer/ServerJobs/ResourceModificationJob.h" 68 #include "../OrthancServer/ServerJobs/ResourceModificationJob.h"
68 #include "../OrthancServer/ServerJobs/SplitStudyJob.h" 69 #include "../OrthancServer/ServerJobs/SplitStudyJob.h"
69 70
1312 false, DicomReplaceMode_InsertIfAbsent, ""); 1313 false, DicomReplaceMode_InsertIfAbsent, "");
1313 1314
1314 DicomInstanceToStore toStore; 1315 DicomInstanceToStore toStore;
1315 toStore.SetParsedDicomFile(dicom); 1316 toStore.SetParsedDicomFile(dicom);
1316 1317
1317 return (context_->Store(id, toStore) == StoreStatus_Success); 1318 return (context_->Store(id, toStore, StoreInstanceMode_Default) == StoreStatus_Success);
1318 } 1319 }
1319 }; 1320 };
1320 } 1321 }
1321 1322
1322 1323
1412 modality.SetApplicationEntityTitle("REMOTE"); 1413 modality.SetApplicationEntityTitle("REMOTE");
1413 modality.SetHost("192.168.1.1"); 1414 modality.SetHost("192.168.1.1");
1414 modality.SetPortNumber(1000); 1415 modality.SetPortNumber(1000);
1415 modality.SetManufacturer(ModalityManufacturer_StoreScp); 1416 modality.SetManufacturer(ModalityManufacturer_StoreScp);
1416 1417
1417 StoreScuOperation operation(luaManager, "TEST", modality); 1418 StoreScuOperation operation(GetContext(), luaManager, "TEST", modality);
1418 1419
1419 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); 1420 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation));
1420 operation.Serialize(s); 1421 operation.Serialize(s);
1421 } 1422 }
1422 1423
1512 { 1513 {
1513 std::unique_ptr<IJob> job; 1514 std::unique_ptr<IJob> job;
1514 job.reset(unserializer.UnserializeJob(s)); 1515 job.reset(unserializer.UnserializeJob(s));
1515 1516
1516 DicomModalityStoreJob& tmp = dynamic_cast<DicomModalityStoreJob&>(*job); 1517 DicomModalityStoreJob& tmp = dynamic_cast<DicomModalityStoreJob&>(*job);
1517 ASSERT_EQ("LOCAL", tmp.GetLocalAet()); 1518 ASSERT_EQ("LOCAL", tmp.GetParameters().GetLocalApplicationEntityTitle());
1518 ASSERT_EQ("REMOTE", tmp.GetRemoteModality().GetApplicationEntityTitle()); 1519 ASSERT_EQ("REMOTE", tmp.GetParameters().GetRemoteModality().GetApplicationEntityTitle());
1519 ASSERT_EQ("192.168.1.1", tmp.GetRemoteModality().GetHost()); 1520 ASSERT_EQ("192.168.1.1", tmp.GetParameters().GetRemoteModality().GetHost());
1520 ASSERT_EQ(1000, tmp.GetRemoteModality().GetPortNumber()); 1521 ASSERT_EQ(1000, tmp.GetParameters().GetRemoteModality().GetPortNumber());
1521 ASSERT_EQ(ModalityManufacturer_StoreScp, tmp.GetRemoteModality().GetManufacturer()); 1522 ASSERT_EQ(ModalityManufacturer_StoreScp, tmp.GetParameters().GetRemoteModality().GetManufacturer());
1522 ASSERT_TRUE(tmp.HasMoveOriginator()); 1523 ASSERT_TRUE(tmp.HasMoveOriginator());
1523 ASSERT_EQ("MOVESCU", tmp.GetMoveOriginatorAet()); 1524 ASSERT_EQ("MOVESCU", tmp.GetMoveOriginatorAet());
1524 ASSERT_EQ(42, tmp.GetMoveOriginatorId()); 1525 ASSERT_EQ(42, tmp.GetMoveOriginatorId());
1525 } 1526 }
1526 1527
1900 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get)); 1901 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get));
1901 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store)); 1902 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store));
1902 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move)); 1903 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move));
1903 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); 1904 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
1904 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1905 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1906 ASSERT_TRUE(modality.IsTranscodingAllowed());
1905 } 1907 }
1906 1908
1907 s = Json::nullValue; 1909 s = Json::nullValue;
1908 1910
1909 { 1911 {
1930 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get)); 1932 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get));
1931 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store)); 1933 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store));
1932 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move)); 1934 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move));
1933 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); 1935 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
1934 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1936 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1937 ASSERT_TRUE(modality.IsTranscodingAllowed());
1935 } 1938 }
1936 1939
1937 s["Port"] = "46"; 1940 s["Port"] = "46";
1938 1941
1939 { 1942 {
1996 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); 1999 ASSERT_EQ("AET", modality.GetApplicationEntityTitle());
1997 ASSERT_EQ("host", modality.GetHost()); 2000 ASSERT_EQ("host", modality.GetHost());
1998 ASSERT_EQ(104u, modality.GetPortNumber()); 2001 ASSERT_EQ(104u, modality.GetPortNumber());
1999 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction)); 2002 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction));
2000 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 2003 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
2004 ASSERT_TRUE(modality.IsTranscodingAllowed());
2001 } 2005 }
2002 2006
2003 { 2007 {
2004 Json::Value s; 2008 Json::Value s;
2005 s["AllowNAction"] = false; 2009 s["AllowNAction"] = false;
2006 s["AllowNEventReport"] = true; 2010 s["AllowNEventReport"] = true;
2007 s["AET"] = "AET"; 2011 s["AET"] = "AET";
2008 s["Host"] = "host"; 2012 s["Host"] = "host";
2009 s["Port"] = "104"; 2013 s["Port"] = "104";
2014 s["AllowTranscoding"] = false;
2010 2015
2011 RemoteModalityParameters modality(s); 2016 RemoteModalityParameters modality(s);
2012 ASSERT_TRUE(modality.IsAdvancedFormatNeeded()); 2017 ASSERT_TRUE(modality.IsAdvancedFormatNeeded());
2013 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); 2018 ASSERT_EQ("AET", modality.GetApplicationEntityTitle());
2014 ASSERT_EQ("host", modality.GetHost()); 2019 ASSERT_EQ("host", modality.GetHost());
2015 ASSERT_EQ(104u, modality.GetPortNumber()); 2020 ASSERT_EQ(104u, modality.GetPortNumber());
2016 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction)); 2021 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction));
2017 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 2022 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
2023 ASSERT_FALSE(modality.IsTranscodingAllowed());
2018 } 2024 }
2019 2025
2020 { 2026 {
2021 Json::Value s; 2027 Json::Value s;
2022 s["AllowNAction"] = true; 2028 s["AllowNAction"] = true;
2030 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); 2036 ASSERT_EQ("AET", modality.GetApplicationEntityTitle());
2031 ASSERT_EQ("host", modality.GetHost()); 2037 ASSERT_EQ("host", modality.GetHost());
2032 ASSERT_EQ(104u, modality.GetPortNumber()); 2038 ASSERT_EQ(104u, modality.GetPortNumber());
2033 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); 2039 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
2034 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 2040 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
2035 } 2041 ASSERT_TRUE(modality.IsTranscodingAllowed());
2036 } 2042 }
2043 }
2044
2045
2046 TEST_F(OrthancJobsSerialization, DicomAssociationParameters)
2047 {
2048 Json::Value v;
2049
2050 {
2051 v = Json::objectValue;
2052 DicomAssociationParameters p;
2053 p.SerializeJob(v);
2054 }
2055
2056 {
2057 DicomAssociationParameters p = DicomAssociationParameters::UnserializeJob(v);
2058 ASSERT_EQ("ORTHANC", p.GetLocalApplicationEntityTitle());
2059 ASSERT_EQ("ANY-SCP", p.GetRemoteModality().GetApplicationEntityTitle());
2060 ASSERT_EQ(104u, p.GetRemoteModality().GetPortNumber());
2061 ASSERT_EQ(ModalityManufacturer_Generic, p.GetRemoteModality().GetManufacturer());
2062 ASSERT_EQ("127.0.0.1", p.GetRemoteModality().GetHost());
2063 ASSERT_EQ(DicomAssociationParameters::GetDefaultTimeout(), p.GetTimeout());
2064 }
2065
2066 {
2067 v = Json::objectValue;
2068 DicomAssociationParameters p;
2069 p.SetLocalApplicationEntityTitle("HELLO");
2070 p.SetRemoteApplicationEntityTitle("WORLD");
2071 p.SetRemotePort(42);
2072 p.SetRemoteHost("MY_HOST");
2073 p.SetTimeout(43);
2074 p.SerializeJob(v);
2075 }
2076
2077 {
2078 DicomAssociationParameters p = DicomAssociationParameters::UnserializeJob(v);
2079 ASSERT_EQ("HELLO", p.GetLocalApplicationEntityTitle());
2080 ASSERT_EQ("WORLD", p.GetRemoteModality().GetApplicationEntityTitle());
2081 ASSERT_EQ(42u, p.GetRemoteModality().GetPortNumber());
2082 ASSERT_EQ(ModalityManufacturer_Generic, p.GetRemoteModality().GetManufacturer());
2083 ASSERT_EQ("MY_HOST", p.GetRemoteModality().GetHost());
2084 ASSERT_EQ(43u, p.GetTimeout());
2085 }
2086
2087 {
2088 DicomModalityStoreJob job(GetContext());
2089 job.Serialize(v);
2090 }
2091
2092 {
2093 OrthancJobUnserializer unserializer(GetContext());
2094 std::unique_ptr<DicomModalityStoreJob> job(
2095 dynamic_cast<DicomModalityStoreJob*>(unserializer.UnserializeJob(v)));
2096 ASSERT_EQ("ORTHANC", job->GetParameters().GetLocalApplicationEntityTitle());
2097 ASSERT_EQ("ANY-SCP", job->GetParameters().GetRemoteModality().GetApplicationEntityTitle());
2098 ASSERT_EQ("127.0.0.1", job->GetParameters().GetRemoteModality().GetHost());
2099 ASSERT_EQ(104u, job->GetParameters().GetRemoteModality().GetPortNumber());
2100 ASSERT_EQ(ModalityManufacturer_Generic, job->GetParameters().GetRemoteModality().GetManufacturer());
2101 ASSERT_EQ(DicomAssociationParameters::GetDefaultTimeout(), job->GetParameters().GetTimeout());
2102 ASSERT_FALSE(job->HasMoveOriginator());
2103 ASSERT_THROW(job->GetMoveOriginatorAet(), OrthancException);
2104 ASSERT_THROW(job->GetMoveOriginatorId(), OrthancException);
2105 ASSERT_FALSE(job->HasStorageCommitment());
2106 }
2107
2108 {
2109 RemoteModalityParameters r;
2110 r.SetApplicationEntityTitle("HELLO");
2111 r.SetPortNumber(42);
2112 r.SetHost("MY_HOST");
2113
2114 DicomModalityStoreJob job(GetContext());
2115 job.SetLocalAet("WORLD");
2116 job.SetRemoteModality(r);
2117 job.SetTimeout(43);
2118 job.SetMoveOriginator("ORIGINATOR", 100);
2119 job.EnableStorageCommitment(true);
2120 job.Serialize(v);
2121 }
2122
2123 {
2124 OrthancJobUnserializer unserializer(GetContext());
2125 std::unique_ptr<DicomModalityStoreJob> job(
2126 dynamic_cast<DicomModalityStoreJob*>(unserializer.UnserializeJob(v)));
2127 ASSERT_EQ("WORLD", job->GetParameters().GetLocalApplicationEntityTitle());
2128 ASSERT_EQ("HELLO", job->GetParameters().GetRemoteModality().GetApplicationEntityTitle());
2129 ASSERT_EQ("MY_HOST", job->GetParameters().GetRemoteModality().GetHost());
2130 ASSERT_EQ(42u, job->GetParameters().GetRemoteModality().GetPortNumber());
2131 ASSERT_EQ(ModalityManufacturer_Generic, job->GetParameters().GetRemoteModality().GetManufacturer());
2132 ASSERT_EQ(43u, job->GetParameters().GetTimeout());
2133 ASSERT_TRUE(job->HasMoveOriginator());
2134 ASSERT_EQ("ORIGINATOR", job->GetMoveOriginatorAet());
2135 ASSERT_EQ(100, job->GetMoveOriginatorId());
2136 ASSERT_TRUE(job->HasStorageCommitment());
2137 }
2138
2139 {
2140 DicomMoveScuJob job(GetContext());
2141 job.Serialize(v);
2142 }
2143
2144 {
2145 OrthancJobUnserializer unserializer(GetContext());
2146 std::unique_ptr<DicomMoveScuJob> job(
2147 dynamic_cast<DicomMoveScuJob*>(unserializer.UnserializeJob(v)));
2148 ASSERT_EQ("ORTHANC", job->GetParameters().GetLocalApplicationEntityTitle());
2149 ASSERT_EQ("ANY-SCP", job->GetParameters().GetRemoteModality().GetApplicationEntityTitle());
2150 ASSERT_EQ("127.0.0.1", job->GetParameters().GetRemoteModality().GetHost());
2151 ASSERT_EQ(104u, job->GetParameters().GetRemoteModality().GetPortNumber());
2152 ASSERT_EQ(ModalityManufacturer_Generic, job->GetParameters().GetRemoteModality().GetManufacturer());
2153 ASSERT_EQ(DicomAssociationParameters::GetDefaultTimeout(), job->GetParameters().GetTimeout());
2154 }
2155
2156 {
2157 RemoteModalityParameters r;
2158 r.SetApplicationEntityTitle("HELLO");
2159 r.SetPortNumber(42);
2160 r.SetHost("MY_HOST");
2161
2162 DicomMoveScuJob job(GetContext());
2163 job.SetLocalAet("WORLD");
2164 job.SetRemoteModality(r);
2165 job.SetTimeout(43);
2166 job.Serialize(v);
2167 }
2168
2169 {
2170 OrthancJobUnserializer unserializer(GetContext());
2171 std::unique_ptr<DicomMoveScuJob> job(
2172 dynamic_cast<DicomMoveScuJob*>(unserializer.UnserializeJob(v)));
2173 ASSERT_EQ("WORLD", job->GetParameters().GetLocalApplicationEntityTitle());
2174 ASSERT_EQ("HELLO", job->GetParameters().GetRemoteModality().GetApplicationEntityTitle());
2175 ASSERT_EQ("MY_HOST", job->GetParameters().GetRemoteModality().GetHost());
2176 ASSERT_EQ(42u, job->GetParameters().GetRemoteModality().GetPortNumber());
2177 ASSERT_EQ(ModalityManufacturer_Generic, job->GetParameters().GetRemoteModality().GetManufacturer());
2178 ASSERT_EQ(43u, job->GetParameters().GetTimeout());
2179 }
2180 }