This Rust scaffold project has been automatically generated by Arachne, a code generator from Ecore metamodels to a composition of replicated data types.
Class Hierarchy is a simplified metamodel of a metalanguage, close to Ecore. It features concepts such as class, attribute, datatype, package, and reference.
Arachne generated the classifier.rs, references.rs, package.rs, and lib.rs files.
classifier.rs: contains the replicated object hierarchy, i.e., the CRDTs reproducing the (concrete and abstract) classes, interfaces, enums, and owned features (attributes and containment references).references.rs: contains the Typed Graph CRDT implementation. Manages the non-containment references between replicated objects.package.rs: the root replicated object that contains both the object hierarchy and the typed graph. This is the object with which end-users interact.
.
├── bench-results/json # Fuzzer execution results
├── src/
│ ├── utils/ # Fuzzer implementation, helper functions...
│ ├── classifiers.rs # Automatically generated
│ ├── lib.rs # Automatically generated
│ ├── package.rs # Automatically generated
│ └── references.rs # Automatically generated
├── tests/
│ ├── fuzzer.rs # Fuzzer test
│ ├── regression.rs # Regression tests used during Arachne development
│ └── scenarios.rs # Test scenarios illustrating how conflicts are solved
├── class_hierarchy.ecore # Ecore metamodel
└── class_hierarchy.jpg # Ecore metamodel diagramRust must be installed on your machine: https://rust-lang.org/tools/install. You must have this project, PureOpLib, and Arachne in the same root folder. You can change the path of these dependencies in Cargo.toml. Replace XXXX-1 by the name of PureOpLib.
Running all the tests:
RUST_LOG=debug cargo testRunning the fuzzer:
RUST_LOG=debug cargo test --release -- --ignored --no-capture fuzz