{"id":20132592,"url":"https://github.com/pviotti/conver","last_synced_at":"2025-04-09T16:53:43.998Z","repository":{"id":42576895,"uuid":"59770587","full_name":"pviotti/conver","owner":"pviotti","description":"Consistency verification tool","archived":false,"fork":false,"pushed_at":"2021-09-24T07:44:27.000Z","size":80,"stargazers_count":9,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-23T19:04:31.717Z","etag":null,"topics":["consistency","databases","testing","verification"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pviotti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-26T17:40:51.000Z","updated_at":"2022-02-15T04:42:20.000Z","dependencies_parsed_at":"2022-07-08T08:08:46.363Z","dependency_job_id":null,"html_url":"https://github.com/pviotti/conver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pviotti%2Fconver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pviotti%2Fconver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pviotti%2Fconver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pviotti%2Fconver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pviotti","download_url":"https://codeload.github.com/pviotti/conver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248073727,"owners_count":21043474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["consistency","databases","testing","verification"],"created_at":"2024-11-13T20:54:07.523Z","updated_at":"2025-04-09T16:53:43.970Z","avatar_url":"https://github.com/pviotti.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Conver [![Build Status](https://travis-ci.org/pviotti/conver.svg?branch=master)](https://travis-ci.org/pviotti/conver)\n\nConver is a testing tool that verifies implementations of the most common \nnon-transactional consistency models.  \n\nIt spawns client processes that perform concurrent reads and writes on \nthe distributed store, and records their outcomes.\nAfter the execution, it builds graph entities that describe ordering and \nmutual visibility of operations.\nFinally, it uses these graph entities to check consistency semantics\ndefined as first-order logic predicates.  \n\nBy default, Conver conveniently starts distributed stores as local clusters of Docker containers,\nand can emulate WAN latencies through `netem` (without requiring admin rights).  \n\nThe approach implemented in Conver has been described in [this PaPoC 2016 paper][papoc].  \n\nNOTE: This is a work-in-progress Scala rewrite of the [original](https://github.com/pviotti/conver-old) \nErlang implementation. It features a new linearizability checker, and improved consistency checks.\n\n\n## Getting started\n\nOnce installed JDK, [Scala][scala] (with its building tool [sbt][sbt]) and Docker, \nto build Conver issue:\n\n    $ sbt compile\n\nThe following command spawns a local cluster of 3 Docker containers running ZooKeeper, and\nperforms the consistency verification test using 10 concurrent clients\nthat invoke 10 operations on average. \nMoreover, by setting the `-w` flag, Conver emulates wide area network settings by delaying, \ndropping and corrupting packets.\n\n    $ sbt \"run -d zk -s 3 -c 10 -o 10 -w\"\n\nThe resulting textual and graphical outputs look like the following.\n\n\n![Conver execution](https://i.imgur.com/NSuyhVp.png)\n\nHere are the options currently supported:\n\n      -b, --batch  \u003carg\u003e          Number of batch executions\n      -d, --database  \u003carg\u003e       Database (lin, reg, zk, antidote)\n      -o, --mean-num-ops  \u003carg\u003e   Average number of operations per client\n      -c, --num-clients  \u003carg\u003e    Number of clients\n      -s, --num-servers  \u003carg\u003e    Number of servers\n      -w, --wan                   Emulate wide area network\n          --help                  Show help message\n\n\n## Features and related work\n\nAt the moment Conver supports:\n\n * linearizability checking based on pseudocode from [Lu et al., SOSP '15][exist], and\n   checking of consistency semantics describing causality and monotonicity of operations\n   within and across sessions (e.g., monotonic writes, monotonic reads, sequential consistency, regular \n   semantics, causal consistency --- [this survey][survey] provides an overview of all these consistency \n   semantics)  \n * WAN latencies emulation\n\n\nSimilar projects: [Jepsen][jepsen], [Hermitage][hermitage], [WatCA][watca].  \nLinearizability checkers: [Horn's][horn], [Lowe's][lowe], [Line-up][lineup].  \n\n\n## Authors and license\n\nConver has been developed at [EURECOM][eurecom].  \nLicense: Apache 2.0.\n\n\n [survey]: http://arxiv.org/abs/1512.00168\n [papoc]: http://www.eurecom.fr/fr/publication/4874/download/ds-publi-4874.pdf\n [jepsen]: http://jepsen.io\n [hermitage]: https://github.com/ept/hermitage\n [eurecom]: http://www.eurecom.fr\n [horn]: https://github.com/ahorn/linearizability-checker\n [lowe]: http://www.cs.ox.ac.uk/people/gavin.lowe/LinearizabiltyTesting/\n [scala]: https://www.scala-lang.org/\n [sbt]: http://www.scala-sbt.org/\n [exist]: http://sigops.org/sosp/sosp15/current/2015-Monterey/printable/240-lu.pdf\n [watca]: https://github.com/wgolab/WatCA\n [lineup]: http://dl.acm.org/citation.cfm?id=1806634\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpviotti%2Fconver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpviotti%2Fconver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpviotti%2Fconver/lists"}