Mercurial > hg > orthanc
comparison UnitTestsSources/MultiThreadingTests.cpp @ 2651:1da5a052c777 jobs
testing value serialization
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 04 Jun 2018 11:53:12 +0200 |
parents | e1893d31652a |
children | a3f0f61a14ca |
comparison
equal
deleted
inserted
replaced
2650:5f2dd8b6ee2f | 2651:1da5a052c777 |
---|---|
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/FileStorage/MemoryStorageArea.h" | |
37 #include "../Core/JobsEngine/JobsEngine.h" | 38 #include "../Core/JobsEngine/JobsEngine.h" |
39 #include "../Core/JobsEngine/Operations/LogJobOperation.h" | |
40 #include "../Core/JobsEngine/Operations/NullOperationValue.h" | |
41 #include "../Core/JobsEngine/Operations/StringOperationValue.h" | |
38 #include "../Core/MultiThreading/SharedMessageQueue.h" | 42 #include "../Core/MultiThreading/SharedMessageQueue.h" |
39 #include "../Core/OrthancException.h" | 43 #include "../Core/OrthancException.h" |
40 #include "../Core/SystemToolbox.h" | 44 #include "../Core/SystemToolbox.h" |
41 #include "../Core/Toolbox.h" | 45 #include "../Core/Toolbox.h" |
46 #include "../OrthancServer/DatabaseWrapper.h" | |
47 #include "../OrthancServer/ServerContext.h" | |
48 #include "../OrthancServer/ServerJobs/LuaJobManager.h" | |
49 #include "../OrthancServer/ServerJobs/Operations/DicomInstanceOperationValue.h" | |
50 #include "../OrthancServer/ServerJobs/OrthancJobUnserializer.h" | |
42 | 51 |
43 using namespace Orthanc; | 52 using namespace Orthanc; |
44 | 53 |
45 namespace | 54 namespace |
46 { | 55 { |
603 | 612 |
604 engine.Stop(); | 613 engine.Stop(); |
605 } | 614 } |
606 | 615 |
607 | 616 |
608 | |
609 | |
610 | |
611 #include "../OrthancServer/ServerJobs/LuaJobManager.h" | |
612 #include "../Core/JobsEngine/Operations/StringOperationValue.h" | |
613 #include "../Core/JobsEngine/Operations/LogJobOperation.h" | |
614 | |
615 | |
616 TEST(JobsEngine, DISABLED_SequenceOfOperationsJob) | 617 TEST(JobsEngine, DISABLED_SequenceOfOperationsJob) |
617 { | 618 { |
618 JobsEngine engine; | 619 JobsEngine engine; |
619 engine.SetWorkersCount(3); | 620 engine.SetWorkersCount(3); |
620 engine.Start(); | 621 engine.Start(); |
673 } | 674 } |
674 | 675 |
675 boost::this_thread::sleep(boost::posix_time::milliseconds(2000)); | 676 boost::this_thread::sleep(boost::posix_time::milliseconds(2000)); |
676 | 677 |
677 engine.Stop(); | 678 engine.Stop(); |
678 | 679 } |
679 } | 680 |
681 | |
682 #include "../OrthancServer/ServerContext.h" | |
683 | |
684 TEST(JobsSerialization, GenericValues) | |
685 { | |
686 GenericJobUnserializer unserializer; | |
687 | |
688 Json::Value s; | |
689 std::auto_ptr<JobOperationValue> value; | |
690 | |
691 { | |
692 NullOperationValue null; | |
693 null.Serialize(s); | |
694 } | |
695 | |
696 value.reset(unserializer.UnserializeValue(s)); | |
697 ASSERT_EQ(JobOperationValue::Type_Null, value->GetType()); | |
698 | |
699 { | |
700 StringOperationValue str("Hello"); | |
701 str.Serialize(s); | |
702 } | |
703 | |
704 value.reset(unserializer.UnserializeValue(s)); | |
705 ASSERT_EQ(JobOperationValue::Type_String, value->GetType()); | |
706 ASSERT_EQ("Hello", dynamic_cast<StringOperationValue&>(*value).GetContent()); | |
707 } | |
708 | |
709 | |
710 TEST(JobsSerialization, OrthancValues) | |
711 { | |
712 MemoryStorageArea storage; | |
713 DatabaseWrapper db; // The SQLite DB is in memory | |
714 db.Open(); | |
715 ServerContext context(db, storage); | |
716 | |
717 std::string id; | |
718 | |
719 { | |
720 ParsedDicomFile dicom(true); | |
721 dicom.Replace(DICOM_TAG_PATIENT_NAME, std::string("JODOGNE"), | |
722 false, DicomReplaceMode_InsertIfAbsent); | |
723 | |
724 DicomInstanceToStore toStore; | |
725 toStore.SetParsedDicomFile(dicom); | |
726 ASSERT_EQ(StoreStatus_Success, context.Store(id, toStore)); | |
727 } | |
728 | |
729 { | |
730 OrthancJobUnserializer unserializer(context); | |
731 | |
732 Json::Value s; | |
733 std::auto_ptr<JobOperationValue> value; | |
734 | |
735 { | |
736 DicomInstanceOperationValue instance(context, id); | |
737 instance.Serialize(s); | |
738 } | |
739 | |
740 value.reset(unserializer.UnserializeValue(s)); | |
741 ASSERT_EQ(JobOperationValue::Type_DicomInstance, value->GetType()); | |
742 ASSERT_EQ(id, dynamic_cast<DicomInstanceOperationValue&>(*value).GetId()); | |
743 | |
744 { | |
745 std::string content; | |
746 dynamic_cast<DicomInstanceOperationValue&>(*value).ReadDicom(content); | |
747 | |
748 ParsedDicomFile dicom(content); | |
749 ASSERT_TRUE(dicom.GetTagValue(content, DICOM_TAG_PATIENT_NAME)); | |
750 ASSERT_EQ("JODOGNE", content); | |
751 } | |
752 } | |
753 | |
754 context.Stop(); | |
755 } |