TY - JOUR
T1 - Model-based testing of Apache ZooKeeper
T2 - Fundamental API usage and watchers
AU - Artho, Cyrille
AU - Banzai, Kazuaki
AU - Gros, Quentin
AU - Rousset, Guillaume
AU - Ma, Lei
AU - Kitamura, Takashi
AU - Hagiya, Masami
AU - Tanabe, Yoshinori
AU - Yamamoto, Mitsuharu
N1 - Funding Information:
Part of the work was supported by JSPS Grants 23240003 and 26280019 and by a special grant of KTH for the collaboration between KTH and the University of Tokyo. We also thank Franz Weitl and Yoriyuki Yamagata for their insightful comments on an earlier version of this paper, and Edward Ribeiro for his detailed account on how ZooKeeper processes actions internally. kaken‐hi
Publisher Copyright:
Copyright © 2019 John Wiley & Sons, Ltd.
PY - 2020/11/1
Y1 - 2020/11/1
N2 - 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.
AB - 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.
UR - http://www.scopus.com/inward/record.url?scp=85076534141&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85076534141&partnerID=8YFLogxK
U2 - 10.1002/stvr.1720
DO - 10.1002/stvr.1720
M3 - Article
AN - SCOPUS:85076534141
SN - 0960-0833
VL - 30
JO - Software Testing Verification and Reliability
JF - Software Testing Verification and Reliability
IS - 7-8
M1 - e1720
ER -