Mercurial > hg > orthanc
comparison UnitTestsSources/MultiThreadingTests.cpp @ 3786:3801435e34a1 SylvainRouquette/fix-issue169-95b752c
integration Orthanc-1.6.0->SylvainRouquette
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 19 Mar 2020 11:48:30 +0100 |
parents | 763533d6dd67 56f2397f027a |
children |
comparison
equal
deleted
inserted
replaced
3785:763533d6dd67 | 3786:3801435e34a1 |
---|---|
1 /** | 1 /** |
2 * Orthanc - A Lightweight, RESTful DICOM Store | 2 * Orthanc - A Lightweight, RESTful DICOM Store |
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
4 * Department, University Hospital of Liege, Belgium | 4 * Department, University Hospital of Liege, Belgium |
5 * Copyright (C) 2017-2019 Osimis S.A., Belgium | 5 * Copyright (C) 2017-2020 Osimis S.A., Belgium |
6 * | 6 * |
7 * This program is free software: you can redistribute it and/or | 7 * This program is free software: you can redistribute it and/or |
8 * modify it under the terms of the GNU General Public License as | 8 * modify it under the terms of the GNU General Public License as |
9 * published by the Free Software Foundation, either version 3 of the | 9 * published by the Free Software Foundation, either version 3 of the |
10 * License, or (at your option) any later version. | 10 * License, or (at your option) any later version. |
32 | 32 |
33 | 33 |
34 #include "PrecompiledHeadersUnitTests.h" | 34 #include "PrecompiledHeadersUnitTests.h" |
35 #include "gtest/gtest.h" | 35 #include "gtest/gtest.h" |
36 | 36 |
37 #include "../Core/Compatibility.h" | |
37 #include "../Core/FileStorage/MemoryStorageArea.h" | 38 #include "../Core/FileStorage/MemoryStorageArea.h" |
38 #include "../Core/JobsEngine/JobsEngine.h" | 39 #include "../Core/JobsEngine/JobsEngine.h" |
39 #include "../Core/Logging.h" | 40 #include "../Core/Logging.h" |
40 #include "../Core/MultiThreading/SharedMessageQueue.h" | 41 #include "../Core/MultiThreading/SharedMessageQueue.h" |
41 #include "../Core/OrthancException.h" | 42 #include "../Core/OrthancException.h" |
99 | 100 |
100 virtual void Reset() ORTHANC_OVERRIDE | 101 virtual void Reset() ORTHANC_OVERRIDE |
101 { | 102 { |
102 } | 103 } |
103 | 104 |
104 virtual JobStepResult Step() ORTHANC_OVERRIDE | 105 virtual JobStepResult Step(const std::string& jobId) ORTHANC_OVERRIDE |
105 { | 106 { |
106 if (fails_) | 107 if (fails_) |
107 { | 108 { |
108 return JobStepResult::Failure(ErrorCode_ParameterOutOfRange, NULL); | 109 return JobStepResult::Failure(ErrorCode_ParameterOutOfRange, NULL); |
109 } | 110 } |
270 ASSERT_FALSE(q.WaitEmpty(1)); | 271 ASSERT_FALSE(q.WaitEmpty(1)); |
271 q.Enqueue(new DynamicInteger(20, s)); | 272 q.Enqueue(new DynamicInteger(20, s)); |
272 q.Enqueue(new DynamicInteger(30, s)); | 273 q.Enqueue(new DynamicInteger(30, s)); |
273 q.Enqueue(new DynamicInteger(40, s)); | 274 q.Enqueue(new DynamicInteger(40, s)); |
274 | 275 |
275 std::auto_ptr<DynamicInteger> i; | 276 std::unique_ptr<DynamicInteger> i; |
276 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(10, i->GetValue()); | 277 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(10, i->GetValue()); |
277 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(20, i->GetValue()); | 278 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(20, i->GetValue()); |
278 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(30, i->GetValue()); | 279 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(30, i->GetValue()); |
279 ASSERT_FALSE(q.WaitEmpty(1)); | 280 ASSERT_FALSE(q.WaitEmpty(1)); |
280 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(40, i->GetValue()); | 281 i.reset(dynamic_cast<DynamicInteger*>(q.Dequeue(1))); ASSERT_EQ(40, i->GetValue()); |
745 | 746 |
746 std::string id; | 747 std::string id; |
747 SequenceOfOperationsJob* job = NULL; | 748 SequenceOfOperationsJob* job = NULL; |
748 | 749 |
749 { | 750 { |
750 std::auto_ptr<SequenceOfOperationsJob> a(new SequenceOfOperationsJob); | 751 std::unique_ptr<SequenceOfOperationsJob> a(new SequenceOfOperationsJob); |
751 job = a.get(); | 752 job = a.get(); |
752 engine.GetRegistry().Submit(id, a.release(), 0); | 753 engine.GetRegistry().Submit(id, a.release(), 0); |
753 } | 754 } |
754 | 755 |
755 boost::this_thread::sleep(boost::posix_time::milliseconds(500)); | 756 boost::this_thread::sleep(boost::posix_time::milliseconds(500)); |
835 { | 836 { |
836 return false; | 837 return false; |
837 } | 838 } |
838 else | 839 else |
839 { | 840 { |
840 std::auto_ptr<IJob> unserialized(unserializer.UnserializeJob(a)); | 841 std::unique_ptr<IJob> unserialized(unserializer.UnserializeJob(a)); |
841 | 842 |
842 Json::Value b = 43; | 843 Json::Value b = 43; |
843 if (unserialized->Serialize(b)) | 844 if (unserialized->Serialize(b)) |
844 { | 845 { |
845 return (CheckSameJson(a, b)); | 846 return (CheckSameJson(a, b)); |
861 { | 862 { |
862 return false; | 863 return false; |
863 } | 864 } |
864 else | 865 else |
865 { | 866 { |
866 std::auto_ptr<SetOfInstancesJob> unserialized | 867 std::unique_ptr<SetOfInstancesJob> unserialized |
867 (dynamic_cast<SetOfInstancesJob*>(unserializer.UnserializeJob(a))); | 868 (dynamic_cast<SetOfInstancesJob*>(unserializer.UnserializeJob(a))); |
868 | 869 |
869 Json::Value b = 43; | 870 Json::Value b = 43; |
870 if (unserialized->Serialize(b)) | 871 if (unserialized->Serialize(b)) |
871 { | 872 { |
887 IJobOperation& operation) | 888 IJobOperation& operation) |
888 { | 889 { |
889 Json::Value a = 42; | 890 Json::Value a = 42; |
890 operation.Serialize(a); | 891 operation.Serialize(a); |
891 | 892 |
892 std::auto_ptr<IJobOperation> unserialized(unserializer.UnserializeOperation(a)); | 893 std::unique_ptr<IJobOperation> unserialized(unserializer.UnserializeOperation(a)); |
893 | 894 |
894 Json::Value b = 43; | 895 Json::Value b = 43; |
895 unserialized->Serialize(b); | 896 unserialized->Serialize(b); |
896 | 897 |
897 return CheckSameJson(a, b); | 898 return CheckSameJson(a, b); |
902 JobOperationValue& value) | 903 JobOperationValue& value) |
903 { | 904 { |
904 Json::Value a = 42; | 905 Json::Value a = 42; |
905 value.Serialize(a); | 906 value.Serialize(a); |
906 | 907 |
907 std::auto_ptr<JobOperationValue> unserialized(unserializer.UnserializeValue(a)); | 908 std::unique_ptr<JobOperationValue> unserialized(unserializer.UnserializeValue(a)); |
908 | 909 |
909 Json::Value b = 43; | 910 Json::Value b = 43; |
910 unserialized->Serialize(b); | 911 unserialized->Serialize(b); |
911 | 912 |
912 return CheckSameJson(a, b); | 913 return CheckSameJson(a, b); |
955 values.Serialize(s); | 956 values.Serialize(s); |
956 } | 957 } |
957 | 958 |
958 { | 959 { |
959 GenericJobUnserializer unserializer; | 960 GenericJobUnserializer unserializer; |
960 std::auto_ptr<JobOperationValues> values(JobOperationValues::Unserialize(unserializer, s)); | 961 std::unique_ptr<JobOperationValues> values(JobOperationValues::Unserialize(unserializer, s)); |
961 ASSERT_EQ(3u, values->GetSize()); | 962 ASSERT_EQ(3u, values->GetSize()); |
962 ASSERT_EQ(JobOperationValue::Type_Null, values->GetValue(0).GetType()); | 963 ASSERT_EQ(JobOperationValue::Type_Null, values->GetValue(0).GetType()); |
963 ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(1).GetType()); | 964 ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(1).GetType()); |
964 ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(2).GetType()); | 965 ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(2).GetType()); |
965 | 966 |
982 } | 983 } |
983 | 984 |
984 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); | 985 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); |
985 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | 986 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); |
986 | 987 |
987 std::auto_ptr<JobOperationValue> value; | 988 std::unique_ptr<JobOperationValue> value; |
988 value.reset(unserializer.UnserializeValue(s)); | 989 value.reset(unserializer.UnserializeValue(s)); |
989 | 990 |
990 ASSERT_EQ(JobOperationValue::Type_Null, value->GetType()); | 991 ASSERT_EQ(JobOperationValue::Type_Null, value->GetType()); |
991 | 992 |
992 { | 993 { |
1019 | 1020 |
1020 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); | 1021 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); |
1021 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); | 1022 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); |
1022 | 1023 |
1023 { | 1024 { |
1024 std::auto_ptr<IJobOperation> operation; | 1025 std::unique_ptr<IJobOperation> operation; |
1025 operation.reset(unserializer.UnserializeOperation(s)); | 1026 operation.reset(unserializer.UnserializeOperation(s)); |
1026 | 1027 |
1027 // Make sure that we have indeed unserialized a log operation | 1028 // Make sure that we have indeed unserialized a log operation |
1028 Json::Value dummy; | 1029 Json::Value dummy; |
1029 ASSERT_THROW(dynamic_cast<DeleteResourceOperation&>(*operation).Serialize(dummy), std::bad_cast); | 1030 ASSERT_THROW(dynamic_cast<DeleteResourceOperation&>(*operation).Serialize(dummy), std::bad_cast); |
1043 job.SetDescription("description"); | 1044 job.SetDescription("description"); |
1044 job.AddInstance("hello"); | 1045 job.AddInstance("hello"); |
1045 job.AddInstance("nope"); | 1046 job.AddInstance("nope"); |
1046 job.AddInstance("world"); | 1047 job.AddInstance("world"); |
1047 job.SetPermissive(true); | 1048 job.SetPermissive(true); |
1048 ASSERT_THROW(job.Step(), OrthancException); // Not started yet | 1049 ASSERT_THROW(job.Step("jobId"), OrthancException); // Not started yet |
1049 ASSERT_FALSE(job.HasTrailingStep()); | 1050 ASSERT_FALSE(job.HasTrailingStep()); |
1050 ASSERT_FALSE(job.IsTrailingStepDone()); | 1051 ASSERT_FALSE(job.IsTrailingStepDone()); |
1051 job.Start(); | 1052 job.Start(); |
1052 ASSERT_EQ(JobStepCode_Continue, job.Step().GetCode()); | 1053 ASSERT_EQ(JobStepCode_Continue, job.Step("jobId").GetCode()); |
1053 ASSERT_EQ(JobStepCode_Continue, job.Step().GetCode()); | 1054 ASSERT_EQ(JobStepCode_Continue, job.Step("jobId").GetCode()); |
1054 | 1055 |
1055 { | 1056 { |
1056 DummyUnserializer unserializer; | 1057 DummyUnserializer unserializer; |
1057 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1058 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1058 } | 1059 } |
1063 { | 1064 { |
1064 DummyUnserializer unserializer; | 1065 DummyUnserializer unserializer; |
1065 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); | 1066 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); |
1066 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | 1067 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); |
1067 | 1068 |
1068 std::auto_ptr<IJob> job; | 1069 std::unique_ptr<IJob> job; |
1069 job.reset(unserializer.UnserializeJob(s)); | 1070 job.reset(unserializer.UnserializeJob(s)); |
1070 | 1071 |
1071 const DummyInstancesJob& tmp = dynamic_cast<const DummyInstancesJob&>(*job); | 1072 const DummyInstancesJob& tmp = dynamic_cast<const DummyInstancesJob&>(*job); |
1072 ASSERT_FALSE(tmp.IsStarted()); | 1073 ASSERT_FALSE(tmp.IsStarted()); |
1073 ASSERT_TRUE(tmp.IsPermissive()); | 1074 ASSERT_TRUE(tmp.IsPermissive()); |
1099 lock.AddInput(a, s2); | 1100 lock.AddInput(a, s2); |
1100 lock.SetDicomAssociationTimeout(200); | 1101 lock.SetDicomAssociationTimeout(200); |
1101 lock.SetTrailingOperationTimeout(300); | 1102 lock.SetTrailingOperationTimeout(300); |
1102 } | 1103 } |
1103 | 1104 |
1104 ASSERT_EQ(JobStepCode_Continue, job.Step().GetCode()); | 1105 ASSERT_EQ(JobStepCode_Continue, job.Step("jobId").GetCode()); |
1105 | 1106 |
1106 { | 1107 { |
1107 GenericJobUnserializer unserializer; | 1108 GenericJobUnserializer unserializer; |
1108 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, job)); | 1109 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, job)); |
1109 } | 1110 } |
1114 { | 1115 { |
1115 GenericJobUnserializer unserializer; | 1116 GenericJobUnserializer unserializer; |
1116 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); | 1117 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); |
1117 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | 1118 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); |
1118 | 1119 |
1119 std::auto_ptr<IJob> job; | 1120 std::unique_ptr<IJob> job; |
1120 job.reset(unserializer.UnserializeJob(s)); | 1121 job.reset(unserializer.UnserializeJob(s)); |
1121 | 1122 |
1122 std::string tmp; | 1123 std::string tmp; |
1123 dynamic_cast<SequenceOfOperationsJob&>(*job).GetDescription(tmp); | 1124 dynamic_cast<SequenceOfOperationsJob&>(*job).GetDescription(tmp); |
1124 ASSERT_EQ("hello", tmp); | 1125 ASSERT_EQ("hello", tmp); |
1141 TEST(JobsSerialization, DicomModification) | 1142 TEST(JobsSerialization, DicomModification) |
1142 { | 1143 { |
1143 Json::Value s; | 1144 Json::Value s; |
1144 | 1145 |
1145 ParsedDicomFile source(true); | 1146 ParsedDicomFile source(true); |
1146 source.Insert(DICOM_TAG_STUDY_DESCRIPTION, "Test 1", false); | 1147 source.Insert(DICOM_TAG_STUDY_DESCRIPTION, "Test 1", false, ""); |
1147 source.Insert(DICOM_TAG_SERIES_DESCRIPTION, "Test 2", false); | 1148 source.Insert(DICOM_TAG_SERIES_DESCRIPTION, "Test 2", false, ""); |
1148 source.Insert(DICOM_TAG_PATIENT_NAME, "Test 3", false); | 1149 source.Insert(DICOM_TAG_PATIENT_NAME, "Test 3", false, ""); |
1149 | 1150 |
1150 std::auto_ptr<ParsedDicomFile> modified(source.Clone(true)); | 1151 std::unique_ptr<ParsedDicomFile> modified(source.Clone(true)); |
1151 | 1152 |
1152 { | 1153 { |
1153 DicomModification modification; | 1154 DicomModification modification; |
1154 modification.SetLevel(ResourceType_Series); | 1155 modification.SetLevel(ResourceType_Series); |
1155 modification.Clear(DICOM_TAG_STUDY_DESCRIPTION); | 1156 modification.Clear(DICOM_TAG_STUDY_DESCRIPTION); |
1164 | 1165 |
1165 { | 1166 { |
1166 DicomModification modification(s); | 1167 DicomModification modification(s); |
1167 ASSERT_EQ(ResourceType_Series, modification.GetLevel()); | 1168 ASSERT_EQ(ResourceType_Series, modification.GetLevel()); |
1168 | 1169 |
1169 std::auto_ptr<ParsedDicomFile> second(source.Clone(true)); | 1170 std::unique_ptr<ParsedDicomFile> second(source.Clone(true)); |
1170 modification.Apply(*second); | 1171 modification.Apply(*second); |
1171 | 1172 |
1172 std::string s; | 1173 std::string s; |
1173 ASSERT_TRUE(second->GetTagValue(s, DICOM_TAG_STUDY_DESCRIPTION)); | 1174 ASSERT_TRUE(second->GetTagValue(s, DICOM_TAG_STUDY_DESCRIPTION)); |
1174 ASSERT_TRUE(s.empty()); | 1175 ASSERT_TRUE(s.empty()); |
1280 class OrthancJobsSerialization : public testing::Test | 1281 class OrthancJobsSerialization : public testing::Test |
1281 { | 1282 { |
1282 private: | 1283 private: |
1283 MemoryStorageArea storage_; | 1284 MemoryStorageArea storage_; |
1284 SQLiteDatabaseWrapper db_; // The SQLite DB is in memory | 1285 SQLiteDatabaseWrapper db_; // The SQLite DB is in memory |
1285 std::auto_ptr<ServerContext> context_; | 1286 std::unique_ptr<ServerContext> context_; |
1286 TimeoutDicomConnectionManager manager_; | 1287 TimeoutDicomConnectionManager manager_; |
1287 | 1288 |
1288 public: | 1289 public: |
1289 OrthancJobsSerialization() | 1290 OrthancJobsSerialization() |
1290 { | 1291 { |
1308 bool CreateInstance(std::string& id) | 1309 bool CreateInstance(std::string& id) |
1309 { | 1310 { |
1310 // Create a sample DICOM file | 1311 // Create a sample DICOM file |
1311 ParsedDicomFile dicom(true); | 1312 ParsedDicomFile dicom(true); |
1312 dicom.Replace(DICOM_TAG_PATIENT_NAME, std::string("JODOGNE"), | 1313 dicom.Replace(DICOM_TAG_PATIENT_NAME, std::string("JODOGNE"), |
1313 false, DicomReplaceMode_InsertIfAbsent); | 1314 false, DicomReplaceMode_InsertIfAbsent, ""); |
1314 | 1315 |
1315 DicomInstanceToStore toStore; | 1316 DicomInstanceToStore toStore; |
1316 toStore.SetParsedDicomFile(dicom); | 1317 toStore.SetParsedDicomFile(dicom); |
1317 | 1318 |
1318 return (context_->Store(id, toStore) == StoreStatus_Success); | 1319 return (context_->Store(id, toStore) == StoreStatus_Success); |
1334 | 1335 |
1335 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, instance)); | 1336 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, instance)); |
1336 instance.Serialize(s); | 1337 instance.Serialize(s); |
1337 } | 1338 } |
1338 | 1339 |
1339 std::auto_ptr<JobOperationValue> value; | 1340 std::unique_ptr<JobOperationValue> value; |
1340 value.reset(unserializer.UnserializeValue(s)); | 1341 value.reset(unserializer.UnserializeValue(s)); |
1341 ASSERT_EQ(JobOperationValue::Type_DicomInstance, value->GetType()); | 1342 ASSERT_EQ(JobOperationValue::Type_DicomInstance, value->GetType()); |
1342 ASSERT_EQ(id, dynamic_cast<DicomInstanceOperationValue&>(*value).GetId()); | 1343 ASSERT_EQ(id, dynamic_cast<DicomInstanceOperationValue&>(*value).GetId()); |
1343 | 1344 |
1344 { | 1345 { |
1367 | 1368 |
1368 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); | 1369 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); |
1369 operation.Serialize(s); | 1370 operation.Serialize(s); |
1370 } | 1371 } |
1371 | 1372 |
1372 std::auto_ptr<IJobOperation> operation; | 1373 std::unique_ptr<IJobOperation> operation; |
1373 | 1374 |
1374 { | 1375 { |
1375 operation.reset(unserializer.UnserializeOperation(s)); | 1376 operation.reset(unserializer.UnserializeOperation(s)); |
1376 | 1377 |
1377 Json::Value dummy; | 1378 Json::Value dummy; |
1409 RemoteModalityParameters modality; | 1410 RemoteModalityParameters modality; |
1410 modality.SetApplicationEntityTitle("REMOTE"); | 1411 modality.SetApplicationEntityTitle("REMOTE"); |
1411 modality.SetHost("192.168.1.1"); | 1412 modality.SetHost("192.168.1.1"); |
1412 modality.SetPortNumber(1000); | 1413 modality.SetPortNumber(1000); |
1413 modality.SetManufacturer(ModalityManufacturer_StoreScp); | 1414 modality.SetManufacturer(ModalityManufacturer_StoreScp); |
1414 modality.SetPreferredTransferSyntax("1.2.840.10008.1.2"); | 1415 ASSERT_EQ("1.2.840.10008.1.2", modality.GetPreferredTransferSyntax()); |
1416 modality.SetPreferredTransferSyntax("1.2.840.10008.1.2.1"); | |
1417 ASSERT_EQ("1.2.840.10008.1.2.1", modality.GetPreferredTransferSyntax()); | |
1415 | 1418 |
1416 StoreScuOperation operation("TEST", modality); | 1419 StoreScuOperation operation("TEST", modality); |
1417 | 1420 |
1418 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); | 1421 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); |
1419 operation.Serialize(s); | 1422 operation.Serialize(s); |
1455 } | 1458 } |
1456 | 1459 |
1457 // ModifyInstanceOperation | 1460 // ModifyInstanceOperation |
1458 | 1461 |
1459 { | 1462 { |
1460 std::auto_ptr<DicomModification> modification(new DicomModification); | 1463 std::unique_ptr<DicomModification> modification(new DicomModification); |
1461 modification->SetupAnonymization(DicomVersion_2008); | 1464 modification->SetupAnonymization(DicomVersion_2008); |
1462 | 1465 |
1463 ModifyInstanceOperation operation(GetContext(), RequestOrigin_Lua, modification.release()); | 1466 ModifyInstanceOperation operation(GetContext(), RequestOrigin_Lua, modification.release()); |
1464 | 1467 |
1465 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); | 1468 ASSERT_TRUE(CheckIdempotentSerialization(unserializer, operation)); |
1495 RemoteModalityParameters modality; | 1498 RemoteModalityParameters modality; |
1496 modality.SetApplicationEntityTitle("REMOTE"); | 1499 modality.SetApplicationEntityTitle("REMOTE"); |
1497 modality.SetHost("192.168.1.1"); | 1500 modality.SetHost("192.168.1.1"); |
1498 modality.SetPortNumber(1000); | 1501 modality.SetPortNumber(1000); |
1499 modality.SetManufacturer(ModalityManufacturer_StoreScp); | 1502 modality.SetManufacturer(ModalityManufacturer_StoreScp); |
1500 modality.SetPreferredTransferSyntax("1.2.840.10008.1.2"); | 1503 ASSERT_EQ("1.2.840.10008.1.2", modality.GetPreferredTransferSyntax()); |
1504 modality.SetPreferredTransferSyntax("1.2.840.10008.1.2.1"); | |
1505 ASSERT_EQ("1.2.840.10008.1.2.1", modality.GetPreferredTransferSyntax()); | |
1501 | 1506 |
1502 DicomModalityStoreJob job(GetContext()); | 1507 DicomModalityStoreJob job(GetContext()); |
1503 job.SetLocalAet("LOCAL"); | 1508 job.SetLocalAet("LOCAL"); |
1504 job.SetRemoteModality(modality); | 1509 job.SetRemoteModality(modality); |
1505 job.SetMoveOriginator("MOVESCU", 42); | 1510 job.SetMoveOriginator("MOVESCU", 42); |
1507 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1512 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1508 ASSERT_TRUE(job.Serialize(s)); | 1513 ASSERT_TRUE(job.Serialize(s)); |
1509 } | 1514 } |
1510 | 1515 |
1511 { | 1516 { |
1512 std::auto_ptr<IJob> job; | 1517 std::unique_ptr<IJob> job; |
1513 job.reset(unserializer.UnserializeJob(s)); | 1518 job.reset(unserializer.UnserializeJob(s)); |
1514 | 1519 |
1515 DicomModalityStoreJob& tmp = dynamic_cast<DicomModalityStoreJob&>(*job); | 1520 DicomModalityStoreJob& tmp = dynamic_cast<DicomModalityStoreJob&>(*job); |
1516 ASSERT_EQ("LOCAL", tmp.GetLocalAet()); | 1521 ASSERT_EQ("LOCAL", tmp.GetLocalAet()); |
1517 ASSERT_EQ("REMOTE", tmp.GetRemoteModality().GetApplicationEntityTitle()); | 1522 ASSERT_EQ("REMOTE", tmp.GetRemoteModality().GetApplicationEntityTitle()); |
1537 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1542 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1538 ASSERT_TRUE(job.Serialize(s)); | 1543 ASSERT_TRUE(job.Serialize(s)); |
1539 } | 1544 } |
1540 | 1545 |
1541 { | 1546 { |
1542 std::auto_ptr<IJob> job; | 1547 std::unique_ptr<IJob> job; |
1543 job.reset(unserializer.UnserializeJob(s)); | 1548 job.reset(unserializer.UnserializeJob(s)); |
1544 | 1549 |
1545 OrthancPeerStoreJob& tmp = dynamic_cast<OrthancPeerStoreJob&>(*job); | 1550 OrthancPeerStoreJob& tmp = dynamic_cast<OrthancPeerStoreJob&>(*job); |
1546 ASSERT_EQ("http://localhost/", tmp.GetPeer().GetUrl()); | 1551 ASSERT_EQ("http://localhost/", tmp.GetPeer().GetUrl()); |
1547 ASSERT_EQ("username", tmp.GetPeer().GetUsername()); | 1552 ASSERT_EQ("username", tmp.GetPeer().GetUsername()); |
1550 } | 1555 } |
1551 | 1556 |
1552 // ResourceModificationJob | 1557 // ResourceModificationJob |
1553 | 1558 |
1554 { | 1559 { |
1555 std::auto_ptr<DicomModification> modification(new DicomModification); | 1560 std::unique_ptr<DicomModification> modification(new DicomModification); |
1556 modification->SetupAnonymization(DicomVersion_2008); | 1561 modification->SetupAnonymization(DicomVersion_2008); |
1557 | 1562 |
1558 ResourceModificationJob job(GetContext()); | 1563 ResourceModificationJob job(GetContext()); |
1559 job.SetModification(modification.release(), ResourceType_Patient, true); | 1564 job.SetModification(modification.release(), ResourceType_Patient, true); |
1560 job.SetOrigin(DicomInstanceOrigin::FromLua()); | 1565 job.SetOrigin(DicomInstanceOrigin::FromLua()); |
1562 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1567 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1563 ASSERT_TRUE(job.Serialize(s)); | 1568 ASSERT_TRUE(job.Serialize(s)); |
1564 } | 1569 } |
1565 | 1570 |
1566 { | 1571 { |
1567 std::auto_ptr<IJob> job; | 1572 std::unique_ptr<IJob> job; |
1568 job.reset(unserializer.UnserializeJob(s)); | 1573 job.reset(unserializer.UnserializeJob(s)); |
1569 | 1574 |
1570 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); | 1575 ResourceModificationJob& tmp = dynamic_cast<ResourceModificationJob&>(*job); |
1571 ASSERT_TRUE(tmp.IsAnonymization()); | 1576 ASSERT_TRUE(tmp.IsAnonymization()); |
1572 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); | 1577 ASSERT_EQ(RequestOrigin_Lua, tmp.GetOrigin().GetRequestOrigin()); |
1618 a = job.GetTargetStudyUid(); | 1623 a = job.GetTargetStudyUid(); |
1619 ASSERT_TRUE(job.LookupTargetSeriesUid(b, series)); | 1624 ASSERT_TRUE(job.LookupTargetSeriesUid(b, series)); |
1620 | 1625 |
1621 job.AddTrailingStep(); | 1626 job.AddTrailingStep(); |
1622 job.Start(); | 1627 job.Start(); |
1623 ASSERT_EQ(JobStepCode_Continue, job.Step().GetCode()); | 1628 ASSERT_EQ(JobStepCode_Continue, job.Step("jobId").GetCode()); |
1624 ASSERT_EQ(JobStepCode_Success, job.Step().GetCode()); | 1629 ASSERT_EQ(JobStepCode_Success, job.Step("jobId").GetCode()); |
1625 | 1630 |
1626 study2 = job.GetTargetStudy(); | 1631 study2 = job.GetTargetStudy(); |
1627 ASSERT_FALSE(study2.empty()); | 1632 ASSERT_FALSE(study2.empty()); |
1628 | 1633 |
1629 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1634 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1630 ASSERT_TRUE(job.Serialize(s)); | 1635 ASSERT_TRUE(job.Serialize(s)); |
1631 } | 1636 } |
1632 | 1637 |
1633 { | 1638 { |
1634 std::auto_ptr<IJob> job; | 1639 std::unique_ptr<IJob> job; |
1635 job.reset(unserializer.UnserializeJob(s)); | 1640 job.reset(unserializer.UnserializeJob(s)); |
1636 | 1641 |
1637 SplitStudyJob& tmp = dynamic_cast<SplitStudyJob&>(*job); | 1642 SplitStudyJob& tmp = dynamic_cast<SplitStudyJob&>(*job); |
1638 ASSERT_TRUE(tmp.IsKeepSource()); | 1643 ASSERT_TRUE(tmp.IsKeepSource()); |
1639 ASSERT_EQ(study, tmp.GetSourceStudy()); | 1644 ASSERT_EQ(study, tmp.GetSourceStudy()); |
1677 | 1682 |
1678 ASSERT_EQ(job.GetTargetStudy(), study); | 1683 ASSERT_EQ(job.GetTargetStudy(), study); |
1679 | 1684 |
1680 job.AddTrailingStep(); | 1685 job.AddTrailingStep(); |
1681 job.Start(); | 1686 job.Start(); |
1682 ASSERT_EQ(JobStepCode_Continue, job.Step().GetCode()); | 1687 ASSERT_EQ(JobStepCode_Continue, job.Step("jobId").GetCode()); |
1683 ASSERT_EQ(JobStepCode_Success, job.Step().GetCode()); | 1688 ASSERT_EQ(JobStepCode_Success, job.Step("jobId").GetCode()); |
1684 | 1689 |
1685 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1690 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1686 ASSERT_TRUE(job.Serialize(s)); | 1691 ASSERT_TRUE(job.Serialize(s)); |
1687 } | 1692 } |
1688 | 1693 |
1693 GetContext().GetIndex().GetAllUuids(tmp, ResourceType_Series); | 1698 GetContext().GetIndex().GetAllUuids(tmp, ResourceType_Series); |
1694 ASSERT_EQ(3u, tmp.size()); | 1699 ASSERT_EQ(3u, tmp.size()); |
1695 } | 1700 } |
1696 | 1701 |
1697 { | 1702 { |
1698 std::auto_ptr<IJob> job; | 1703 std::unique_ptr<IJob> job; |
1699 job.reset(unserializer.UnserializeJob(s)); | 1704 job.reset(unserializer.UnserializeJob(s)); |
1700 | 1705 |
1701 MergeStudyJob& tmp = dynamic_cast<MergeStudyJob&>(*job); | 1706 MergeStudyJob& tmp = dynamic_cast<MergeStudyJob&>(*job); |
1702 ASSERT_TRUE(tmp.IsKeepSource()); | 1707 ASSERT_TRUE(tmp.IsKeepSource()); |
1703 ASSERT_EQ(study, tmp.GetTargetStudy()); | 1708 ASSERT_EQ(study, tmp.GetTargetStudy()); |
1746 { | 1751 { |
1747 DummyUnserializer unserializer; | 1752 DummyUnserializer unserializer; |
1748 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1753 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1749 } | 1754 } |
1750 | 1755 |
1751 ASSERT_EQ(JobStepCode_Success, job.Step().GetCode()); | 1756 ASSERT_EQ(JobStepCode_Success, job.Step("jobId").GetCode()); |
1752 ASSERT_EQ(1u, job.GetPosition()); | 1757 ASSERT_EQ(1u, job.GetPosition()); |
1753 ASSERT_FALSE(job.IsTrailingStepDone()); | 1758 ASSERT_FALSE(job.IsTrailingStepDone()); |
1754 | 1759 |
1755 { | 1760 { |
1756 DummyUnserializer unserializer; | 1761 DummyUnserializer unserializer; |
1757 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1762 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1758 } | 1763 } |
1759 | 1764 |
1760 ASSERT_THROW(job.Step(), OrthancException); | 1765 ASSERT_THROW(job.Step("jobId"), OrthancException); |
1761 } | 1766 } |
1762 | 1767 |
1763 { | 1768 { |
1764 Json::Value s; | 1769 Json::Value s; |
1765 | 1770 |
1777 { | 1782 { |
1778 DummyUnserializer unserializer; | 1783 DummyUnserializer unserializer; |
1779 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1784 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1780 } | 1785 } |
1781 | 1786 |
1782 ASSERT_EQ(JobStepCode_Continue, job.Step().GetCode()); | 1787 ASSERT_EQ(JobStepCode_Continue, job.Step("jobId").GetCode()); |
1783 ASSERT_EQ(1u, job.GetPosition()); | 1788 ASSERT_EQ(1u, job.GetPosition()); |
1784 ASSERT_FALSE(job.IsTrailingStepDone()); | 1789 ASSERT_FALSE(job.IsTrailingStepDone()); |
1785 | 1790 |
1786 { | 1791 { |
1787 DummyUnserializer unserializer; | 1792 DummyUnserializer unserializer; |
1788 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1793 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1789 } | 1794 } |
1790 | 1795 |
1791 ASSERT_EQ(JobStepCode_Success, job.Step().GetCode()); | 1796 ASSERT_EQ(JobStepCode_Success, job.Step("jobId").GetCode()); |
1792 ASSERT_EQ(2u, job.GetPosition()); | 1797 ASSERT_EQ(2u, job.GetPosition()); |
1793 ASSERT_FALSE(job.IsTrailingStepDone()); | 1798 ASSERT_FALSE(job.IsTrailingStepDone()); |
1794 | 1799 |
1795 { | 1800 { |
1796 DummyUnserializer unserializer; | 1801 DummyUnserializer unserializer; |
1797 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1802 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1798 } | 1803 } |
1799 | 1804 |
1800 ASSERT_THROW(job.Step(), OrthancException); | 1805 ASSERT_THROW(job.Step("jobId"), OrthancException); |
1801 } | 1806 } |
1802 | 1807 |
1803 { | 1808 { |
1804 Json::Value s; | 1809 Json::Value s; |
1805 | 1810 |
1818 { | 1823 { |
1819 DummyUnserializer unserializer; | 1824 DummyUnserializer unserializer; |
1820 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1825 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1821 } | 1826 } |
1822 | 1827 |
1823 ASSERT_EQ(JobStepCode_Success, job.Step().GetCode()); | 1828 ASSERT_EQ(JobStepCode_Success, job.Step("jobId").GetCode()); |
1824 ASSERT_EQ(1u, job.GetPosition()); | 1829 ASSERT_EQ(1u, job.GetPosition()); |
1825 ASSERT_TRUE(job.IsTrailingStepDone()); | 1830 ASSERT_TRUE(job.IsTrailingStepDone()); |
1826 | 1831 |
1827 { | 1832 { |
1828 DummyUnserializer unserializer; | 1833 DummyUnserializer unserializer; |
1829 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1834 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1830 } | 1835 } |
1831 | 1836 |
1832 ASSERT_THROW(job.Step(), OrthancException); | 1837 ASSERT_THROW(job.Step("jobId"), OrthancException); |
1833 } | 1838 } |
1834 | 1839 |
1835 { | 1840 { |
1836 Json::Value s; | 1841 Json::Value s; |
1837 | 1842 |
1852 { | 1857 { |
1853 DummyUnserializer unserializer; | 1858 DummyUnserializer unserializer; |
1854 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1859 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1855 } | 1860 } |
1856 | 1861 |
1857 ASSERT_EQ(JobStepCode_Continue, job.Step().GetCode()); | 1862 ASSERT_EQ(JobStepCode_Continue, job.Step("jobId").GetCode()); |
1858 ASSERT_EQ(1u, job.GetPosition()); | 1863 ASSERT_EQ(1u, job.GetPosition()); |
1859 ASSERT_FALSE(job.IsTrailingStepDone()); | 1864 ASSERT_FALSE(job.IsTrailingStepDone()); |
1860 | 1865 |
1861 { | 1866 { |
1862 DummyUnserializer unserializer; | 1867 DummyUnserializer unserializer; |
1863 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1868 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1864 } | 1869 } |
1865 | 1870 |
1866 ASSERT_EQ(JobStepCode_Success, job.Step().GetCode()); | 1871 ASSERT_EQ(JobStepCode_Success, job.Step("jobId").GetCode()); |
1867 ASSERT_EQ(2u, job.GetPosition()); | 1872 ASSERT_EQ(2u, job.GetPosition()); |
1868 ASSERT_TRUE(job.IsTrailingStepDone()); | 1873 ASSERT_TRUE(job.IsTrailingStepDone()); |
1869 | 1874 |
1870 { | 1875 { |
1871 DummyUnserializer unserializer; | 1876 DummyUnserializer unserializer; |
1872 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); | 1877 ASSERT_TRUE(CheckIdempotentSetOfInstances(unserializer, job)); |
1873 } | 1878 } |
1874 | 1879 |
1875 ASSERT_THROW(job.Step(), OrthancException); | 1880 ASSERT_THROW(job.Step("jobId"), OrthancException); |
1876 } | 1881 } |
1877 } | 1882 } |
1878 | 1883 |
1879 | 1884 |
1880 TEST(JobsSerialization, RemoteModalityParameters) | 1885 TEST(JobsSerialization, RemoteModalityParameters) |
1897 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Echo)); | 1902 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Echo)); |
1898 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Find)); | 1903 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Find)); |
1899 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get)); | 1904 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get)); |
1900 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store)); | 1905 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store)); |
1901 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move)); | 1906 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move)); |
1907 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); | |
1908 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); | |
1902 } | 1909 } |
1903 | 1910 |
1904 s = Json::nullValue; | 1911 s = Json::nullValue; |
1905 | 1912 |
1906 { | 1913 { |
1909 ASSERT_THROW(modality.SetPortNumber(0), OrthancException); | 1916 ASSERT_THROW(modality.SetPortNumber(0), OrthancException); |
1910 ASSERT_THROW(modality.SetPortNumber(65535), OrthancException); | 1917 ASSERT_THROW(modality.SetPortNumber(65535), OrthancException); |
1911 modality.SetApplicationEntityTitle("HELLO"); | 1918 modality.SetApplicationEntityTitle("HELLO"); |
1912 modality.SetHost("world"); | 1919 modality.SetHost("world"); |
1913 modality.SetPortNumber(45); | 1920 modality.SetPortNumber(45); |
1914 modality.SetManufacturer(ModalityManufacturer_Dcm4Chee); | 1921 modality.SetManufacturer(ModalityManufacturer_GenericNoWildcardInDates); |
1915 modality.SetPreferredTransferSyntax("1.2.840.10008.1.2"); | 1922 ASSERT_EQ("1.2.840.10008.1.2", modality.GetPreferredTransferSyntax()); |
1923 modality.SetPreferredTransferSyntax("1.2.840.10008.1.2.1"); | |
1924 ASSERT_EQ("1.2.840.10008.1.2.1", modality.GetPreferredTransferSyntax()); | |
1916 modality.Serialize(s, true); | 1925 modality.Serialize(s, true); |
1917 ASSERT_EQ(Json::objectValue, s.type()); | 1926 ASSERT_EQ(Json::objectValue, s.type()); |
1918 } | 1927 } |
1919 | 1928 |
1920 { | 1929 { |
1921 RemoteModalityParameters modality(s); | 1930 RemoteModalityParameters modality(s); |
1922 ASSERT_EQ("HELLO", modality.GetApplicationEntityTitle()); | 1931 ASSERT_EQ("HELLO", modality.GetApplicationEntityTitle()); |
1923 ASSERT_EQ("world", modality.GetHost()); | 1932 ASSERT_EQ("world", modality.GetHost()); |
1924 ASSERT_EQ(45u, modality.GetPortNumber()); | 1933 ASSERT_EQ(45u, modality.GetPortNumber()); |
1925 ASSERT_EQ(ModalityManufacturer_Dcm4Chee, modality.GetManufacturer()); | 1934 ASSERT_EQ(ModalityManufacturer_GenericNoWildcardInDates, modality.GetManufacturer()); |
1926 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Echo)); | 1935 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Echo)); |
1927 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Find)); | 1936 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Find)); |
1928 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get)); | 1937 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get)); |
1929 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store)); | 1938 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store)); |
1930 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move)); | 1939 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move)); |
1940 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); | |
1941 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); | |
1931 } | 1942 } |
1932 | 1943 |
1933 s["Port"] = "46"; | 1944 s["Port"] = "46"; |
1934 | 1945 |
1935 { | 1946 { |
1945 operations.insert(DicomRequestType_Echo); | 1956 operations.insert(DicomRequestType_Echo); |
1946 operations.insert(DicomRequestType_Find); | 1957 operations.insert(DicomRequestType_Find); |
1947 operations.insert(DicomRequestType_Get); | 1958 operations.insert(DicomRequestType_Get); |
1948 operations.insert(DicomRequestType_Move); | 1959 operations.insert(DicomRequestType_Move); |
1949 operations.insert(DicomRequestType_Store); | 1960 operations.insert(DicomRequestType_Store); |
1950 | 1961 operations.insert(DicomRequestType_NAction); |
1951 ASSERT_EQ(5u, operations.size()); | 1962 operations.insert(DicomRequestType_NEventReport); |
1963 | |
1964 ASSERT_EQ(7u, operations.size()); | |
1952 | 1965 |
1953 for (std::set<DicomRequestType>::const_iterator | 1966 for (std::set<DicomRequestType>::const_iterator |
1954 it = operations.begin(); it != operations.end(); ++it) | 1967 it = operations.begin(); it != operations.end(); ++it) |
1955 { | 1968 { |
1956 { | 1969 { |
1975 ASSERT_TRUE(modality.IsRequestAllowed(*it2)); | 1988 ASSERT_TRUE(modality.IsRequestAllowed(*it2)); |
1976 } | 1989 } |
1977 } | 1990 } |
1978 } | 1991 } |
1979 } | 1992 } |
1980 } | 1993 |
1994 { | |
1995 Json::Value s; | |
1996 s["AllowStorageCommitment"] = false; | |
1997 s["AET"] = "AET"; | |
1998 s["Host"] = "host"; | |
1999 s["Port"] = "104"; | |
2000 | |
2001 RemoteModalityParameters modality(s); | |
2002 ASSERT_TRUE(modality.IsAdvancedFormatNeeded()); | |
2003 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); | |
2004 ASSERT_EQ("host", modality.GetHost()); | |
2005 ASSERT_EQ(104u, modality.GetPortNumber()); | |
2006 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction)); | |
2007 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); | |
2008 } | |
2009 | |
2010 { | |
2011 Json::Value s; | |
2012 s["AllowNAction"] = false; | |
2013 s["AllowNEventReport"] = true; | |
2014 s["AET"] = "AET"; | |
2015 s["Host"] = "host"; | |
2016 s["Port"] = "104"; | |
2017 | |
2018 RemoteModalityParameters modality(s); | |
2019 ASSERT_TRUE(modality.IsAdvancedFormatNeeded()); | |
2020 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); | |
2021 ASSERT_EQ("host", modality.GetHost()); | |
2022 ASSERT_EQ(104u, modality.GetPortNumber()); | |
2023 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction)); | |
2024 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); | |
2025 } | |
2026 | |
2027 { | |
2028 Json::Value s; | |
2029 s["AllowNAction"] = true; | |
2030 s["AllowNEventReport"] = true; | |
2031 s["AET"] = "AET"; | |
2032 s["Host"] = "host"; | |
2033 s["Port"] = "104"; | |
2034 | |
2035 RemoteModalityParameters modality(s); | |
2036 ASSERT_FALSE(modality.IsAdvancedFormatNeeded()); | |
2037 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); | |
2038 ASSERT_EQ("host", modality.GetHost()); | |
2039 ASSERT_EQ(104u, modality.GetPortNumber()); | |
2040 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); | |
2041 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); | |
2042 } | |
2043 } |