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 }