comparison UnitTestsSources/MultiThreadingTests.cpp @ 3956:6e14f2da7c7e

integration transcoding->mainline
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 20 May 2020 16:42:44 +0200
parents ef696db8426f
children
comparison
equal deleted inserted replaced
3892:fe0e4ef52a72 3956:6e14f2da7c7e
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
1546 OrthancPeerStoreJob& tmp = dynamic_cast<OrthancPeerStoreJob&>(*job); 1547 OrthancPeerStoreJob& tmp = dynamic_cast<OrthancPeerStoreJob&>(*job);
1547 ASSERT_EQ("http://localhost/", tmp.GetPeer().GetUrl()); 1548 ASSERT_EQ("http://localhost/", tmp.GetPeer().GetUrl());
1548 ASSERT_EQ("username", tmp.GetPeer().GetUsername()); 1549 ASSERT_EQ("username", tmp.GetPeer().GetUsername());
1549 ASSERT_EQ("password", tmp.GetPeer().GetPassword()); 1550 ASSERT_EQ("password", tmp.GetPeer().GetPassword());
1550 ASSERT_TRUE(tmp.GetPeer().IsPkcs11Enabled()); 1551 ASSERT_TRUE(tmp.GetPeer().IsPkcs11Enabled());
1552 ASSERT_FALSE(tmp.IsTranscode());
1553 ASSERT_THROW(tmp.GetTransferSyntax(), OrthancException);
1554 }
1555
1556 {
1557 OrthancPeerStoreJob job(GetContext());
1558 ASSERT_THROW(job.SetTranscode("nope"), OrthancException);
1559 job.SetTranscode("1.2.840.10008.1.2.4.50");
1560
1561 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job));
1562 ASSERT_TRUE(job.Serialize(s));
1563 }
1564
1565 {
1566 std::unique_ptr<IJob> job;
1567 job.reset(unserializer.UnserializeJob(s));
1568
1569 OrthancPeerStoreJob& tmp = dynamic_cast<OrthancPeerStoreJob&>(*job);
1570 ASSERT_EQ("http://127.0.0.1:8042/", tmp.GetPeer().GetUrl());
1571 ASSERT_EQ("", tmp.GetPeer().GetUsername());
1572 ASSERT_EQ("", tmp.GetPeer().GetPassword());
1573 ASSERT_FALSE(tmp.GetPeer().IsPkcs11Enabled());
1574 ASSERT_TRUE(tmp.IsTranscode());
1575 ASSERT_EQ(DicomTransferSyntax_JPEGProcess1, tmp.GetTransferSyntax());
1551 } 1576 }
1552 1577
1553 // ResourceModificationJob 1578 // ResourceModificationJob
1554 1579
1555 { 1580 {
1557 modification->SetupAnonymization(DicomVersion_2008); 1582 modification->SetupAnonymization(DicomVersion_2008);
1558 1583
1559 ResourceModificationJob job(GetContext()); 1584 ResourceModificationJob job(GetContext());
1560 job.SetModification(modification.release(), ResourceType_Patient, true); 1585 job.SetModification(modification.release(), ResourceType_Patient, true);
1561 job.SetOrigin(DicomInstanceOrigin::FromLua()); 1586 job.SetOrigin(DicomInstanceOrigin::FromLua());
1562 1587
1588 job.AddTrailingStep(); // Necessary since 1.7.0
1563 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); 1589 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job));
1564 ASSERT_TRUE(job.Serialize(s)); 1590 ASSERT_TRUE(job.Serialize(s));
1565 } 1591 }
1566 1592
1567 { 1593 {
1568 std::unique_ptr<IJob> job; 1594 std::unique_ptr<IJob> job;
1569 job.reset(unserializer.UnserializeJob(s)); 1595 job.reset(unserializer.UnserializeJob(s));
1570 1596
1571 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); 1597 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job);
1572 ASSERT_TRUE(tmp.IsAnonymization()); 1598 ASSERT_TRUE(tmp.IsAnonymization());
1599 ASSERT_FALSE(tmp.IsTranscode());
1600 ASSERT_THROW(tmp.GetTransferSyntax(), OrthancException);
1573 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); 1601 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin());
1574 ASSERT_TRUE(tmp.GetModification().IsRemoved(DICOM_TAG_STUDY_DESCRIPTION)); 1602 ASSERT_TRUE(tmp.GetModification().IsRemoved(DICOM_TAG_STUDY_DESCRIPTION));
1603 }
1604
1605 {
1606 ResourceModificationJob job(GetContext());
1607 ASSERT_THROW(job.SetTranscode("nope"), OrthancException);
1608 job.SetTranscode(DicomTransferSyntax_JPEGProcess1);
1609
1610 job.AddTrailingStep(); // Necessary since 1.7.0
1611 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job));
1612 ASSERT_TRUE(job.Serialize(s));
1613 }
1614
1615 {
1616 std::unique_ptr<IJob> job;
1617 job.reset(unserializer.UnserializeJob(s));
1618
1619 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job);
1620 ASSERT_FALSE(tmp.IsAnonymization());
1621 ASSERT_TRUE(tmp.IsTranscode());
1622 ASSERT_EQ(DicomTransferSyntax_JPEGProcess1, tmp.GetTransferSyntax());
1623 ASSERT_EQ(RequestOrigin_Unknown, tmp.GetOrigin().GetRequestOrigin());
1575 } 1624 }
1576 1625
1577 // SplitStudyJob 1626 // SplitStudyJob
1578 1627
1579 std::string instance; 1628 std::string instance;
1900 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get)); 1949 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get));
1901 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store)); 1950 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store));
1902 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move)); 1951 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move));
1903 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); 1952 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
1904 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1953 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1954 ASSERT_TRUE(modality.IsTranscodingAllowed());
1905 } 1955 }
1906 1956
1907 s = Json::nullValue; 1957 s = Json::nullValue;
1908 1958
1909 { 1959 {
1930 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get)); 1980 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get));
1931 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store)); 1981 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store));
1932 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move)); 1982 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move));
1933 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); 1983 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
1934 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1984 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1985 ASSERT_TRUE(modality.IsTranscodingAllowed());
1935 } 1986 }
1936 1987
1937 s["Port"] = "46"; 1988 s["Port"] = "46";
1938 1989
1939 { 1990 {
1996 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); 2047 ASSERT_EQ("AET", modality.GetApplicationEntityTitle());
1997 ASSERT_EQ("host", modality.GetHost()); 2048 ASSERT_EQ("host", modality.GetHost());
1998 ASSERT_EQ(104u, modality.GetPortNumber()); 2049 ASSERT_EQ(104u, modality.GetPortNumber());
1999 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction)); 2050 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction));
2000 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 2051 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
2052 ASSERT_TRUE(modality.IsTranscodingAllowed());
2001 } 2053 }
2002 2054
2003 { 2055 {
2004 Json::Value s; 2056 Json::Value s;
2005 s["AllowNAction"] = false; 2057 s["AllowNAction"] = false;
2006 s["AllowNEventReport"] = true; 2058 s["AllowNEventReport"] = true;
2007 s["AET"] = "AET"; 2059 s["AET"] = "AET";
2008 s["Host"] = "host"; 2060 s["Host"] = "host";
2009 s["Port"] = "104"; 2061 s["Port"] = "104";
2062 s["AllowTranscoding"] = false;
2010 2063
2011 RemoteModalityParameters modality(s); 2064 RemoteModalityParameters modality(s);
2012 ASSERT_TRUE(modality.IsAdvancedFormatNeeded()); 2065 ASSERT_TRUE(modality.IsAdvancedFormatNeeded());
2013 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); 2066 ASSERT_EQ("AET", modality.GetApplicationEntityTitle());
2014 ASSERT_EQ("host", modality.GetHost()); 2067 ASSERT_EQ("host", modality.GetHost());
2015 ASSERT_EQ(104u, modality.GetPortNumber()); 2068 ASSERT_EQ(104u, modality.GetPortNumber());
2016 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction)); 2069 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction));
2017 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 2070 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
2071 ASSERT_FALSE(modality.IsTranscodingAllowed());
2018 } 2072 }
2019 2073
2020 { 2074 {
2021 Json::Value s; 2075 Json::Value s;
2022 s["AllowNAction"] = true; 2076 s["AllowNAction"] = true;
2030 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); 2084 ASSERT_EQ("AET", modality.GetApplicationEntityTitle());
2031 ASSERT_EQ("host", modality.GetHost()); 2085 ASSERT_EQ("host", modality.GetHost());
2032 ASSERT_EQ(104u, modality.GetPortNumber()); 2086 ASSERT_EQ(104u, modality.GetPortNumber());
2033 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); 2087 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
2034 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 2088 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
2035 } 2089 ASSERT_TRUE(modality.IsTranscodingAllowed());
2036 } 2090 }
2091 }
2092
2093
2094 TEST_F(OrthancJobsSerialization, DicomAssociationParameters)
2095 {
2096 Json::Value v;
2097
2098 {
2099 v = Json::objectValue;
2100 DicomAssociationParameters p;
2101 p.SerializeJob(v);
2102 }
2103
2104 {
2105 DicomAssociationParameters p = DicomAssociationParameters::UnserializeJob(v);
2106 ASSERT_EQ("ORTHANC", p.GetLocalApplicationEntityTitle());
2107 ASSERT_EQ("ANY-SCP", p.GetRemoteModality().GetApplicationEntityTitle());
2108 ASSERT_EQ(104u, p.GetRemoteModality().GetPortNumber());
2109 ASSERT_EQ(ModalityManufacturer_Generic, p.GetRemoteModality().GetManufacturer());
2110 ASSERT_EQ("127.0.0.1", p.GetRemoteModality().GetHost());
2111 ASSERT_EQ(DicomAssociationParameters::GetDefaultTimeout(), p.GetTimeout());
2112 }
2113
2114 {
2115 v = Json::objectValue;
2116 DicomAssociationParameters p;
2117 p.SetLocalApplicationEntityTitle("HELLO");
2118 p.SetRemoteApplicationEntityTitle("WORLD");
2119 p.SetRemotePort(42);
2120 p.SetRemoteHost("MY_HOST");
2121 p.SetTimeout(43);
2122 p.SerializeJob(v);
2123 }
2124
2125 {
2126 DicomAssociationParameters p = DicomAssociationParameters::UnserializeJob(v);
2127 ASSERT_EQ("HELLO", p.GetLocalApplicationEntityTitle());
2128 ASSERT_EQ("WORLD", p.GetRemoteModality().GetApplicationEntityTitle());
2129 ASSERT_EQ(42u, p.GetRemoteModality().GetPortNumber());
2130 ASSERT_EQ(ModalityManufacturer_Generic, p.GetRemoteModality().GetManufacturer());
2131 ASSERT_EQ("MY_HOST", p.GetRemoteModality().GetHost());
2132 ASSERT_EQ(43u, p.GetTimeout());
2133 }
2134
2135 {
2136 DicomModalityStoreJob job(GetContext());
2137 job.Serialize(v);
2138 }
2139
2140 {
2141 OrthancJobUnserializer unserializer(GetContext());
2142 std::unique_ptr<DicomModalityStoreJob> job(
2143 dynamic_cast<DicomModalityStoreJob*>(unserializer.UnserializeJob(v)));
2144 ASSERT_EQ("ORTHANC", job->GetParameters().GetLocalApplicationEntityTitle());
2145 ASSERT_EQ("ANY-SCP", job->GetParameters().GetRemoteModality().GetApplicationEntityTitle());
2146 ASSERT_EQ("127.0.0.1", job->GetParameters().GetRemoteModality().GetHost());
2147 ASSERT_EQ(104u, job->GetParameters().GetRemoteModality().GetPortNumber());
2148 ASSERT_EQ(ModalityManufacturer_Generic, job->GetParameters().GetRemoteModality().GetManufacturer());
2149 ASSERT_EQ(DicomAssociationParameters::GetDefaultTimeout(), job->GetParameters().GetTimeout());
2150 ASSERT_FALSE(job->HasMoveOriginator());
2151 ASSERT_THROW(job->GetMoveOriginatorAet(), OrthancException);
2152 ASSERT_THROW(job->GetMoveOriginatorId(), OrthancException);
2153 ASSERT_FALSE(job->HasStorageCommitment());
2154 }
2155
2156 {
2157 RemoteModalityParameters r;
2158 r.SetApplicationEntityTitle("HELLO");
2159 r.SetPortNumber(42);
2160 r.SetHost("MY_HOST");
2161
2162 DicomModalityStoreJob job(GetContext());
2163 job.SetLocalAet("WORLD");
2164 job.SetRemoteModality(r);
2165 job.SetTimeout(43);
2166 job.SetMoveOriginator("ORIGINATOR", 100);
2167 job.EnableStorageCommitment(true);
2168 job.Serialize(v);
2169 }
2170
2171 {
2172 OrthancJobUnserializer unserializer(GetContext());
2173 std::unique_ptr<DicomModalityStoreJob> job(
2174 dynamic_cast<DicomModalityStoreJob*>(unserializer.UnserializeJob(v)));
2175 ASSERT_EQ("WORLD", job->GetParameters().GetLocalApplicationEntityTitle());
2176 ASSERT_EQ("HELLO", job->GetParameters().GetRemoteModality().GetApplicationEntityTitle());
2177 ASSERT_EQ("MY_HOST", job->GetParameters().GetRemoteModality().GetHost());
2178 ASSERT_EQ(42u, job->GetParameters().GetRemoteModality().GetPortNumber());
2179 ASSERT_EQ(ModalityManufacturer_Generic, job->GetParameters().GetRemoteModality().GetManufacturer());
2180 ASSERT_EQ(43u, job->GetParameters().GetTimeout());
2181 ASSERT_TRUE(job->HasMoveOriginator());
2182 ASSERT_EQ("ORIGINATOR", job->GetMoveOriginatorAet());
2183 ASSERT_EQ(100, job->GetMoveOriginatorId());
2184 ASSERT_TRUE(job->HasStorageCommitment());
2185 }
2186
2187 {
2188 DicomMoveScuJob job(GetContext());
2189 job.Serialize(v);
2190 }
2191
2192 {
2193 OrthancJobUnserializer unserializer(GetContext());
2194 std::unique_ptr<DicomMoveScuJob> job(
2195 dynamic_cast<DicomMoveScuJob*>(unserializer.UnserializeJob(v)));
2196 ASSERT_EQ("ORTHANC", job->GetParameters().GetLocalApplicationEntityTitle());
2197 ASSERT_EQ("ANY-SCP", job->GetParameters().GetRemoteModality().GetApplicationEntityTitle());
2198 ASSERT_EQ("127.0.0.1", job->GetParameters().GetRemoteModality().GetHost());
2199 ASSERT_EQ(104u, job->GetParameters().GetRemoteModality().GetPortNumber());
2200 ASSERT_EQ(ModalityManufacturer_Generic, job->GetParameters().GetRemoteModality().GetManufacturer());
2201 ASSERT_EQ(DicomAssociationParameters::GetDefaultTimeout(), job->GetParameters().GetTimeout());
2202 }
2203
2204 {
2205 RemoteModalityParameters r;
2206 r.SetApplicationEntityTitle("HELLO");
2207 r.SetPortNumber(42);
2208 r.SetHost("MY_HOST");
2209
2210 DicomMoveScuJob job(GetContext());
2211 job.SetLocalAet("WORLD");
2212 job.SetRemoteModality(r);
2213 job.SetTimeout(43);
2214 job.Serialize(v);
2215 }
2216
2217 {
2218 OrthancJobUnserializer unserializer(GetContext());
2219 std::unique_ptr<DicomMoveScuJob> job(
2220 dynamic_cast<DicomMoveScuJob*>(unserializer.UnserializeJob(v)));
2221 ASSERT_EQ("WORLD", job->GetParameters().GetLocalApplicationEntityTitle());
2222 ASSERT_EQ("HELLO", job->GetParameters().GetRemoteModality().GetApplicationEntityTitle());
2223 ASSERT_EQ("MY_HOST", job->GetParameters().GetRemoteModality().GetHost());
2224 ASSERT_EQ(42u, job->GetParameters().GetRemoteModality().GetPortNumber());
2225 ASSERT_EQ(ModalityManufacturer_Generic, job->GetParameters().GetRemoteModality().GetManufacturer());
2226 ASSERT_EQ(43u, job->GetParameters().GetTimeout());
2227 }
2228 }