Git Product home page Git Product logo

apalache-tests's People

Contributors

andrey-kuprianov avatar dependabot[bot] avatar github-actions[bot] avatar kikimo avatar konnov avatar shonfeder avatar thpani avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apalache-tests's Issues

Archive this repo

This repo hasn't seen updates in a while, and we keep running into maintenance burden (dependabot alerts and other breakage).

As discussed on Slack, we should probably archive it, to mark it as unsupported.
I don't have the necessary privileges; @konnov @shonfeder, maybe one of you?

A few issues with the Raft spec

There seems to be a few issues with the Raft spec in this repo.

(1) The quorums in the APAraft.tla should be subsets of the servers but they are not.

Server == {"s1", "s2", "s3", "s4", "s5"}

Quorum == {
{"a1", "a2", "a3"},
{"a1", "a2", "a4"},
{"a1", "a3", "a4"},
{"a2", "a3", "a4"},
{"a1", "a2", "a5"},
{"a1", "a3", "a5"},
{"a2", "a3", "a5"},
{"a1", "a4", "a5"},
{"a2", "a4", "a5"},
{"a3", "a4", "a5"}
}

(2) The invariant OneLeader should be violated at some point. It is possible for multiple servers to believe themselves to be leaders so long as they are in different terms.

OneLeader == \A s, t \in Server: s = t \/ state[s] /= Leader \/ state[t] /= Leader

(3) Apalache (version: 0.22.1) will not check this spec without modification due to the following issue:

Assignment error: APAraft.tla:545:15-545:51: Manual assignment is spurious, votedFor is already assigned!

Automate build and test for the various benchmarked versions

Currently, we have to manually position the source code for every tested version in a hard-coded location and manually add a new make target for each version that should be tested. It would be helpful to set up the build along these lines

  • we configure the version numbers we want to test
  • this is fed to a build and test matrix that will take care of
    • obtaining the executables (ideally from pre-built binaries or docker images, instead of having to rebuild from source -- since the build is already covered in apalache's CI)
    • running all the benchmarks
    • posting the benchmarks to the desired location

Migrate build system to the main apalache repo?

We have discussed moving the build system (but not the specs) to the main apalache repo.

Benefits:

  • Possibility of integrating CI easier
  • All code in one place
  • Would make it slightly easier to build from source
  • Essentially moves us towards a monorepo development practice

Draw backs:

  • Introduces tech debt (if we don't do a re-write first)
  • Could encourage tighter coupling between systems that don't really need to be tightly coupled
  • Takes some labor

Requirements

  • Would need to rework the build system to pull in the the specs from a remote repo.

Add buggy benchmarks

Currently, all the tests are assumed to report NoError. Add configurations, where errors are expected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.