A Scala Library for Testing Student Assignments on Concurrent Programming
We present a lightweight library for testing concurrent Scala programs by systematically exploring multiple interleavings between user-specified operations on shared objects. Our library is targeted at beginners of concurrent programming in Scala, runs on a standard JVM, and supports conventional synchronization primitives such as wait
, notify
, and synchronized
. The key component of the library is the trait SchedulableMonitor
that accepts a thread schedule, and interleaves as per the schedule all user-specified operations invoked through multiple threads on objects implementing the trait. Using our library, we developed a unit test engine that tests concurrent operations on shared objects on thousands of schedules obtained by bounding the number of context-switches. If a unit test fails on a schedule, the test engine offers as feedback the interleaved traces of execution that resulted in the failure. We used our test engine to automatically test and evaluate two assignments: (a) lock-based producer/consumer problem, and (b) lock-free sorted list implementation, offered to a class of 150 under-graduate students of EPFL. Our evaluations show that the system is effective in detecting bugs in students’ solutions.
Slides of the talk (muscat.pptx) | 2.18MiB |
Mon 31 OctDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 15:10 | Analysis, Testing & VerificationScala at Matterhorn 2 Chair(s): Philipp Haller KTH Royal Institute of Technology | ||
13:30 25mTalk | SMT-Based Checking of Predicate-Qualified Types for Scala Scala DOI File Attached | ||
13:55 25mTalk | A Scala Library for Testing Student Assignments on Concurrent Programming Scala DOI File Attached | ||
14:20 25mTalk | Building a Modular Static Analysis Framework in Scala (Tool Paper) Scala Quentin Stiévenart Vrije Universiteit Brussel, Belgium, Jens Nicolay Vrije Universiteit Brussel, Belgium, Wolfgang De Meuter Vrije Universiteit Brussel, Belgium, Coen De Roover Vrije Universiteit Brussel, Belgium DOI | ||
14:45 25mTalk | Automatically finding Scala soundness bugs Scala Media Attached |