{"id":21023594,"url":"https://github.com/firedancer-io/solana-conformance","last_synced_at":"2025-05-15T08:32:58.499Z","repository":{"id":232703164,"uuid":"771103197","full_name":"firedancer-io/solana-conformance","owner":"firedancer-io","description":"Conformance test suite for the Solana protocol","archived":false,"fork":false,"pushed_at":"2025-05-14T15:50:25.000Z","size":464,"stargazers_count":12,"open_issues_count":5,"forks_count":3,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-05-14T16:50:26.981Z","etag":null,"topics":["firedancer","solana"],"latest_commit_sha":null,"homepage":"","language":"Python","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/firedancer-io.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-03-12T17:35:04.000Z","updated_at":"2025-05-14T15:50:26.000Z","dependencies_parsed_at":"2024-04-22T15:30:20.385Z","dependency_job_id":"f2ed9235-3f83-4874-acd8-2f197ed3162f","html_url":"https://github.com/firedancer-io/solana-conformance","commit_stats":null,"previous_names":["firedancer-io/solana-conformance"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firedancer-io%2Fsolana-conformance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firedancer-io%2Fsolana-conformance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firedancer-io%2Fsolana-conformance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firedancer-io%2Fsolana-conformance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/firedancer-io","download_url":"https://codeload.github.com/firedancer-io/solana-conformance/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254304657,"owners_count":22048446,"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":["firedancer","solana"],"created_at":"2024-11-19T11:18:45.768Z","updated_at":"2025-05-15T08:32:58.485Z","avatar_url":"https://github.com/firedancer-io.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Solana Test Suite\n\nThis tool allows for validation of targets (e.g. Firedancer) against Solana Agave by running it against a series of predefined tests. It takes either binary or human-readable Protobuf messages as inputs and runs them through the specified targets. It also includes functionality to validate targets for other issues, such as memory corruption.\n\n## Requirements\n\nThis tool works on RHEL8 or Ubuntu.\n\n## Installation\n\nClone this repository and, for RHEL8, run:\n\n```sh\nsource install.sh\n```\n\nFor Ubuntu, run:\n\n```sh\nsource install_ubuntu.sh\n```\n\n### Install auto-completion\n\n```sh\nsolana-test-suite --install-completion\n```\nYou will need to reload your shell + the `test_suite_env` venv to see the changes.\n\n## Currently Supported Harness Types\n`list-harness-types` will provide the most updated list.\n```\n$ solana-test-suite list-harness-types\n\nAvailable harness types:\n- ElfLoaderHarness\n- InstrHarness\n- SyscallHarness\n- VmInterpHarness\n- VmValidateHarness\n- TxnHarness\n- BlockHarness\n- TypeHarness\n```\n\n## Protobuf\n\nEach target must contain a function entrypoint that takes in a Context input message and outputs a Effects message (see [`proto/invoke.proto`](https://github.com/firedancer-io/protosol/blob/main/proto/invoke.proto) as an example).\n\n```\nFunction Entrypoints:\n- ElfLoaderHarness: sol_compat_elf_loader_v1\n- InstrHarness: sol_compat_instr_execute_v1\n- SyscallHarness: sol_compat_vm_syscall_execute_v1\n- VmInterpHarness: sol_compat_vm_interp_v1\n- VmValidateHarness: sol_compat_vm_validate_v1\n- TxnHarness: sol_compat_txn_execute_v1\n- BlockHarness: sol_compat_block_execute_v1\n- TypeHarness: sol_compat_type_execute_v1\n```\n\n### Updating definitions\nAll message definitions are defined in [protosol](https://github.com/firedancer-io/protosol/). Anytime, protofuf definitions are updated in protosol, you will need to run the following command:\n\n```sh\n./fetch_and_generate.sh\n```\n## Setting up Environment\nTo setup the `solana-conformance` environment, run the following command and you will be all set:\n```\nsource test_suite_env/bin/activate\n```\n\n## Usage\nRun the following to view all supported commands or refer to [commands.md](commands.md):\n```\nsolana-test-suite --help\n```\n\n### Preferred Debugging\nUse the following command instead if you want the ability to debug in GDB:\n```\n\u003cgdb / rust-gdb\u003e --args python3.11 -m test_suite.test_suite exec-instr --input \u003cinput_file\u003e --target \u003cshared_lib\u003e\n```\nRefer to [`exec-instr`](commands.md#solana-test-suite-exec-instr) command for more information.\n\nRecommended usage is opening two terminals side by side, and running the above command on the same output while changing the target parameter to the two desired targets and  stepping through the debugger for each corresponding test case.\n\n\n### Uninstalling\n\n```sh\nsource clean.sh\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiredancer-io%2Fsolana-conformance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffiredancer-io%2Fsolana-conformance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiredancer-io%2Fsolana-conformance/lists"}