1.0.16 • Published 4 years ago

violat v1.0.16

Weekly downloads
4
License
MIT
Repository
github
Last release
4 years ago

Build Status npm version

Violat

Find test harnesses that expose atomicity violations.

This project demonstrates that many of the methods in Java’s library of concurrent collections are non-linearizable. For each non-linearizable method in the selected collection classes, a small test harness witnesses violations via stress testing with OpenJDK’s jcstress tool.

Requirements

This project depends essentially on recent Java and JavaScript environments, and in particular on:

Installation

Install the latest version from npm:

$ npm i -g violat

Or from a working copy of the Github repository:

$ cd /path/to/my/working/copy/of/violat && npm link

Usage

See usage instructions with:

$ violat-validator

Development

Link a local copy of the Github repository:

$ cd /path/to/my/working/copy/of/violat && npm link

Release a new version to npm:

$ npm version [major|minor|patch]
$ npm publish

Experiments

To reproduce the experiments reported in the CAV 2018 paper Monitoring Weak Consistency:

$ cd /path/to/my/working/copy/of/violat
$ git checkout cav-2018-submission
$ npm link
$ npm run monitoring-experiments

NOTE these experiments may require an older version of Node.js, e.g., version 8.12.0.

To reproduce the experiments reported in the POPL 2019 paper Weak-Consistency Specification via Visibility Relaxation:

$ cd /path/to/my/working/copy/of/violat
$ git checkout atomicity-submission-data
$ npm link
$ npm run experiments

NOTE these experiments may require an older version of Node.js, e.g., version 8.12.0.

Various Use Cases

Validate (weak) consistency of a given implementation

Validate a given implementation for consistency, according to the given consistency specification, against randomly-generated test programs:

$ violat-validator resources/specs/java/util/concurrent/ConcurrentHashMap.json

Generate histories admitted by a given implementation

Add to the set of histories generated in violat-output/histories with the violat-histories command:

$ violat-histories resources/specs/java/util/concurrent/ConcurrentHashMap.json

Check generated histories for (weak) consistency

Check the histories stored in violat-output/histories with the violat-history-checker command:

TODO FIXME

Visualize generated histories and data

Install and start a web server to visualize histories and history-checking results:

$ npm i -g http-server
$ http-server violat-output

Then point the web browser to one of the URLS output by the history checker:

http://localhost:8080/histories/**/*.html

Or point the web browser to the plot of data generated by the history checker:

http://localhost:8080/results/plot.html
1.0.16

4 years ago

1.0.15

4 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.5.20

6 years ago

0.5.19

6 years ago

0.5.18

6 years ago

0.5.17

6 years ago

0.5.16

6 years ago

0.5.15

6 years ago

0.5.14

6 years ago

0.5.13

6 years ago

0.5.12

6 years ago

0.5.11

6 years ago

0.5.10

6 years ago

0.5.9

6 years ago

0.5.8

6 years ago

0.5.5

6 years ago

0.5.4

6 years ago

0.5.3

7 years ago

0.5.2

7 years ago

0.5.1

7 years ago

0.5.0

7 years ago

0.4.14

7 years ago

0.4.13

7 years ago

0.4.11

7 years ago

0.4.10

7 years ago

0.4.9

7 years ago

0.4.8

7 years ago

0.4.7

7 years ago

0.4.6

7 years ago

0.4.5

7 years ago

0.4.4

7 years ago

0.4.3

7 years ago

0.4.2

7 years ago

0.4.1

7 years ago

0.4.0

7 years ago

0.3.8

7 years ago

0.3.5

7 years ago

0.3.4

7 years ago

0.3.3

7 years ago

0.3.2

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.30

7 years ago

0.1.29

7 years ago

0.1.28

7 years ago

0.1.26

7 years ago

0.1.25

7 years ago

0.1.24

7 years ago

0.1.23

7 years ago