o

com.spotify.scio.testing

ApproximationAssertions

object ApproximationAssertions

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ApproximationAssertions
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. trait ApproximationAssertion[-T] extends AnyRef

    Trait for unit testing approximation outputs with an error rate(in percentage).

    Trait for unit testing approximation outputs with an error rate(in percentage).

    A simple test might look like this:

    import com.spotify.scio.testing.PipelineSpec
    import com.spotify.scio.testing.ApproximationAssertions._
    
    class ApproximatePipelineTest extends PipelineSpec {
      "An approximate  pipeline" should "in range with error percentage" in {
        val input: Seq[Int] = ...
        val estimator = ZetaSketchHllPlusPlus[Int](20) // with precision 20
        val output: Seq[Long] = runWithData(input) { sCol =>
          sCol.countApproxDistinct(estimator)
        }
        output shouldApproximate withErrorRate(Seq(3L), 0.5d)
      }
    
      it should "works with key-valued output" in {
        val in: Seq[(String, Int)] = ...
        val expected: Seq[(String, Long)] = ...
        val estimator = ZetaSketchHllPlusPlus[Int]() // with default precision
        val output = runWithData(in) { scl =>
          scl
            .countApproxDistinctByKey(estimator)
        }
        output shouldApproximate withErrorRatePerKey(expected, 0.5d)
      }
    }
  2. implicit final class ApproximationAssertionsImplicits[T] extends AnyVal

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  9. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  14. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  16. def toString(): String
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  18. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  19. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  20. def withErrorRate(expected: Iterable[Long], errorPct: Double): ApproximationAssertion[Iterable[Long]]

    Check corresponding expected value is off by error percentage.

    Check corresponding expected value is off by error percentage. i.e. if actual value is A, expected values is B with error percentage E, then assert following. (B - ((B / 100) * E)) <= A <= (B + ((B / 100) * E)

    Assert above for each element pair.

    expected

    • Expected values, length should be equal to actual.size.
    errorPct

    • how much percentage(%) off from expected value is acceptable.
  21. def withErrorRatePerKey[K](expected: Iterable[(K, Long)], errorPct: Double): ApproximationAssertion[Iterable[(K, Long)]]

    Similar to above but works with tuples.

    Similar to above but works with tuples. Check corresponding expected value is off by error percentage. i.e. if acutal value is A, expected values is B with error percentage E, then assert following. (B - ((B / 100) * E)) <= A <= (B + ((B / 100) * E)

    Assert above for each key in the actual.

    expected

    • Expected (key, values) pairs, length should be equal to actual.size.
    errorPct

    • how much percentage(%) off from expected value is acceptable.

Inherited from AnyRef

Inherited from Any

Ungrouped