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