zhipeng93 commented on code in PR #218:
URL: https://github.com/apache/flink-ml/pull/218#discussion_r1133434653


##########
flink-ml-core/src/test/java/org/apache/flink/ml/api/PipelineTest.java:
##########
@@ -95,4 +109,59 @@ public void testPipeline() throws Exception {
         // Executes the loaded Pipeline and verifies that it produces the 
expected output.
         TestUtils.executeAndCheckOutput(env, loadedEstimator, inputs, output, 
null, null);
     }
+
+    @Test
+    public void testSupportServable() {
+        SumEstimator estimatorA = new SumEstimator();
+        UnionAlgoOperator algoOperatorA = new UnionAlgoOperator();
+        SumModel modelA = new SumModel();
+        SumModel modelB = new SumModel();
+
+        List<Stage<?>> stages = Arrays.asList(modelA, modelB);
+        PipelineModel pipelineModel = new PipelineModel(stages);
+        assertTrue(pipelineModel.supportServable());
+
+        stages = Arrays.asList(estimatorA, modelA);
+        pipelineModel = new PipelineModel(stages);
+        assertFalse(pipelineModel.supportServable());
+
+        stages = Arrays.asList(algoOperatorA, modelA);
+        pipelineModel = new PipelineModel(stages);
+        assertFalse(pipelineModel.supportServable());
+    }
+
+    @Test
+    public void testLoadServable() throws Exception {
+        SumModel modelA = new SumModel().setModelData(tEnv.fromValues(10));
+        SumModel modelB = new SumModel().setModelData(tEnv.fromValues(20));
+        SumModel modelC = new SumModel().setModelData(tEnv.fromValues(30));
+
+        List<Stage<?>> stages = Arrays.asList(modelA, modelB, modelC);
+        Model<?> model = new PipelineModel(stages);
+
+        PipelineModelServable servable =
+                saveAndLoadServable(tEnv, model, 
tempFolder.newFolder().getAbsolutePath());

Review Comment:
   I aggree with @lindong28 that using `PipelineModel#loadServable()` is better 
for readability. 
   
   However, I also noticed that we are using refelctions to test 
`saveAndReload` for all other Model/Transformers (e.g., KmeansTest [1]). In 
this case, using reflections for testing `PipelineModel#loadServable()` here is 
ok to me. If we want better readability, we can update all the existing tests 
in a later PR.
   
   @jiangxin369 @lindong28 What do you think?
   
   
   [1] 
https://github.com/apache/flink-ml/blob/master/flink-ml-lib/src/test/java/org/apache/flink/ml/clustering/KMeansTest.java#L217
 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to