comparison OrthancFramework/UnitTestsSources/JobsTests.cpp @ 4518:cb8fcecf1b02

new option "Timeout" in "DicomModalities" to set DICOM SCU timeout on a per-modality basis
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 22 Feb 2021 16:32:11 +0100
parents 522e13a60cfc
children 82a314325351
comparison
equal deleted inserted replaced
4517:c494ee5d0101 4518:cb8fcecf1b02
1269 RemoteModalityParameters modality; 1269 RemoteModalityParameters modality;
1270 ASSERT_FALSE(modality.IsAdvancedFormatNeeded()); 1270 ASSERT_FALSE(modality.IsAdvancedFormatNeeded());
1271 modality.Serialize(s, false); 1271 modality.Serialize(s, false);
1272 ASSERT_EQ(Json::arrayValue, s.type()); 1272 ASSERT_EQ(Json::arrayValue, s.type());
1273 ASSERT_FALSE(modality.IsDicomTlsEnabled()); 1273 ASSERT_FALSE(modality.IsDicomTlsEnabled());
1274 ASSERT_FALSE(modality.HasTimeout());
1275 ASSERT_EQ(0u, modality.GetTimeout());
1274 } 1276 }
1275 1277
1276 { 1278 {
1277 RemoteModalityParameters modality(s); 1279 RemoteModalityParameters modality(s);
1278 ASSERT_FALSE(modality.IsAdvancedFormatNeeded()); 1280 ASSERT_FALSE(modality.IsAdvancedFormatNeeded());
1289 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1291 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1290 ASSERT_TRUE(modality.IsTranscodingAllowed()); 1292 ASSERT_TRUE(modality.IsTranscodingAllowed());
1291 ASSERT_FALSE(modality.IsDicomTlsEnabled()); 1293 ASSERT_FALSE(modality.IsDicomTlsEnabled());
1292 ASSERT_FALSE(modality.HasLocalAet()); 1294 ASSERT_FALSE(modality.HasLocalAet());
1293 ASSERT_THROW(modality.GetLocalAet(), OrthancException); 1295 ASSERT_THROW(modality.GetLocalAet(), OrthancException);
1296 ASSERT_FALSE(modality.HasTimeout());
1297 ASSERT_EQ(0u, modality.GetTimeout());
1294 } 1298 }
1295 1299
1296 s = Json::nullValue; 1300 s = Json::nullValue;
1297 1301
1298 { 1302 {
1305 modality.SetManufacturer(ModalityManufacturer_GenericNoWildcardInDates); 1309 modality.SetManufacturer(ModalityManufacturer_GenericNoWildcardInDates);
1306 ASSERT_FALSE(modality.IsAdvancedFormatNeeded()); 1310 ASSERT_FALSE(modality.IsAdvancedFormatNeeded());
1307 modality.Serialize(s, true); 1311 modality.Serialize(s, true);
1308 ASSERT_EQ(Json::objectValue, s.type()); 1312 ASSERT_EQ(Json::objectValue, s.type());
1309 ASSERT_FALSE(modality.HasLocalAet()); 1313 ASSERT_FALSE(modality.HasLocalAet());
1314 ASSERT_FALSE(modality.HasTimeout());
1315 ASSERT_EQ(0u, modality.GetTimeout());
1310 } 1316 }
1311 1317
1312 { 1318 {
1313 RemoteModalityParameters modality(s); 1319 RemoteModalityParameters modality(s);
1314 ASSERT_EQ("HELLO", modality.GetApplicationEntityTitle()); 1320 ASSERT_EQ("HELLO", modality.GetApplicationEntityTitle());
1323 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); 1329 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
1324 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1330 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1325 ASSERT_TRUE(modality.IsTranscodingAllowed()); 1331 ASSERT_TRUE(modality.IsTranscodingAllowed());
1326 ASSERT_FALSE(modality.IsDicomTlsEnabled()); 1332 ASSERT_FALSE(modality.IsDicomTlsEnabled());
1327 ASSERT_FALSE(modality.HasLocalAet()); 1333 ASSERT_FALSE(modality.HasLocalAet());
1334 ASSERT_FALSE(modality.HasTimeout());
1335 ASSERT_EQ(0u, modality.GetTimeout());
1328 } 1336 }
1329 1337
1330 s["Port"] = "46"; 1338 s["Port"] = "46";
1331 1339
1332 { 1340 {
1380 s = Json::nullValue; 1388 s = Json::nullValue;
1381 1389
1382 { 1390 {
1383 RemoteModalityParameters modality; 1391 RemoteModalityParameters modality;
1384 modality.SetLocalAet("hello"); 1392 modality.SetLocalAet("hello");
1393 modality.SetTimeout(42);
1385 ASSERT_TRUE(modality.IsAdvancedFormatNeeded()); 1394 ASSERT_TRUE(modality.IsAdvancedFormatNeeded());
1386 modality.Serialize(s, true); 1395 modality.Serialize(s, true);
1387 ASSERT_EQ(Json::objectValue, s.type()); 1396 ASSERT_EQ(Json::objectValue, s.type());
1388 ASSERT_TRUE(modality.HasLocalAet()); 1397 ASSERT_TRUE(modality.HasLocalAet());
1398 ASSERT_TRUE(modality.HasTimeout());
1399 ASSERT_EQ(42u, modality.GetTimeout());
1389 } 1400 }
1390 1401
1391 { 1402 {
1392 RemoteModalityParameters modality(s); 1403 RemoteModalityParameters modality(s);
1393 ASSERT_TRUE(modality.HasLocalAet()); 1404 ASSERT_TRUE(modality.HasLocalAet());
1394 ASSERT_EQ("hello", modality.GetLocalAet()); 1405 ASSERT_EQ("hello", modality.GetLocalAet());
1406 ASSERT_TRUE(modality.HasTimeout());
1407 ASSERT_EQ(42u, modality.GetTimeout());
1395 } 1408 }
1396 1409
1397 { 1410 {
1398 Json::Value t; 1411 Json::Value t;
1399 t["AllowStorageCommitment"] = false; 1412 t["AllowStorageCommitment"] = false;
1410 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1423 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1411 ASSERT_TRUE(modality.IsTranscodingAllowed()); 1424 ASSERT_TRUE(modality.IsTranscodingAllowed());
1412 ASSERT_FALSE(modality.IsDicomTlsEnabled()); 1425 ASSERT_FALSE(modality.IsDicomTlsEnabled());
1413 ASSERT_FALSE(modality.HasLocalAet()); 1426 ASSERT_FALSE(modality.HasLocalAet());
1414 ASSERT_THROW(modality.GetLocalAet(), OrthancException); 1427 ASSERT_THROW(modality.GetLocalAet(), OrthancException);
1428 ASSERT_FALSE(modality.HasTimeout());
1429 ASSERT_EQ(0u, modality.GetTimeout());
1415 } 1430 }
1416 1431
1417 { 1432 {
1418 Json::Value t; 1433 Json::Value t;
1419 t["AllowNAction"] = false; 1434 t["AllowNAction"] = false;
1422 t["Host"] = "host"; 1437 t["Host"] = "host";
1423 t["Port"] = "104"; 1438 t["Port"] = "104";
1424 t["AllowTranscoding"] = false; 1439 t["AllowTranscoding"] = false;
1425 t["UseDicomTls"] = true; 1440 t["UseDicomTls"] = true;
1426 t["LocalAet"] = "world"; 1441 t["LocalAet"] = "world";
1442 t["Timeout"] = 20;
1427 1443
1428 RemoteModalityParameters modality(t); 1444 RemoteModalityParameters modality(t);
1429 ASSERT_TRUE(modality.IsAdvancedFormatNeeded()); 1445 ASSERT_TRUE(modality.IsAdvancedFormatNeeded());
1430 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); 1446 ASSERT_EQ("AET", modality.GetApplicationEntityTitle());
1431 ASSERT_EQ("host", modality.GetHost()); 1447 ASSERT_EQ("host", modality.GetHost());
1434 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1450 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1435 ASSERT_FALSE(modality.IsTranscodingAllowed()); 1451 ASSERT_FALSE(modality.IsTranscodingAllowed());
1436 ASSERT_TRUE(modality.IsDicomTlsEnabled()); 1452 ASSERT_TRUE(modality.IsDicomTlsEnabled());
1437 ASSERT_TRUE(modality.HasLocalAet()); 1453 ASSERT_TRUE(modality.HasLocalAet());
1438 ASSERT_EQ("world", modality.GetLocalAet()); 1454 ASSERT_EQ("world", modality.GetLocalAet());
1455 ASSERT_TRUE(modality.HasTimeout());
1456 ASSERT_EQ(20u, modality.GetTimeout());
1439 } 1457 }
1440 1458
1441 { 1459 {
1442 Json::Value t; 1460 Json::Value t;
1443 t["AllowNAction"] = true; 1461 t["AllowNAction"] = true;
1485 ASSERT_EQ("ORTHANC", b.GetLocalApplicationEntityTitle()); 1503 ASSERT_EQ("ORTHANC", b.GetLocalApplicationEntityTitle());
1486 ASSERT_EQ(DicomAssociationParameters::GetDefaultMaximumPduLength(), b.GetMaximumPduLength()); 1504 ASSERT_EQ(DicomAssociationParameters::GetDefaultMaximumPduLength(), b.GetMaximumPduLength());
1487 ASSERT_FALSE(b.GetRemoteModality().IsDicomTlsEnabled()); 1505 ASSERT_FALSE(b.GetRemoteModality().IsDicomTlsEnabled());
1488 ASSERT_FALSE(b.GetRemoteModality().HasLocalAet()); 1506 ASSERT_FALSE(b.GetRemoteModality().HasLocalAet());
1489 ASSERT_THROW(b.GetRemoteModality().GetLocalAet(), OrthancException); 1507 ASSERT_THROW(b.GetRemoteModality().GetLocalAet(), OrthancException);
1508 ASSERT_FALSE(b.GetRemoteModality().HasTimeout());
1509 ASSERT_EQ(0u, b.GetRemoteModality().GetTimeout());
1490 } 1510 }
1491 1511
1492 { 1512 {
1493 RemoteModalityParameters p; 1513 RemoteModalityParameters p;
1494 p.SetApplicationEntityTitle("WORLD"); 1514 p.SetApplicationEntityTitle("WORLD");
1495 p.SetPortNumber(4242); 1515 p.SetPortNumber(4242);
1496 p.SetHost("hello.world.com"); 1516 p.SetHost("hello.world.com");
1497 p.SetDicomTlsEnabled(true); 1517 p.SetDicomTlsEnabled(true);
1518 p.SetTimeout(42);
1498 1519
1499 DicomAssociationParameters a("HELLO", p); 1520 DicomAssociationParameters a("HELLO", p);
1500 a.SetOwnCertificatePath("key", "crt"); 1521 a.SetOwnCertificatePath("key", "crt");
1501 a.SetTrustedCertificatesPath("trusted"); 1522 a.SetTrustedCertificatesPath("trusted");
1502 1523
1519 ASSERT_TRUE(b.GetRemoteModality().IsDicomTlsEnabled()); 1540 ASSERT_TRUE(b.GetRemoteModality().IsDicomTlsEnabled());
1520 ASSERT_EQ("key", b.GetOwnPrivateKeyPath()); 1541 ASSERT_EQ("key", b.GetOwnPrivateKeyPath());
1521 ASSERT_EQ("crt", b.GetOwnCertificatePath()); 1542 ASSERT_EQ("crt", b.GetOwnCertificatePath());
1522 ASSERT_EQ("trusted", b.GetTrustedCertificatesPath()); 1543 ASSERT_EQ("trusted", b.GetTrustedCertificatesPath());
1523 ASSERT_EQ(131072u, b.GetMaximumPduLength()); 1544 ASSERT_EQ(131072u, b.GetMaximumPduLength());
1545 ASSERT_TRUE(b.GetRemoteModality().HasTimeout());
1546 ASSERT_EQ(42u, b.GetRemoteModality().GetTimeout());
1524 } 1547 }
1525 } 1548 }