diff 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
line wrap: on
line diff
--- a/UnitTestsSources/MultiThreadingTests.cpp	Tue Jun 05 18:25:23 2018 +0200
+++ b/UnitTestsSources/MultiThreadingTests.cpp	Wed Jun 06 16:52:42 2018 +0200
@@ -141,7 +141,7 @@
   protected:
     virtual bool HandleInstance(const std::string& instance)
     {
-      return true;
+      return (instance != "nope");
     }
 
   public:
@@ -764,6 +764,32 @@
 }
 
 
+TEST(JobsSerialization, JobOperationValues)
+{
+  Json::Value s;
+
+  {
+    JobOperationValues values;
+    values.Append(new NullOperationValue);
+    values.Append(new StringOperationValue("hello"));
+    values.Append(new StringOperationValue("world"));
+    values.Serialize(s);
+  }
+
+  {
+    GenericJobUnserializer unserializer;
+    std::auto_ptr<JobOperationValues> values(JobOperationValues::Unserialize(unserializer, s));
+    ASSERT_EQ(3u, values->GetSize());
+    ASSERT_EQ(JobOperationValue::Type_Null, values->GetValue(0).GetType());
+    ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(1).GetType());
+    ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(2).GetType());
+
+    ASSERT_EQ("hello", dynamic_cast<const StringOperationValue&>(values->GetValue(1)).GetContent());
+    ASSERT_EQ("world", dynamic_cast<const StringOperationValue&>(values->GetValue(2)).GetContent());
+  }
+}
+
+
 TEST(JobsSerialization, GenericValues)
 {
   Json::Value s;
@@ -796,32 +822,6 @@
 }
 
 
-TEST(JobsSerialization, JobOperationValues)
-{
-  Json::Value s;
-
-  {
-    JobOperationValues values;
-    values.Append(new NullOperationValue);
-    values.Append(new StringOperationValue("hello"));
-    values.Append(new StringOperationValue("world"));
-    values.Serialize(s);
-  }
-
-  {
-    GenericJobUnserializer unserializer;
-    std::auto_ptr<JobOperationValues> values(JobOperationValues::Unserialize(unserializer, s));
-    ASSERT_EQ(3u, values->GetSize());
-    ASSERT_EQ(JobOperationValue::Type_Null, values->GetValue(0).GetType());
-    ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(1).GetType());
-    ASSERT_EQ(JobOperationValue::Type_String, values->GetValue(2).GetType());
-
-    ASSERT_EQ("hello", dynamic_cast<const StringOperationValue&>(values->GetValue(1)).GetContent());
-    ASSERT_EQ("world", dynamic_cast<const StringOperationValue&>(values->GetValue(2)).GetContent());
-  }
-}
-
-
 TEST(JobsSerialization, GenericOperations)
 {   
   Json::Value s;
@@ -838,16 +838,14 @@
   {
     std::auto_ptr<IJobOperation> operation;
     operation.reset(unserializer.UnserializeOperation(s));
-    
-  }
 
-  {
-    
+    // Make sure that we have indeed unserialized a log operation
+    ASSERT_THROW(dynamic_cast<DeleteResourceOperation&>(*operation), std::bad_cast);
+    dynamic_cast<LogJobOperation&>(*operation);
   }
 }
 
 
-
 TEST(JobsSerialization, GenericJobs)
 {   
   Json::Value s;
@@ -855,9 +853,14 @@
   {
     DummyInstancesJob job;
     job.SetDescription("description");
+    job.AddInstance("hello");
     job.AddInstance("nope");
-    job.AddInstance("ok");
+    job.AddInstance("world");
     job.SetPermissive(true);
+    ASSERT_THROW(job.ExecuteStep(), OrthancException);  // Not started yet
+    job.Start();
+    job.ExecuteStep();
+    job.ExecuteStep();
     job.Serialize(s);
   }
 
@@ -868,8 +871,18 @@
 
     std::auto_ptr<IJob> job;
     job.reset(unserializer.UnserializeJob(s));
-    ASSERT_EQ("description", dynamic_cast<DummyInstancesJob&>(*job).GetDescription());
-    //ASSERT_EQ("nope", dynamic_cast<DummyInstancesJob&>(*job).GetInstance(0));
+
+    const DummyInstancesJob& tmp = dynamic_cast<const DummyInstancesJob&>(*job);
+    ASSERT_FALSE(tmp.IsStarted());
+    ASSERT_TRUE(tmp.IsPermissive());
+    ASSERT_EQ("description", tmp.GetDescription());
+    ASSERT_EQ(3u, tmp.GetInstancesCount());
+    ASSERT_EQ(2u, tmp.GetPosition());
+    ASSERT_EQ(1u, tmp.GetFailedInstances().size());
+    ASSERT_EQ("hello", tmp.GetInstance(0));
+    ASSERT_EQ("nope", tmp.GetInstance(1));
+    ASSERT_EQ("world", tmp.GetInstance(2));
+    ASSERT_TRUE(tmp.IsFailedInstance("nope"));
   }
 }