Mercurial > hg > orthanc
comparison UnitTestsSources/MultiThreadingTests.cpp @ 2657:5eea2f11e8df jobs
JobsSerialization.GenericJobs
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 06 Jun 2018 16:52:42 +0200 |
parents | a6d3e45eeff5 |
children | ce770f095092 |
comparison
equal
deleted
inserted
replaced
2656:a6d3e45eeff5 | 2657:5eea2f11e8df |
---|---|
139 class DummyInstancesJob : public SetOfInstancesJob | 139 class DummyInstancesJob : public SetOfInstancesJob |
140 { | 140 { |
141 protected: | 141 protected: |
142 virtual bool HandleInstance(const std::string& instance) | 142 virtual bool HandleInstance(const std::string& instance) |
143 { | 143 { |
144 return true; | 144 return (instance != "nope"); |
145 } | 145 } |
146 | 146 |
147 public: | 147 public: |
148 DummyInstancesJob() | 148 DummyInstancesJob() |
149 { | 149 { |
762 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); | 762 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); |
763 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | 763 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); |
764 } | 764 } |
765 | 765 |
766 | 766 |
767 TEST(JobsSerialization, GenericValues) | |
768 { | |
769 Json::Value s; | |
770 | |
771 { | |
772 NullOperationValue null; | |
773 null.Serialize(s); | |
774 } | |
775 | |
776 GenericJobUnserializer unserializer; | |
777 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); | |
778 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | |
779 | |
780 std::auto_ptr<JobOperationValue> value; | |
781 value.reset(unserializer.UnserializeValue(s)); | |
782 | |
783 ASSERT_EQ(JobOperationValue::Type_Null, value->GetType()); | |
784 | |
785 { | |
786 StringOperationValue str("Hello"); | |
787 str.Serialize(s); | |
788 } | |
789 | |
790 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); | |
791 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | |
792 value.reset(unserializer.UnserializeValue(s)); | |
793 | |
794 ASSERT_EQ(JobOperationValue::Type_String, value->GetType()); | |
795 ASSERT_EQ("Hello", dynamic_cast<StringOperationValue&>(*value).GetContent()); | |
796 } | |
797 | |
798 | |
799 TEST(JobsSerialization, JobOperationValues) | 767 TEST(JobsSerialization, JobOperationValues) |
800 { | 768 { |
801 Json::Value s; | 769 Json::Value s; |
802 | 770 |
803 { | 771 { |
820 ASSERT_EQ("world", dynamic_cast<const StringOperationValue&>(values->GetValue(2)).GetContent()); | 788 ASSERT_EQ("world", dynamic_cast<const StringOperationValue&>(values->GetValue(2)).GetContent()); |
821 } | 789 } |
822 } | 790 } |
823 | 791 |
824 | 792 |
793 TEST(JobsSerialization, GenericValues) | |
794 { | |
795 Json::Value s; | |
796 | |
797 { | |
798 NullOperationValue null; | |
799 null.Serialize(s); | |
800 } | |
801 | |
802 GenericJobUnserializer unserializer; | |
803 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); | |
804 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | |
805 | |
806 std::auto_ptr<JobOperationValue> value; | |
807 value.reset(unserializer.UnserializeValue(s)); | |
808 | |
809 ASSERT_EQ(JobOperationValue::Type_Null, value->GetType()); | |
810 | |
811 { | |
812 StringOperationValue str("Hello"); | |
813 str.Serialize(s); | |
814 } | |
815 | |
816 ASSERT_THROW(unserializer.UnserializeJob(s), OrthancException); | |
817 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | |
818 value.reset(unserializer.UnserializeValue(s)); | |
819 | |
820 ASSERT_EQ(JobOperationValue::Type_String, value->GetType()); | |
821 ASSERT_EQ("Hello", dynamic_cast<StringOperationValue&>(*value).GetContent()); | |
822 } | |
823 | |
824 | |
825 TEST(JobsSerialization, GenericOperations) | 825 TEST(JobsSerialization, GenericOperations) |
826 { | 826 { |
827 Json::Value s; | 827 Json::Value s; |
828 | 828 |
829 { | 829 { |
836 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); | 836 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); |
837 | 837 |
838 { | 838 { |
839 std::auto_ptr<IJobOperation> operation; | 839 std::auto_ptr<IJobOperation> operation; |
840 operation.reset(unserializer.UnserializeOperation(s)); | 840 operation.reset(unserializer.UnserializeOperation(s)); |
841 | 841 |
842 } | 842 // Make sure that we have indeed unserialized a log operation |
843 | 843 ASSERT_THROW(dynamic_cast<DeleteResourceOperation&>(*operation), std::bad_cast); |
844 { | 844 dynamic_cast<LogJobOperation&>(*operation); |
845 | 845 } |
846 } | 846 } |
847 } | |
848 | |
849 | 847 |
850 | 848 |
851 TEST(JobsSerialization, GenericJobs) | 849 TEST(JobsSerialization, GenericJobs) |
852 { | 850 { |
853 Json::Value s; | 851 Json::Value s; |
854 | 852 |
855 { | 853 { |
856 DummyInstancesJob job; | 854 DummyInstancesJob job; |
857 job.SetDescription("description"); | 855 job.SetDescription("description"); |
856 job.AddInstance("hello"); | |
858 job.AddInstance("nope"); | 857 job.AddInstance("nope"); |
859 job.AddInstance("ok"); | 858 job.AddInstance("world"); |
860 job.SetPermissive(true); | 859 job.SetPermissive(true); |
860 ASSERT_THROW(job.ExecuteStep(), OrthancException); // Not started yet | |
861 job.Start(); | |
862 job.ExecuteStep(); | |
863 job.ExecuteStep(); | |
861 job.Serialize(s); | 864 job.Serialize(s); |
862 } | 865 } |
863 | 866 |
864 { | 867 { |
865 DummyUnserializer unserializer; | 868 DummyUnserializer unserializer; |
866 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); | 869 ASSERT_THROW(unserializer.UnserializeValue(s), OrthancException); |
867 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); | 870 ASSERT_THROW(unserializer.UnserializeOperation(s), OrthancException); |
868 | 871 |
869 std::auto_ptr<IJob> job; | 872 std::auto_ptr<IJob> job; |
870 job.reset(unserializer.UnserializeJob(s)); | 873 job.reset(unserializer.UnserializeJob(s)); |
871 ASSERT_EQ("description", dynamic_cast<DummyInstancesJob&>(*job).GetDescription()); | 874 |
872 //ASSERT_EQ("nope", dynamic_cast<DummyInstancesJob&>(*job).GetInstance(0)); | 875 const DummyInstancesJob& tmp = dynamic_cast<const DummyInstancesJob&>(*job); |
876 ASSERT_FALSE(tmp.IsStarted()); | |
877 ASSERT_TRUE(tmp.IsPermissive()); | |
878 ASSERT_EQ("description", tmp.GetDescription()); | |
879 ASSERT_EQ(3u, tmp.GetInstancesCount()); | |
880 ASSERT_EQ(2u, tmp.GetPosition()); | |
881 ASSERT_EQ(1u, tmp.GetFailedInstances().size()); | |
882 ASSERT_EQ("hello", tmp.GetInstance(0)); | |
883 ASSERT_EQ("nope", tmp.GetInstance(1)); | |
884 ASSERT_EQ("world", tmp.GetInstance(2)); | |
885 ASSERT_TRUE(tmp.IsFailedInstance("nope")); | |
873 } | 886 } |
874 } | 887 } |
875 | 888 |
876 | 889 |
877 namespace | 890 namespace |