Published November 12, 2013 | Version v1

SEDGE: Symbolic Example Data Generation for Dataflow Programs

  • 1. University of Massachusetts, Amherst
  • 2. JOHANN WOLFGANG GOETHE UNIVERSITAET FRANKFURT AM MAIN
  • 3. NATIONAL AND KAPODISTRIAN UNIVERSITY OF ATHENS
  • 4. THE UNIVERSITY OF TEXAS SYSTEM

Description

Exhaustive, automatic testing of dataflow (esp. map- reduce) programs has emerged as an important challenge. Past work demonstrated effective ways to generate small example data sets that exercise operators in the Pig platform, used to generate Hadoop map-reduce programs. Although such prior techniques attempt to cover all cases of operator use, in practice they often fail. Our SEDGE system addresses these completeness problems: for every dataflow operator, we produce data aiming to cover all cases that arise in the dataflow program (e.g., both passing and failing a filter). SEDGE relies on transforming the program into symbolic constraints, and solving the constraints using a symbolic reasoning engine (a powerful SMT solver), while using input data as concrete aids in the solution process. The approach resembles dynamic-symbolic (a.k.a. “concolic”) execution in a conventional programming language, adapted to the unique features of the dataflow domain. In third-party benchmarks, SEDGE achieves higher coverage than past techniques for 5 out of 20 PigMix benchmarks and 7 out of 11 SDSS benchmarks and (with equal coverage for the rest of the benchmarks). We also show that our targeting of the high-level dataflow language pays off: for complex programs, state-of-the-art dynamic-symbolic execution at the level of the generated map-reduce code (instead of the original dataflow program) requires many more test cases or achieves much lower coverage than our approach.

Files

sedge-ase13.pdf

Files (369.7 kB)

Name Size Download all
md5:409ad6245c8db2f380d2a358407cb45b
369.7 kB Preview Download

Additional details

Funding

European Commission
PADECL - Advanced Program Analysis Using Declarative Languages 256521
European Commission
SPADE - Sophisticated Program Analysis, Declaratively 307334