From 84b3a4a873de8444eda1bd162ed52f79941ec864 Mon Sep 17 00:00:00 2001
From: Sandeep Singh <sandeep@techaddict.me>
Date: Tue, 3 May 2016 11:45:51 -0700
Subject: [PATCH] [SPARK-15082][CORE] Improve unit test coverage for
 AccumulatorV2

## What changes were proposed in this pull request?
Added tests for ListAccumulator and LegacyAccumulatorWrapper, test for ListAccumulator is one similar to old Collection Accumulators

## How was this patch tested?
Ran tests locally.

cc rxin

Author: Sandeep Singh <sandeep@techaddict.me>

Closes #12862 from techaddict/SPARK-15082.
---
 .../spark/util/AccumulatorV2Suite.scala       | 61 ++++++++++++++++++-
 1 file changed, 60 insertions(+), 1 deletion(-)

diff --git a/core/src/test/scala/org/apache/spark/util/AccumulatorV2Suite.scala b/core/src/test/scala/org/apache/spark/util/AccumulatorV2Suite.scala
index 815b134884..ecaf4f0c64 100644
--- a/core/src/test/scala/org/apache/spark/util/AccumulatorV2Suite.scala
+++ b/core/src/test/scala/org/apache/spark/util/AccumulatorV2Suite.scala
@@ -17,7 +17,7 @@
 
 package org.apache.spark.util
 
-import org.apache.spark.SparkFunSuite
+import org.apache.spark._
 
 class AccumulatorV2Suite extends SparkFunSuite {
 
@@ -86,4 +86,63 @@ class AccumulatorV2Suite extends SparkFunSuite {
     assert(acc.sum == 5.0)
     assert(acc.avg == 1.25)
   }
+
+  test("ListAccumulator") {
+    val acc = new ListAccumulator[Double]
+    assert(acc.value.isEmpty)
+    assert(acc.isZero)
+
+    acc.add(0.0)
+    assert(acc.value.contains(0.0))
+    assert(!acc.isZero)
+
+    acc.add(new java.lang.Double(1.0))
+
+    val acc2 = acc.copyAndReset()
+    assert(acc2.value.isEmpty)
+    assert(acc2.isZero)
+
+    assert(acc.value.contains(1.0))
+    assert(!acc.isZero)
+    assert(acc.value.size() === 2)
+
+    acc2.add(2.0)
+    assert(acc2.value.contains(2.0))
+    assert(!acc2.isZero)
+    assert(acc2.value.size() === 1)
+
+    // Test merging
+    acc.merge(acc2)
+    assert(acc.value.contains(2.0))
+    assert(!acc.isZero)
+    assert(acc.value.size() === 3)
+  }
+
+  test("LegacyAccumulatorWrapper") {
+    val acc = new LegacyAccumulatorWrapper("default", AccumulatorParam.StringAccumulatorParam)
+    assert(acc.value === "default")
+    assert(!acc.isZero)
+
+    acc.add("foo")
+    assert(acc.value === "foo")
+    assert(!acc.isZero)
+
+    acc.add(new java.lang.String("bar"))
+
+    val acc2 = acc.copyAndReset()
+    assert(acc2.value === "")
+    assert(acc2.isZero)
+
+    assert(acc.value === "bar")
+    assert(!acc.isZero)
+
+    acc2.add("baz")
+    assert(acc2.value === "baz")
+    assert(!acc2.isZero)
+
+    // Test merging
+    acc.merge(acc2)
+    assert(acc.value === "baz")
+    assert(!acc.isZero)
+  }
 }
-- 
GitLab