Model‐based testing of Apache ZooKeeper: Fundamental API usage and watchers. (2nd December 2019) - Artho, Cyrille; Banzai, Kazuaki; Gros, Quentin; Rousset, Guillaume; Ma, Lei; Kitamura, Takashi; Hagiya, Masami; Tanabe, Yoshinori; Yamamoto, Mitsuharu
Summary: In this paper, we extend work on model‐based testing for Apache ZooKeeper, to handle watchers (triggers) and improve scalability. In a distributed asynchronous shared storage like ZooKeeper, watchers deliver notifications on state changes. They are difficult to test because watcher notifications involve an initial action that sets the watcher, followed by another action that changes the previously seen state. We show how to generate test cases for concurrent client sessions executing against ZooKeeper with the tool Modbat. The tests are verified against an oracle that takes into account all possible timings of network communication. The oracle has to verify that there exists a chain of events that triggers both the initial callback and the subsequent watcher notification. We show in detail how the oracle computes whether watch triggers are correct and how the model was adapted and improved to handle these features. Together with a new search improvement that increases both speed and accuracy, we are able to verify large test setups and confirm several defects with our model. Abstract : This paper shows an extensive model‐based testing case study using tool Modbat on Apache ZooKeeper. We improve the scalability of our model to handle more complex asynchronous and concurrent actions and implement test oracle extensions to handle the complex semantics of watchers, which deliver notifications on stage changes on the server. Our work can successfully verify whether a chain of events to trigger a watcher exists in large and complex scenarios.