Mercurial > hg > orthanc
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 } |