Results 1 - 10
of
30
Automated systematic testing of open distributed programs
- IN: FASE’06
, 2006
"... We present an algorithm for automatic testing of distributed programs, such as Unix processes with inter-process communication and Web services. Specifically, we assume that a program consists of a number of asynchronously executing concurrent processes or actors which may take data inputs and com ..."
Abstract
-
Cited by 31 (9 self)
- Add to MetaCart
(Show Context)
We present an algorithm for automatic testing of distributed programs, such as Unix processes with inter-process communication and Web services. Specifically, we assume that a program consists of a number of asynchronously executing concurrent processes or actors which may take data inputs and communicate using asynchronous messages. Because of the large numbers of possible data inputs as well as the asynchrony in the execution and communication, distributed programs exhibit very large numbers of potential behaviors. Our goal is two fold: to execute all reachable statements of a program, and to detect deadlock states. Specifically, our algorithm uses simultaneous concrete and symbolic execution, or concolic execution, to explore all distinct behaviors that may result from a program’s execution given different data inputs and schedules. The key idea is as follows. We use the symbolic execution to generate data inputs that may lead to alternate behaviors. At the same time, we use the concrete execution to determine, at runtime, the partial order of events in the program’s execution. This enables us to improve the efficiency of our algorithm by avoiding many tests which would result in equivalent behaviors. We describe our experience with dCUTE, a prototype tool that we have developed for distributed Java programs.
An Approach to Feature Location in Distributed Systems
- the Journal of Systems and Software. Industrial Tools ... SERC-TR-275 21
, 2004
"... This paper describes an approach to the feature location problem for distributed systems, that is, to the problem of locating which code components are important in providing a particular feature for an end user. A feature is located by observing system execution and noting time intervals in which i ..."
Abstract
-
Cited by 23 (4 self)
- Add to MetaCart
(Show Context)
This paper describes an approach to the feature location problem for distributed systems, that is, to the problem of locating which code components are important in providing a particular feature for an end user. A feature is located by observing system execution and noting time intervals in which it active. Traces of execution in intervals with and without the feature are compared. Earlier experience has shown that this analysis is di#cult because distributed systems often exhibit stochastic behavior and because time intervals are hard to identify with precision.
Resettable Vector Clocks
- PROCEEDINGS OF THE 19TH ACM SYMPOSIUM ON PRINCIPLES OF DISTRIBUTED COMPUTING (PODC
, 2000
"... Vector clocks (VC) are an inherent component of a rich class of distributed applications. In this paper, we consider the problem of realistic -- more specically, bounded-space and fault-tolerant -- implementation of these client applications. To this end, we generalize the notion of VC to resettable ..."
Abstract
-
Cited by 17 (5 self)
- Add to MetaCart
Vector clocks (VC) are an inherent component of a rich class of distributed applications. In this paper, we consider the problem of realistic -- more specically, bounded-space and fault-tolerant -- implementation of these client applications. To this end, we generalize the notion of VC to resettable vector clocks (RVC), and provide a realistic implementation of RVC. Further, we identify an interface contract under which our RVC implementation can be substituted for VC in client applications, without aecting the client's correctness. Based on such substitution, we show how to transform the client so that it is itself realistically implemented; we demonstrate our method in the context of Ricart-Agrawala's mutual exclusion program.
Efficient Distributed Detection of Conjunctions of Local Predicates in Asynchronous Computations
- In Proceedings of the 8th IEEE Symposium on Parallel and Distributed Processing (SPDP
, 1995
"... Global predicate detection is a fundamental problem... ..."
Abstract
-
Cited by 16 (1 self)
- Add to MetaCart
Global predicate detection is a fundamental problem...
Distributed predicate detection in a faulty environment
- In Proceedings of the 18th IEEE International Conference on Distributed Computing Systems (ICDCS98
, 1998
"... There has been very little research in distributed predicate detection for faulty, asynchronous environments. In this paper we define a class of predicates called set decreasing predicates which can be detected in such an environment. We introduce a set of failure detectors called infinitely often a ..."
Abstract
-
Cited by 16 (0 self)
- Add to MetaCart
(Show Context)
There has been very little research in distributed predicate detection for faulty, asynchronous environments. In this paper we define a class of predicates called set decreasing predicates which can be detected in such an environment. We introduce a set of failure detectors called infinitely often accurate detectors which are implementable in asynchronous systems. Based on these failure detectors we present an algorithm to detect conjunction of local predicates and send-monotonic channel predicates. Since perfect failure detection is impossible in an asynchronous system, we cannot guarantee that our detection algorithm will not have false detections. However, if the predicate ever holds then it is guaranteed to be detected.
Observation and Control for Debugging Distributed Computations
- In Proceedings of the International Workshop on Automated Debugging (AADEBUG
, 1997
"... Ipresent a general framework for observing and controlling a distributedcomputation and its applications to distributed debugging. Algorithms for observation are useful in distributed debugging to stop a distributed program under certain undesirable global conditions. Ipresent the main ideas require ..."
Abstract
-
Cited by 13 (0 self)
- Add to MetaCart
Ipresent a general framework for observing and controlling a distributedcomputation and its applications to distributed debugging. Algorithms for observation are useful in distributed debugging to stop a distributed program under certain undesirable global conditions. Ipresent the main ideas required for developing e cient algorithms for observation. Algorithms for control are useful in debugging to restrict the behavior of the distributed program to suspicious executions. It is also useful when a programmer wants to test a distributed program under certain conditions. I present di erent models and their limitations for controlling distributed computations. 1
Observation of Global Properties in Distributed Systems
- IEEE Concurrency
, 1996
"... Observation of global properties of a distributed program is required in many applications such as debugging of programs and fault-tolerance in distributed systems. I present a survey of algorithms for observing various classes of global properties. These properties include those possibly true in a ..."
Abstract
-
Cited by 9 (4 self)
- Add to MetaCart
(Show Context)
Observation of global properties of a distributed program is required in many applications such as debugging of programs and fault-tolerance in distributed systems. I present a survey of algorithms for observing various classes of global properties. These properties include those possibly true in a computation, definitely true in a computation and those based on the control flow structure of the computation.
Unilateral Version Vector Pruning Using Loosely Synchronized Clocks
, 2002
"... inactive entries in version vectors (VVs). This algorithm lets each node remove inactive VV entries without any coordination with other nodes. It achieves this feature by devising a new way to compare two version vectors based on loosely synchronized clocks and placing a timing restriction on the be ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
inactive entries in version vectors (VVs). This algorithm lets each node remove inactive VV entries without any coordination with other nodes. It achieves this feature by devising a new way to compare two version vectors based on loosely synchronized clocks and placing a timing restriction on the behavior of the application. VVs computed by our algorithm can accurately and completely capture the "happened-before" relation between events just like ordinary VVs. This paper proves the correctness of our algorithm as well.
Efficient Detection of Channel Predicates in Distributed Systems
- JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING
, 1997
"... This paper discusses efficient detection of global predicates in a distributed program. Previous work in this area required predicates to be specified as a conjunction of predicates defined on individual processes. Many properties in distributed systems, however, use the state of channels such as &q ..."
Abstract
-
Cited by 7 (4 self)
- Add to MetaCart
(Show Context)
This paper discusses efficient detection of global predicates in a distributed program. Previous work in this area required predicates to be specified as a conjunction of predicates defined on individual processes. Many properties in distributed systems, however, use the state of channels such as "the channel is empty," or "there is a token in the channel". In this paper, we introduce the concept of a monotonic channel predicate and provide efficient centralized and distributed algorithms to detect any conjunction of local and monotonic channel predicates. We show that many problems studied earlier such as detection of termination and computation of global virtual time are special cases of the problem considered in this paper. The message complexity of our algorithms is bounded by the number of messages used by the program. The main application of our results are in debugging and testing of distributed programs.
Observation of Software for Distributed Systems with RCL
- IN PROC. OF 15TH CONFERENCE ON THE FOUNDATIONS OF SOFTWARE TECHNOLOGY & THEORETICAL COMPUTER SCIENCE
, 1995
"... Program observation involves formulating a query about the behavior of a program and then observing the program as it executes in order to determine the result of the query. Observation is used in software development to track down bugs and clarify understanding of a program's behavior, and in ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
(Show Context)
Program observation involves formulating a query about the behavior of a program and then observing the program as it executes in order to determine the result of the query. Observation is used in software development to track down bugs and clarify understanding of a program's behavior, and in software testing to ensure that a program behaves as expected for a given input set. RCL is a recursive logic built upon conjunctive global predicates. Computational structures of common paradigms such as butterfly synchronization and distributed consensus can be expressed easily in RCL. A nonintrusive decentralized algorithm for detecting RCL predicates is developed and proven correct.