You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by se...@apache.org on 2015/05/12 14:01:32 UTC

[4/7] flink git commit: [FLINK-2001] [ml] Fix DistanceMetric serialization error

[FLINK-2001] [ml] Fix DistanceMetric serialization error

This closes #668


Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/40683718
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/40683718
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/40683718

Branch: refs/heads/master
Commit: 40683718db2233293ee932317102a399ad60a912
Parents: 318a14d
Author: Chiwan Park <ch...@icloud.com>
Authored: Tue May 12 15:11:25 2015 +0900
Committer: Stephan Ewen <se...@apache.org>
Committed: Tue May 12 14:00:49 2015 +0200

----------------------------------------------------------------------
 .../ml/metrics/distances/DistanceMetric.scala   |  2 +-
 .../metrics/distances/DistanceMetricSuite.scala | 20 +++++++++++++++++++-
 2 files changed, 20 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/40683718/flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/metrics/distances/DistanceMetric.scala
----------------------------------------------------------------------
diff --git a/flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/metrics/distances/DistanceMetric.scala b/flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/metrics/distances/DistanceMetric.scala
index 1297ffb..21573fe 100644
--- a/flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/metrics/distances/DistanceMetric.scala
+++ b/flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/metrics/distances/DistanceMetric.scala
@@ -22,7 +22,7 @@ import org.apache.flink.ml.math.Vector
 
 /** DistanceMeasure interface is used for object which determines distance between two points.
   */
-trait DistanceMetric {
+trait DistanceMetric extends Serializable {
   /** Returns the distance between the arguments.
     *
     * @param a a Vector defining a multi-dimensional point in some space

http://git-wip-us.apache.org/repos/asf/flink/blob/40683718/flink-staging/flink-ml/src/test/scala/org/apache/flink/ml/metrics/distances/DistanceMetricSuite.scala
----------------------------------------------------------------------
diff --git a/flink-staging/flink-ml/src/test/scala/org/apache/flink/ml/metrics/distances/DistanceMetricSuite.scala b/flink-staging/flink-ml/src/test/scala/org/apache/flink/ml/metrics/distances/DistanceMetricSuite.scala
index 569a1a8..1168d7f 100644
--- a/flink-staging/flink-ml/src/test/scala/org/apache/flink/ml/metrics/distances/DistanceMetricSuite.scala
+++ b/flink-staging/flink-ml/src/test/scala/org/apache/flink/ml/metrics/distances/DistanceMetricSuite.scala
@@ -18,8 +18,10 @@
 
 package org.apache.flink.ml.metrics.distances
 
+import java.io.{ByteArrayInputStream, ByteArrayOutputStream, ObjectInputStream, ObjectOutputStream}
+
 import org.apache.flink.ml.math.DenseVector
-import org.scalatest.{Matchers, FlatSpec}
+import org.scalatest.{FlatSpec, Matchers}
 
 class DistanceMetricSuite extends FlatSpec with Matchers {
   val EPSILON = 1e-8
@@ -74,4 +76,20 @@ class DistanceMetricSuite extends FlatSpec with Matchers {
 
     TanimotoDistanceMetric().distance(vec1, vec2) should be(1 - (1.0 / (2 + 2 - 1)) +- EPSILON)
   }
+
+  it should "be serialized" in {
+    val metric = EuclideanDistanceMetric()
+    val byteOutput = new ByteArrayOutputStream()
+    val output = new ObjectOutputStream(byteOutput)
+
+    output.writeObject(metric)
+    output.close()
+
+    val byteInput = new ByteArrayInputStream(byteOutput.toByteArray)
+    val input = new ObjectInputStream(byteInput)
+
+    val restoredMetric = input.readObject().asInstanceOf[DistanceMetric]
+
+    restoredMetric should be(an[EuclideanDistanceMetric])
+  }
 }