Relational database applications are notoriously difficult to test and debug. Concurrent execution of database transactions may violate complex structural invariants that constraint how changes to the contents of one (shared) table affect the contents of another. Simplifying the underlying concurrency model is one way to ameliorate the difficulty of understanding how concurrent accesses and updates can affect database state with respect to these sophisticated properties. Enforcing serializable execution of all transactions achieves this simplification, but it comes at a significant price in performance, especially at scale, where database state is often replicated to improve latency and availability. To address these challenges, this paper presents a novel testing framework for detecting serializability violations in (SQL) database-backed Java applications executing on weakly-consistent storage systems. We manifest our approach in a tool named CLOTHO, that combines a static analyzer and a model checker to generate abstract executions, discover serializability violations in these executions, and translate them back into concrete test inputs suitable for deployment in a test environment. To the best of our knowledge, CLOTHO is the first automated test generation facility for identifying serializability anomalies of Java applications intended to operate in geo-replicated distributed environments. An experimental evaluation on a set of industry-standard benchmarks demonstrates the utility of our approach.
翻译:同时执行数据库交易可能会违反复杂的结构变异,从而限制对一个(共享)表格内容的修改如何影响另一个表格的内容。简化基本同值货币模型是缓解理解以下困难的一种方法:同时存取和更新如何影响这些复杂特性的数据库状态。要对所有交易进行连序执行,就能够实现这一简化,但执行过程要付出很大的代价,特别是在规模上,因为数据库状态往往被复制,以改善延缓性和可用性。为了应对这些挑战,本文件为发现一个(SQL)数据库支持的爪哇应用程序中的连带违反事件提供了一个新的测试框架,用于执行不协调的储存系统。我们用一个名为CLOTHO的工具展示了我们的方法,该工具将静态分析器和模型检查器结合起来,以产生抽象的处决,发现这些执行过程中的连带性违规现象,并将其转化为适合在测试环境中部署的具体测试投入。据我们所知,CLOTHO是第一个自动测试生成机制,用以查明在数据库支持的Java应用中进行连续性、重复性、重复性、实验性标准评估的行业基准。