Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

generating test transactions with move script #775

Open
wants to merge 1 commit into
base: 01-17-importing_test_transactions
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions apps/nextra/next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,13 @@ export default withBundleAnalyzer(
"/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-importer",
permanent: true,
},
{
source:
"/indexer/indexer-sdk/documentation/advanced-tutorials/txn-scripts",
destination:
"/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-scripts",
Comment on lines +458 to +461
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The redirect paths (txn-scripts) don't match the actual file name (txn-script). This mismatch will cause the redirect to fail. The paths in the redirect configuration should be updated to use txn-script to match the MDX file name.

Spotted by Graphite Reviewer

Is this helpful? React 👍 or 👎 to let us know.

permanent: true,
},
{
source: "/indexer/txn-stream/labs-hosted",
destination: "/en/build/indexer/api/labs-hosted",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@ export default {
"txn-importer": {
title: "Importing Transactions",
},
"txn-script": {
title: "Generating Transactions with Move Scripts",
},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
title: "Aptos Transaction Import"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The title Aptos Transaction Import is inconsistent with the document's content, which focuses on generating test transactions with Move scripts. Consider updating the title to Generating Test Transactions with Move Scripts to accurately reflect the material covered in this guide.

Spotted by Graphite Reviewer

Is this helpful? React 👍 or 👎 to let us know.

---

## Overview:

This section outlines the steps for creating a testing transaction with a Move script.

### Steps:

1. **Create Your Move Project**

Create your Move project and write a module to output the scenario that you would like to test in your processor. You can refer to an example [here](https://github.com/aptos-labs/aptos-core/tree/main/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/move_fixtures).

2. **Set Up Accounts**

1. These accounts will be used to deploy your module.
2. Set up as many accounts as you need. Refer to the guide [here](https://aptos.dev/en/build/cli/setup-cli).
3. Update `aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/testing_accounts.yaml` with your accounts.

> 💡 **Note:** Do not use real accounts here. Only use test accounts created in the CLI specifically for testing.

3. **Create a Configuration File**

1. Create a [configuration file in the `move_fixtures` directory](https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/move_fixtures/simple_user_script.yaml).
2. This configuration file should include unique transaction names and details for each transaction. Example configuration:
output_name: the name of the transaction json output
script_path: the path to the Move script
sender_address: the address of the account that will send the transaction

```yaml
transactions:
- output_name: simple_user_script1
script_path: simple_user_script
sender_address: <account_address>
- output_name: simple_user_script2
script_path: simple_user_script2
sender_address: <account_address>
```

4. **Generate JSON Files and Rust File**

Once the Move files and configuration are set up, run the same command used to import transactions:
- testing-folder is where your Move files are stored.
- output-foler can be set to any folder where you want to store the generated files.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix typo: output-foler should be output-folder in the command line argument description. This documentation error could cause copy/paste issues for developers following these steps.

Spotted by Graphite Reviewer

Is this helpful? React 👍 or 👎 to let us know.


```bash
cargo run -- --testing-folder ./imported_transactions --output-folder ../indexer-test-transactions/src/
```

This command will:

1. Read the configuration in the `move_fixtures` folder.
2. Execute the specified Move scripts.
3. Output the generated JSON files to the designated folder (`~/aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/json_transactions`).
4. Update `generated_transactions.rs` with the new transaction names specified in step 3.

### How to Use the Testing Transactions

- **Export the Generated File**:

Update the [`mod.rs`](https://github.com/aptos-labs/aptos-indexer-processor-example/blob/main/test-transactions-example/src/json_transactions/mod.rs) file to include the generated Rust file containing the transaction constants.

- **Export the `json_transactions` Folder**:

Ensure the `json_transactions` folder is properly exported in the library file.

[Example](https://github.com/aptos-labs/aptos-indexer-processor-example/blob/main/test-transactions-example/src/lib.rs).

- **Add as a Dependency**:

Include the crate containing the generated transactions as a dependency in the `Cargo.toml` file of your test crate. (Internally, transactions are stored in `aptos-core` and used in the [processor repo](https://github.com/aptos-labs/aptos-indexer-processors/blob/0c92d323b0f560b5f8601a831a36520ad9b72d68/rust/Cargo.toml#L34)).

- **Integrate into Test Cases**:

Use the exported transaction constants directly in your test cases to simulate real transactions and validate processing logic.

[Example usage](https://github.com/aptos-labs/aptos-indexer-processor-example/tree/main/test-transactions-example).
Loading