6 research outputs found

    MonkeyDB: effectively testing correctness under weak isolation levels

    Get PDF
    Modern applications, such as social networking systems and e-commerce platforms are centered around using large-scale storage systems for storing and retrieving data. In the presence of concurrent accesses, these storage systems trade off isolation for performance. The weaker the isolation level, the more behaviors a storage system is allowed to exhibit and it is up to the developer to ensure that their application can tolerate those behaviors. However, these weak behaviors only occur rarely in practice and outside the control of the application, making it difficult for developers to test the robustness of their code against weak isolation levels. This paper presents MonkeyDB, a mock storage system for testing storage-backed applications. MonkeyDB supports a key-value interface as well as SQL queries under multiple isolation levels. It uses a logical specification of the isolation level to compute, on a read operation, the set of all possible return values. MonkeyDB then returns a value randomly from this set. We show that MonkeyDB provides good coverage of weak behaviors, which is complete in the limit. We test a variety of applications for assertions that fail only under weak isolation. MonkeyDB is able to break each of those assertions in a small number of attempts. © 2021 Owner/Author

    IN-VITRO CYTOTOXICITY ANALYSIS OF TAMOXIFEN CITRATE LOADED CROSS-LINKED GUAR GUM NANOPARTICLES ON JURKAT (HUMAN T-CELL LEUKEMIA) CELL LINE

    Get PDF
    The present investigation was aimed to study the antiproliferative action of tamoxifen citrate (TMX), a non steroidal antiestrogen, on a human T-cell leukemia cell line, Jurkat, as free drug and TMX loaded guar gum nanoparticles. For this we developed a new formulation containing chemically cross-linked guar gum nanoparticles (GG NPs) loaded with tamoxifen citrate (TMX). Single step (oil in water) emulsion and in-situ polymer cross-linking technique was employed to prepare spherical and smooth surfaced nanoparticles in the size range of 200-300nm. Nanoparticle size and shape was confirmed from observation in transmission electron microscope (TEM) analysis. Cytotoxicity on Jurkat (human T-cell leukemia) cell lines as determined by cell growth inhibition after 48 hrs of incubation indicated that tamoxifen citrate loaded guar gum nanoparticles were as efficient as the free drug when applied to the cancer line. However, the crosslinked guar gum nanoparticles loaded with tamoxifen citrate exhibited sustained release of the drug and delayed apoptosis over a long period of time making it suitable for cancer treatment. Keywords: Nanoparticles, guar gum, tamoxifen citrate, Jurkat (human T-cell leukemia) cell line, cytotoxicity, cell death, WST-1 assay

    Méthodes automatisées de test formel des systèmes de stockage et des applications

    No full text
    À mesure que l'internet devient moins cher et plus rapide, les systèmes et les applications logicielles distribués deviennent de plus en plus omniprésents. Aujourd'hui, ils sont à la base d'un très grand nombre de services en ligne tels que les banques, le commerce électronique, les réseaux sociaux, etc. Au fur et à mesure que la popularité de ces logiciels augmente, il est très important qu'ils garantissent des niveaux élevés de fiabilité et de sécurité.Les logiciels distribués modernes sont centrés sur l'utilisation de systèmes de stockage à grande échelle pour stocker et manipuler des données. Pour assurer la persistance et la disponibilité des données en présence de pannes, ces systèmes maintiennent les donnéesen plusieurs copies stockées sur différents nœuds du réseau. Pour des raisons de performances, ces copies peuvent diverger (temporairement), une instance de la soi-disant cohérence faible, ce qui rend la sémantique des accès concurrents aux données très complexe.Au cours des dernières années, de nombreuses solutions pour implémenter des systèmes de stockage à cohérence faible ont été proposées. Ces implémentations sont le plus souvent très complexes et sujettes aux erreurs. Les niveaux spécifiques de cohérence faible qu'ils assurent ne sont le plus souvent décrits que de manière informelle, ce qui rend difficile le raisonnement sur leurs corrections. De plus, dans de nombreux cas, il existe des écarts importants entre les garanties mentionnées dans leur documentation et les garanties qu'elles fournissent réellement. L'objectif de cette thèse est de proposer des techniques algorithmiques pour le teste automatisé de systèmes distribués à cohérence faible par rapport à des spécifications formelles. Nous étudions une classe importante de types de données distribués, appelés types de données répliqués sans conflit (CRDT), qui inclut de nombreuses variantes comme des registres, des ensembles, des tableaux, etc., et des systèmes (bases de données) transactionnels, qui permettent des calculs sur des données isolés des autres calculs concurrents et tolérants aux pannes. Nous introduisons des spécifications formelles pour de tels systèmes et nous étudions la complexité asymptotique de la vérification de la correction d'une exécution donnée par rapport à ces spécifications. Nous étudions également le problème du teste des applications qui s'exécutent sur des systèmes transactionnels à cohérence faible, en introduisant un système de stockage en mémoire qui simule les comportements de ces systèmes par rapport à leurs spécifications formelles.As internet grows to be cheaper and faster, distributed software systems and applications are becoming more and more ubiquitous. Today they are the backbone of a large number of online services like banking, e-commerce, social networking, etc. As the popularity of these softwares increases, it is very important that they ensure strong levels of reliability and security.Modern distributed software is centered around using large-scale storage systems for storing and retrieving data. To ensure persistence and availability of data in the presence of failures, these systems maintain data in multiple copies that are stored on different nodes in the network. Then, for performance reasons, these copies are allowed to (temporarily) diverge, an instance of the so-called weak-consistency, which makes the semantics of concurrent accesses to data quite complex.Over the recent years, many solutions for implementing weakly-consistent storage systems have been proposed. These implementations are most often very complex and error-prone. The specific levels of weak consistency they ensure are most often described only informally, which makes it difficult to reason about them. Moreover, in many cases, there are significant discrepancies between the guarantees claimed in their documentation and the guarantees that they really provide.The objective of this dissertation is to propose algorithmic techniques for automated testing of weakly-consistent distributed systems against formal specifications. We focus on an important class of distributed data types, called Conflict-Free Replicated Data Types (CRDTs for short), that include many variations like registers, flags, sets, arrays, etc., and on Transactional Systems (Databases), which enable computations on shared data that are isolated from other concurrent computations and resilient to failures. We introduce formal specifications for such systems and investigate the asymptotic complexity of checking whether a given execution conforms to such specifications. We also study the problem of testing applications that run on top of weakly-consistent transactional systems, introducing an mock in-memory storage system that simulates the behaviors of such systems according to their formal specification

    Méthodes automatisées de test formel des systèmes de stockage et des applications

    No full text
    As internet grows to be cheaper and faster, distributed software systems and applications are becoming more and more ubiquitous. Today they are the backbone of a large number of online services like banking, e-commerce, social networking, etc. As the popularity of these softwares increases, it is very important that they ensure strong levels of reliability and security.Modern distributed software is centered around using large-scale storage systems for storing and retrieving data. To ensure persistence and availability of data in the presence of failures, these systems maintain data in multiple copies that are stored on different nodes in the network. Then, for performance reasons, these copies are allowed to (temporarily) diverge, an instance of the so-called weak-consistency, which makes the semantics of concurrent accesses to data quite complex.Over the recent years, many solutions for implementing weakly-consistent storage systems have been proposed. These implementations are most often very complex and error-prone. The specific levels of weak consistency they ensure are most often described only informally, which makes it difficult to reason about them. Moreover, in many cases, there are significant discrepancies between the guarantees claimed in their documentation and the guarantees that they really provide.The objective of this dissertation is to propose algorithmic techniques for automated testing of weakly-consistent distributed systems against formal specifications. We focus on an important class of distributed data types, called Conflict-Free Replicated Data Types (CRDTs for short), that include many variations like registers, flags, sets, arrays, etc., and on Transactional Systems (Databases), which enable computations on shared data that are isolated from other concurrent computations and resilient to failures. We introduce formal specifications for such systems and investigate the asymptotic complexity of checking whether a given execution conforms to such specifications. We also study the problem of testing applications that run on top of weakly-consistent transactional systems, introducing an mock in-memory storage system that simulates the behaviors of such systems according to their formal specificationsÀ mesure que l'internet devient moins cher et plus rapide, les systèmes et les applications logicielles distribués deviennent de plus en plus omniprésents. Aujourd'hui, ils sont à la base d'un très grand nombre de services en ligne tels que les banques, le commerce électronique, les réseaux sociaux, etc. Au fur et à mesure que la popularité de ces logiciels augmente, il est très important qu'ils garantissent des niveaux élevés de fiabilité et de sécurité.Les logiciels distribués modernes sont centrés sur l'utilisation de systèmes de stockage à grande échelle pour stocker et manipuler des données. Pour assurer la persistance et la disponibilité des données en présence de pannes, ces systèmes maintiennent les donnéesen plusieurs copies stockées sur différents nœuds du réseau. Pour des raisons de performances, ces copies peuvent diverger (temporairement), une instance de la soi-disant cohérence faible, ce qui rend la sémantique des accès concurrents aux données très complexe.Au cours des dernières années, de nombreuses solutions pour implémenter des systèmes de stockage à cohérence faible ont été proposées. Ces implémentations sont le plus souvent très complexes et sujettes aux erreurs. Les niveaux spécifiques de cohérence faible qu'ils assurent ne sont le plus souvent décrits que de manière informelle, ce qui rend difficile le raisonnement sur leurs corrections. De plus, dans de nombreux cas, il existe des écarts importants entre les garanties mentionnées dans leur documentation et les garanties qu'elles fournissent réellement. L'objectif de cette thèse est de proposer des techniques algorithmiques pour le teste automatisé de systèmes distribués à cohérence faible par rapport à des spécifications formelles. Nous étudions une classe importante de types de données distribués, appelés types de données répliqués sans conflit (CRDT), qui inclut de nombreuses variantes comme des registres, des ensembles, des tableaux, etc., et des systèmes (bases de données) transactionnels, qui permettent des calculs sur des données isolés des autres calculs concurrents et tolérants aux pannes. Nous introduisons des spécifications formelles pour de tels systèmes et nous étudions la complexité asymptotique de la vérification de la correction d'une exécution donnée par rapport à ces spécifications. Nous étudions également le problème du teste des applications qui s'exécutent sur des systèmes transactionnels à cohérence faible, en introduisant un système de stockage en mémoire qui simule les comportements de ces systèmes par rapport à leurs spécifications formelles

    On the complexity of checking transactional consistency

    No full text

    Tracking down the brominated single electron oxidants in recent organic red-ox transformations: photolysis and photocatalysis

    No full text
    corecore