3,029 research outputs found
Uncovering Bugs in Distributed Storage Systems during Testing (not in Production!)
Testing distributed systems is challenging due to multiple sources of nondeterminism. Conventional testing techniques, such as unit, integration and stress testing, are ineffective in preventing serious but subtle bugs from reaching production. Formal techniques, such as TLA+, can only verify high-level specifications of systems at the level of logic-based models, and fall short of checking the actual executable code. In this paper, we present a new methodology for testing distributed systems. Our approach applies advanced systematic testing techniques to thoroughly check that the executable code adheres to its high-level specifications, which significantly improves coverage of important system behaviors. Our methodology has been applied to three distributed storage systems in the Microsoft Azure cloud computing platform. In the process, numerous bugs were identified, reproduced, confirmed and fixed. These bugs required a subtle combination of concurrency and failures, making them extremely difficult to find with conventional testing techniques. An important advantage of our approach is that a bug is uncovered in a small setting and witnessed by a full system trace, which dramatically increases the productivity of debugging
The Spectrum of Strong Behavioral Equivalences for Nondeterministic and Probabilistic Processes
We present a spectrum of trace-based, testing, and bisimulation equivalences
for nondeterministic and probabilistic processes whose activities are all
observable. For every equivalence under study, we examine the discriminating
power of three variants stemming from three approaches that differ for the way
probabilities of events are compared when nondeterministic choices are resolved
via deterministic schedulers. We show that the first approach - which compares
two resolutions relatively to the probability distributions of all considered
events - results in a fragment of the spectrum compatible with the spectrum of
behavioral equivalences for fully probabilistic processes. In contrast, the
second approach - which compares the probabilities of the events of a
resolution with the probabilities of the same events in possibly different
resolutions - gives rise to another fragment composed of coarser equivalences
that exhibits several analogies with the spectrum of behavioral equivalences
for fully nondeterministic processes. Finally, the third approach - which only
compares the extremal probabilities of each event stemming from the different
resolutions - yields even coarser equivalences that, however, give rise to a
hierarchy similar to that stemming from the second approach.Comment: In Proceedings QAPL 2013, arXiv:1306.241
The language of certain conflicts of a nondeterministic process
The language of certain conflicts is the most general set of behaviours of a nondeterministic process, which certainly lead to a livelock or deadlock when accepted by another process running in parallel. It is of great use in model checking to detect livelocks or deadlocks in very large systems, and in process-algebra to obtain abstractions preserving livelock and deadlock. Unfortunately, the language of certain conflicts is difficult to compute and has only been approximated in previous work. This paper presents an effective algorithm to calculate the language of certain conflicts for any given nondeterministic finite-state process and discusses its properties. The algorithm is shown to be correct and of exponential complexity
- ā¦