We used the TrainTicket repository found here: https://github.com/cloudhubs/train-ticket-aitest/tree/master. The master, first-inconsistency-injection, and second-inconsistency-injection branches contain the different scenarios tested.
We used a modified version of cimet-extract-lib (included in this package) to generate intermediate representations of the microservice system. The original version can be found here: https://github.com/cloudhubs/cimet.
We used the microservice indexer found here: https://github.com/arfan-rfn/microservice-index/tree/master to create indices of the microservice system.
- Python and pip are required (confirmed working with Python 3.12.6).
/cimet-extract-libcontains the code used to generate the intermediate representations./data/aiat_auth_fault_injectioncontains all of the intermediate models used to complete the case study./data/aiat_auth_fault_injection/modelscontains the generated system models that were used to generate constraints evaluated by the SMT solver./data/aiat_auth_fault_injection/ms_indicescontains indices of the microservice system./data/aiat_auth_fault_injection/ms_irscontains the IRs of the microservice system./data/aiat_auth_fault_injection/suggestionscontains the detected faults when evaluated by the solver./data/aiat_auth_fault_injection/AIAT Formal Methods Fault Injection Analysis.docxcontains an analysis of all the results./srccontains the code used to generate intermediate models, generate constraints, and solve./utilcontains various utility scripts./validationcontains the code used to trun the case study.
- Run
pip install -r requirements.txtto obtain the necessary requirements. - Run
python -m validation.auth.aiat_fault_injectionto run the fault injection study, which takes the provided IRs and indices (you can generate these yourself using the cimet-extract-lib and microservice indexer provided), creates SMT-friendly system models, runs the SMT solver on each model, and outputs the results to the/data/aiat_auth_fault_injection/directories.