@hyperlane-xyz/sealevel-sdk 27.1.0 → 28.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clients/protocol.d.ts +4 -0
- package/dist/clients/protocol.d.ts.map +1 -1
- package/dist/clients/protocol.js +8 -0
- package/dist/clients/protocol.js.map +1 -1
- package/dist/testing/constants.d.ts +20 -0
- package/dist/testing/constants.d.ts.map +1 -0
- package/dist/testing/constants.js +16 -0
- package/dist/testing/constants.js.map +1 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/setup.d.ts +11 -2
- package/dist/testing/setup.d.ts.map +1 -1
- package/dist/testing/setup.js +35 -23
- package/dist/testing/setup.js.map +1 -1
- package/dist/testing/solana-container.d.ts +11 -9
- package/dist/testing/solana-container.d.ts.map +1 -1
- package/dist/testing/solana-container.js +68 -40
- package/dist/testing/solana-container.js.map +1 -1
- package/dist/tests/collateral-token.e2e-test.js +6 -20
- package/dist/tests/collateral-token.e2e-test.js.map +1 -1
- package/dist/tests/e2e-test.setup.d.ts +2 -0
- package/dist/tests/e2e-test.setup.d.ts.map +1 -0
- package/dist/tests/e2e-test.setup.js +44 -0
- package/dist/tests/e2e-test.setup.js.map +1 -0
- package/dist/tests/hook.e2e-test.js +5 -18
- package/dist/tests/hook.e2e-test.js.map +1 -1
- package/dist/tests/ism.e2e-test.js +5 -21
- package/dist/tests/ism.e2e-test.js.map +1 -1
- package/dist/tests/native-token.e2e-test.js +6 -20
- package/dist/tests/native-token.e2e-test.js.map +1 -1
- package/dist/tests/provider.e2e-test.js +3 -11
- package/dist/tests/provider.e2e-test.js.map +1 -1
- package/dist/tests/synthetic-token.e2e-test.js +6 -20
- package/dist/tests/synthetic-token.e2e-test.js.map +1 -1
- package/package.json +10 -15
- package/dist/tests/deploy.e2e-test.d.ts +0 -2
- package/dist/tests/deploy.e2e-test.d.ts.map +0 -1
- package/dist/tests/deploy.e2e-test.js +0 -76
- package/dist/tests/deploy.e2e-test.js.map +0 -1
|
@@ -4,6 +4,8 @@ import type { IRawHookArtifactManager } from '@hyperlane-xyz/provider-sdk/hook';
|
|
|
4
4
|
import type { IRawIsmArtifactManager } from '@hyperlane-xyz/provider-sdk/ism';
|
|
5
5
|
import type { AnnotatedTx, TxReceipt } from '@hyperlane-xyz/provider-sdk/module';
|
|
6
6
|
import type { IRawWarpArtifactManager } from '@hyperlane-xyz/provider-sdk/warp';
|
|
7
|
+
import { type IRawMailboxArtifactManager } from '@hyperlane-xyz/provider-sdk/mailbox';
|
|
8
|
+
import { type IRawValidatorAnnounceArtifactManager } from '@hyperlane-xyz/provider-sdk/validator-announce';
|
|
7
9
|
export declare class SvmProtocolProvider implements ProtocolProvider {
|
|
8
10
|
createProvider(chainMetadata: ChainMetadataForAltVM): Promise<IProvider>;
|
|
9
11
|
createSigner(chainMetadata: ChainMetadataForAltVM, config: SignerConfig): Promise<AltVM.ISigner<AnnotatedTx, TxReceipt>>;
|
|
@@ -15,6 +17,8 @@ export declare class SvmProtocolProvider implements ProtocolProvider {
|
|
|
15
17
|
createWarpArtifactManager(chainMetadata: ChainMetadataForAltVM, _context?: {
|
|
16
18
|
mailbox?: string;
|
|
17
19
|
}): IRawWarpArtifactManager;
|
|
20
|
+
createMailboxArtifactManager(_chainMetadata: ChainMetadataForAltVM): IRawMailboxArtifactManager;
|
|
21
|
+
createValidatorAnnounceArtifactManager(_chainMetadata: ChainMetadataForAltVM): IRawValidatorAnnounceArtifactManager | null;
|
|
18
22
|
getMinGas(): MinimumRequiredGasByAction;
|
|
19
23
|
private getRpcUrls;
|
|
20
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/clients/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/clients/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAIhF,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,EAAE,KAAK,oCAAoC,EAAE,MAAM,gDAAgD,CAAC;AAQ3G,qBAAa,mBAAoB,YAAW,gBAAgB;IAC1D,cAAc,CAAC,aAAa,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC;IAKlE,YAAY,CAChB,aAAa,EAAE,qBAAqB,EACpC,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAKjD,eAAe,CAAC,OAAO,SAAS,0BAA0B,EACxD,cAAc,EAAE,qBAAqB,EACrC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,qBAAqB,CAAC;IAIjC,wBAAwB,CACtB,aAAa,EAAE,qBAAqB,GACnC,sBAAsB;IAKzB,yBAAyB,CACvB,aAAa,EAAE,qBAAqB,EACpC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7B,uBAAuB;IAQ1B,yBAAyB,CACvB,aAAa,EAAE,qBAAqB,EACpC,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,uBAAuB;IAK1B,4BAA4B,CAC1B,cAAc,EAAE,qBAAqB,GACpC,0BAA0B;IAK7B,sCAAsC,CACpC,cAAc,EAAE,qBAAqB,GACpC,oCAAoC,GAAG,IAAI;IAK9C,SAAS,IAAI,0BAA0B;IAWvC,OAAO,CAAC,UAAU;CAOnB"}
|
package/dist/clients/protocol.js
CHANGED
|
@@ -33,6 +33,14 @@ export class SvmProtocolProvider {
|
|
|
33
33
|
const rpc = createRpc(this.getRpcUrls(chainMetadata)[0]);
|
|
34
34
|
return new SvmWarpArtifactManager(rpc);
|
|
35
35
|
}
|
|
36
|
+
createMailboxArtifactManager(_chainMetadata) {
|
|
37
|
+
// @TODO Implement in a follow up PR
|
|
38
|
+
throw Error('Not implemented');
|
|
39
|
+
}
|
|
40
|
+
createValidatorAnnounceArtifactManager(_chainMetadata) {
|
|
41
|
+
// @TODO Implement in a follow up PR
|
|
42
|
+
throw Error('Not implemented');
|
|
43
|
+
}
|
|
36
44
|
getMinGas() {
|
|
37
45
|
return {
|
|
38
46
|
CORE_DEPLOY_GAS: 0n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/clients/protocol.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/clients/protocol.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAItD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,OAAO,mBAAmB;IAC9B,cAAc,CAAC,aAAoC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/C,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,aAAoC,EACpC,MAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC;IAED,eAAe,CACb,cAAqC,EACrC,OAAgB;QAEhB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,wBAAwB,CACtB,aAAoC;QAEpC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,yBAAyB,CACvB,aAAoC,EACpC,OAA8B;QAE9B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO;YAC9B,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,IAAI,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,yBAAyB,CACvB,aAAoC,EACpC,QAA+B;QAE/B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,4BAA4B,CAC1B,cAAqC;QAErC,oCAAoC;QACpC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC;IAED,sCAAsC,CACpC,cAAqC;QAErC,oCAAoC;QACpC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC;IAED,SAAS;QACP,OAAO;YACL,eAAe,EAAE,EAAE;YACnB,4EAA4E;YAC5E,eAAe,EAAE,WAAc;YAC/B,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,EAAE;YACX,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,aAAoC;QACrD,MAAM,CACJ,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EACzD,kCAAkC,CACnC,CAAC;QACF,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ProtocolType } from '@hyperlane-xyz/provider-sdk';
|
|
2
|
+
export declare const AGAVE_VERSION = "v3.0.14";
|
|
3
|
+
export declare const TEST_SVM_CHAIN_METADATA: {
|
|
4
|
+
readonly name: "svmtest";
|
|
5
|
+
readonly protocol: ProtocolType.Sealevel;
|
|
6
|
+
readonly domainId: 1399811149;
|
|
7
|
+
readonly chainId: "1399811149";
|
|
8
|
+
readonly nativeToken: {
|
|
9
|
+
readonly decimals: 9;
|
|
10
|
+
readonly name: "SOL";
|
|
11
|
+
readonly symbol: "SOL";
|
|
12
|
+
};
|
|
13
|
+
readonly rpcUrls: [{
|
|
14
|
+
readonly http: "http://127.0.0.1:8899";
|
|
15
|
+
}];
|
|
16
|
+
readonly rpcPort: 8899;
|
|
17
|
+
readonly rpcUrl: "http://127.0.0.1:8899";
|
|
18
|
+
readonly restPort: 8899;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/testing/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3D,eAAO,MAAM,aAAa,YAAY,CAAC;AAEvC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;CAUE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ProtocolType } from '@hyperlane-xyz/provider-sdk';
|
|
2
|
+
// Single source of truth for the Agave/Solana version used in tests.
|
|
3
|
+
// When bumping, also update the Dockerfile ARG + SHA256 and rebuild the image.
|
|
4
|
+
export const AGAVE_VERSION = 'v3.0.14';
|
|
5
|
+
export const TEST_SVM_CHAIN_METADATA = {
|
|
6
|
+
name: 'svmtest',
|
|
7
|
+
protocol: ProtocolType.Sealevel,
|
|
8
|
+
domainId: 1399811149,
|
|
9
|
+
chainId: '1399811149',
|
|
10
|
+
nativeToken: { decimals: 9, name: 'SOL', symbol: 'SOL' },
|
|
11
|
+
rpcUrls: [{ http: 'http://127.0.0.1:8899' }],
|
|
12
|
+
rpcPort: 8899,
|
|
13
|
+
rpcUrl: 'http://127.0.0.1:8899',
|
|
14
|
+
restPort: 8899,
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/testing/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,qEAAqE;AACrE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AAEvC,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,YAAY,CAAC,QAAQ;IAC/B,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;IACxD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;IAC5C,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,uBAAuB;IAC/B,QAAQ,EAAE,IAAI;CACsB,CAAC"}
|
package/dist/testing/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC"}
|
package/dist/testing/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC"}
|
package/dist/testing/setup.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import type { Address, Rpc, SolanaRpcApi } from '@solana/kit';
|
|
|
2
2
|
import type { SvmSigner } from '../clients/signer.js';
|
|
3
3
|
import type { SvmRpc } from '../types.js';
|
|
4
4
|
import type { PreloadedProgram } from './solana-container.js';
|
|
5
|
-
export declare const DEFAULT_PROGRAMS_PATH: string;
|
|
6
5
|
export declare const TEST_PROGRAM_IDS: {
|
|
7
6
|
readonly mailbox: Address;
|
|
8
7
|
readonly igp: Address;
|
|
@@ -22,7 +21,17 @@ export declare const PROGRAM_BINARIES: {
|
|
|
22
21
|
readonly tokenCollateral: "hyperlane_sealevel_token_collateral.so";
|
|
23
22
|
};
|
|
24
23
|
export type PreloadableProgram = keyof typeof PROGRAM_BINARIES & keyof typeof TEST_PROGRAM_IDS;
|
|
25
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Writes embedded program bytes to temp .so files for the test validator.
|
|
26
|
+
* The solana-test-validator CLI requires file paths for --bpf-program,
|
|
27
|
+
* so we materialize the embedded Uint8Array bytes to disk.
|
|
28
|
+
*
|
|
29
|
+
* Returns the programs array and a cleanup function to remove the temp dir.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getPreloadedPrograms(programs: Array<PreloadableProgram>): {
|
|
32
|
+
programs: PreloadedProgram[];
|
|
33
|
+
cleanup: () => void;
|
|
34
|
+
};
|
|
26
35
|
export declare function airdropSol(rpc: Rpc<SolanaRpcApi>, address: Address, amount?: bigint): Promise<void>;
|
|
27
36
|
export declare function getBalance(rpc: Rpc<SolanaRpcApi>, address: Address): Promise<number>;
|
|
28
37
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/testing/setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/testing/setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAc9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,eAAO,MAAM,gBAAgB;sBACgC,OAAO;kBACX,OAAO;0BACC,OAAO;sBACX,OAAO;gCACG,OAAO;CACpE,CAAC;AAEX,eAAO,MAAM,6BAA6B,aAAe,CAAC;AAE1D,eAAO,MAAM,gBAAgB;;;;;;;;;CASnB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,gBAAgB,GAC5D,MAAM,OAAO,gBAAgB,CAAC;AAahC;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG;IACzE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CA0CA;AAED,wBAAsB,UAAU,CAC9B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,MAAwB,GAC/B,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED,wBAAsB,UAAU,CAC9B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAoClB"}
|
package/dist/testing/setup.js
CHANGED
|
@@ -3,21 +3,13 @@ import { lamports as brandLamports, generateKeyPairSigner, getAddressEncoder, }
|
|
|
3
3
|
// eslint-disable-next-line import/no-nodejs-modules
|
|
4
4
|
import * as fs from 'fs';
|
|
5
5
|
// eslint-disable-next-line import/no-nodejs-modules
|
|
6
|
+
import * as os from 'os';
|
|
7
|
+
// eslint-disable-next-line import/no-nodejs-modules
|
|
6
8
|
import * as path from 'path';
|
|
7
9
|
import { assert, retryAsync } from '@hyperlane-xyz/utils';
|
|
8
10
|
import { SPL_TOKEN_PROGRAM_ADDRESS, TOKEN_2022_PROGRAM_ADDRESS, } from '../constants.js';
|
|
11
|
+
import { HYPERLANE_SVM_PROGRAM_BYTES } from '../hyperlane/program-bytes.js';
|
|
9
12
|
import { buildInstruction, writableAccount } from '../instructions/utils.js';
|
|
10
|
-
function findMonorepoRoot() {
|
|
11
|
-
let dir = process.cwd();
|
|
12
|
-
while (dir !== '/') {
|
|
13
|
-
if (fs.existsSync(path.join(dir, 'pnpm-workspace.yaml'))) {
|
|
14
|
-
return dir;
|
|
15
|
-
}
|
|
16
|
-
dir = path.dirname(dir);
|
|
17
|
-
}
|
|
18
|
-
return process.cwd();
|
|
19
|
-
}
|
|
20
|
-
export const DEFAULT_PROGRAMS_PATH = path.join(findMonorepoRoot(), 'rust/sealevel/target/deploy');
|
|
21
13
|
export const TEST_PROGRAM_IDS = {
|
|
22
14
|
mailbox: '2Zvzyv2sstAhs9wu1xaLpH5X17dVouEb8zjkBRPKsSy5',
|
|
23
15
|
igp: 'GZGLpeuMaUXUmBHh1EtgWQDufyUoHapAKFfgKb6u8o3h',
|
|
@@ -42,23 +34,43 @@ export const PROGRAM_BINARIES = {
|
|
|
42
34
|
// See https://github.com/anza-xyz/agave/issues/9799
|
|
43
35
|
// Binary source: https://github.com/solana-program/token-2022/releases/tag/program%40v10.0.0
|
|
44
36
|
const TOKEN_2022_V10_SO_PATH = path.join(path.dirname(new URL(import.meta.url).pathname), 'fixtures', 'spl_token_2022_v10.so');
|
|
45
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Writes embedded program bytes to temp .so files for the test validator.
|
|
39
|
+
* The solana-test-validator CLI requires file paths for --bpf-program,
|
|
40
|
+
* so we materialize the embedded Uint8Array bytes to disk.
|
|
41
|
+
*
|
|
42
|
+
* Returns the programs array and a cleanup function to remove the temp dir.
|
|
43
|
+
*/
|
|
44
|
+
export function getPreloadedPrograms(programs) {
|
|
45
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'svm-programs-'));
|
|
46
46
|
const preloaded = programs.map((program) => {
|
|
47
47
|
const programId = TEST_PROGRAM_IDS[program];
|
|
48
48
|
assert(programId, `Program '${program}' not found in TEST_PROGRAM_IDS`);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
const bytes = HYPERLANE_SVM_PROGRAM_BYTES[program];
|
|
50
|
+
assert(bytes, `Program '${program}' not found in HYPERLANE_SVM_PROGRAM_BYTES`);
|
|
51
|
+
const soPath = path.join(tmpDir, PROGRAM_BINARIES[program]);
|
|
52
|
+
fs.writeFileSync(soPath, bytes);
|
|
53
|
+
return { programId, soPath };
|
|
53
54
|
});
|
|
54
55
|
// Override the built-in Token-2022 with v10.0.0 to fix realloc on v3.0+.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
// Copy to tmpDir so all .so files are in one directory for Docker bind-mount.
|
|
57
|
+
assert(fs.existsSync(TOKEN_2022_V10_SO_PATH), `Token-2022 v10 fixture not found at ${TOKEN_2022_V10_SO_PATH}. ` +
|
|
58
|
+
'Without it, Agave v3.0+ will fail with InvalidRealloc errors.');
|
|
59
|
+
const destPath = path.join(tmpDir, 'spl_token_2022_v10.so');
|
|
60
|
+
fs.copyFileSync(TOKEN_2022_V10_SO_PATH, destPath);
|
|
61
|
+
preloaded.push({
|
|
62
|
+
programId: TOKEN_2022_PROGRAM_ADDRESS,
|
|
63
|
+
soPath: destPath,
|
|
64
|
+
});
|
|
65
|
+
const cleanup = () => {
|
|
66
|
+
try {
|
|
67
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Best-effort cleanup
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
return { programs: preloaded, cleanup };
|
|
62
74
|
}
|
|
63
75
|
export async function airdropSol(rpc, address, amount = 10000000000n) {
|
|
64
76
|
const signature = await retryAsync(() => rpc.requestAirdrop(address, brandLamports(amount)).send());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/testing/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,EACL,QAAQ,IAAI,aAAa,EACzB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,oDAAoD;AACpD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,oDAAoD;AACpD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/testing/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ChildProcess } from 'child_process';
|
|
2
|
+
import { type TestChainMetadata } from '@hyperlane-xyz/provider-sdk/chain';
|
|
2
3
|
import { type StartedTestContainer } from 'testcontainers';
|
|
3
|
-
export declare const SOLANA_VALIDATOR_IMAGE = "
|
|
4
|
-
export declare const SOLANA_RPC_PORT = 8899;
|
|
4
|
+
export declare const SOLANA_VALIDATOR_IMAGE = "ghcr.io/hyperlane-xyz/hyperlane-solana-validator:v3.0.14";
|
|
5
5
|
export declare function isAppleSilicon(): boolean;
|
|
6
6
|
export declare function findSolanaTestValidator(): string | null;
|
|
7
7
|
export interface PreloadedProgram {
|
|
@@ -12,11 +12,9 @@ export interface SolanaValidatorConfig {
|
|
|
12
12
|
image?: string;
|
|
13
13
|
keepRunning?: boolean;
|
|
14
14
|
validatorArgs?: string[];
|
|
15
|
-
forceDocker?: boolean;
|
|
16
15
|
binaryPath?: string;
|
|
17
|
-
rpcPort
|
|
16
|
+
rpcPort: number;
|
|
18
17
|
preloadedPrograms?: PreloadedProgram[];
|
|
19
|
-
platform?: string;
|
|
20
18
|
}
|
|
21
19
|
export interface SolanaTestValidator {
|
|
22
20
|
rpcUrl: string;
|
|
@@ -25,8 +23,12 @@ export interface SolanaTestValidator {
|
|
|
25
23
|
container?: StartedTestContainer;
|
|
26
24
|
process?: ChildProcess;
|
|
27
25
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Starts a Solana test validator and waits for the RPC to be ready.
|
|
28
|
+
* Uses a local binary if available, otherwise falls back to Docker (Linux only).
|
|
29
|
+
*
|
|
30
|
+
* @param chainMetadata - Test chain metadata (defaults to TEST_SVM_CHAIN_METADATA)
|
|
31
|
+
* @param preloadedPrograms - Programs to preload into the validator
|
|
32
|
+
*/
|
|
33
|
+
export declare function runSolanaNode(chainMetadata?: TestChainMetadata, preloadedPrograms?: PreloadedProgram[]): Promise<SolanaTestValidator>;
|
|
32
34
|
//# sourceMappingURL=solana-container.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-container.d.ts","sourceRoot":"","sources":["../../src/testing/solana-container.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"solana-container.d.ts","sourceRoot":"","sources":["../../src/testing/solana-container.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,eAAe,CAAC;AAQvB,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,gBAAgB,CAAC;AAyBxB,eAAO,MAAM,sBAAsB,6DAAsE,CAAC;AAE1G,wBAAgB,cAAc,IAAI,OAAO,CAUxC;AAiDD,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CA2CvD;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AA+ND;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,aAAa,GAAE,iBAA2C,EAC1D,iBAAiB,GAAE,gBAAgB,EAAO,GACzC,OAAO,CAAC,mBAAmB,CAAC,CAkC9B"}
|
|
@@ -6,15 +6,25 @@ import * as fs from 'fs';
|
|
|
6
6
|
import * as os from 'os';
|
|
7
7
|
// eslint-disable-next-line import/no-nodejs-modules
|
|
8
8
|
import * as path from 'path';
|
|
9
|
-
import { isNullish } from '@hyperlane-xyz/utils';
|
|
9
|
+
import { assert, isNullish, retryAsync } from '@hyperlane-xyz/utils';
|
|
10
10
|
import { GenericContainer, Wait, } from 'testcontainers';
|
|
11
|
+
import { AGAVE_VERSION, TEST_SVM_CHAIN_METADATA } from './constants.js';
|
|
12
|
+
// Vendored Docker seccomp profile with io_uring syscalls pre-patched.
|
|
13
|
+
// Agave v2.0+ requires io_uring which Docker's default profile blocks.
|
|
14
|
+
// To update: fetch https://raw.githubusercontent.com/moby/profiles/main/seccomp/default.json,
|
|
15
|
+
// add io_uring_enter/io_uring_register/io_uring_setup to the main SCMP_ACT_ALLOW rule,
|
|
16
|
+
// and save to src/testing/fixtures/docker-seccomp.json.
|
|
17
|
+
// See https://github.com/moby/moby/issues/47532
|
|
18
|
+
const DOCKER_SECCOMP_PATH = path.join(path.dirname(new URL(import.meta.url).pathname), 'fixtures', 'docker-seccomp.json');
|
|
19
|
+
function getSeccompProfile() {
|
|
20
|
+
return fs.readFileSync(DOCKER_SECCOMP_PATH, 'utf-8');
|
|
21
|
+
}
|
|
11
22
|
// Agave v3.0.x activates stricter_abi_and_runtime_constraints which rejects
|
|
12
23
|
// the old Token-2022 program's non-zero-init realloc calls. The test setup
|
|
13
24
|
// overrides the built-in Token-2022 with v10.0.0 (via --bpf-program) which
|
|
14
25
|
// uses zero-init realloc and is compatible with the stricter runtime.
|
|
15
26
|
// See https://github.com/anza-xyz/agave/issues/9799
|
|
16
|
-
export const SOLANA_VALIDATOR_IMAGE =
|
|
17
|
-
export const SOLANA_RPC_PORT = 8899;
|
|
27
|
+
export const SOLANA_VALIDATOR_IMAGE = `ghcr.io/hyperlane-xyz/hyperlane-solana-validator:${AGAVE_VERSION}`;
|
|
18
28
|
export function isAppleSilicon() {
|
|
19
29
|
try {
|
|
20
30
|
const arch = execSync('uname -m', { encoding: 'utf-8' }).trim();
|
|
@@ -55,9 +65,11 @@ function getValidatorVersion(binaryPath) {
|
|
|
55
65
|
return null;
|
|
56
66
|
}
|
|
57
67
|
}
|
|
68
|
+
// Strip leading 'v' for the filesystem path (releases use bare semver).
|
|
69
|
+
const AGAVE_SEMVER = AGAVE_VERSION.replace(/^v/, '');
|
|
58
70
|
const SOLANA_BINARY_PATHS = [
|
|
59
71
|
path.join(os.homedir(), '.local/share/solana/install/active_release/bin'),
|
|
60
|
-
path.join(os.homedir(),
|
|
72
|
+
path.join(os.homedir(), `.local/share/solana/install/releases/${AGAVE_SEMVER}/bin`),
|
|
61
73
|
'/tmp/solana-release/bin',
|
|
62
74
|
'/opt/homebrew/bin',
|
|
63
75
|
'/usr/local/bin',
|
|
@@ -102,7 +114,7 @@ export function findSolanaTestValidator() {
|
|
|
102
114
|
return candidates[0].path;
|
|
103
115
|
}
|
|
104
116
|
async function startLocalValidator(config) {
|
|
105
|
-
const { binaryPath, keepRunning = false, validatorArgs = [], rpcPort
|
|
117
|
+
const { binaryPath, keepRunning = false, validatorArgs = [], rpcPort, preloadedPrograms = [], } = config;
|
|
106
118
|
const solanaPath = binaryPath ?? findSolanaTestValidator();
|
|
107
119
|
if (!solanaPath) {
|
|
108
120
|
throw new Error('solana-test-validator binary not found. Install from https://docs.anza.xyz/cli/install');
|
|
@@ -176,7 +188,7 @@ async function startLocalValidator(config) {
|
|
|
176
188
|
};
|
|
177
189
|
}
|
|
178
190
|
async function startDockerValidator(config) {
|
|
179
|
-
const { image = SOLANA_VALIDATOR_IMAGE, keepRunning = false, validatorArgs = [], rpcPort
|
|
191
|
+
const { image = SOLANA_VALIDATOR_IMAGE, keepRunning = false, validatorArgs = [], rpcPort, preloadedPrograms = [], } = config;
|
|
180
192
|
const bpfProgramArgs = [];
|
|
181
193
|
const hostDirToContainerDir = new Map();
|
|
182
194
|
let mountIndex = 0;
|
|
@@ -193,8 +205,6 @@ async function startDockerValidator(config) {
|
|
|
193
205
|
const command = [
|
|
194
206
|
'--rpc-port',
|
|
195
207
|
String(rpcPort),
|
|
196
|
-
'--bind-address',
|
|
197
|
-
'0.0.0.0',
|
|
198
208
|
'--ledger',
|
|
199
209
|
'/tmp/solana-ledger',
|
|
200
210
|
'--reset',
|
|
@@ -202,16 +212,20 @@ async function startDockerValidator(config) {
|
|
|
202
212
|
...bpfProgramArgs,
|
|
203
213
|
...validatorArgs,
|
|
204
214
|
];
|
|
215
|
+
// Agave v2.0+ uses io_uring which Docker's default seccomp profile blocks.
|
|
216
|
+
// Use vendored seccomp profile with io_uring syscalls pre-patched.
|
|
217
|
+
// See https://github.com/moby/moby/issues/47532
|
|
218
|
+
const seccompProfile = getSeccompProfile();
|
|
205
219
|
let builder = new GenericContainer(image)
|
|
206
220
|
.withEntrypoint(entrypoint)
|
|
207
|
-
.withExposedPorts(rpcPort)
|
|
221
|
+
.withExposedPorts({ container: rpcPort, host: rpcPort })
|
|
208
222
|
.withCommand(command)
|
|
209
|
-
.
|
|
223
|
+
.withSecurityOpt(`seccomp=${seccompProfile}`)
|
|
224
|
+
.withWaitStrategy(Wait.forLogMessage(/rpc bound to/, 1))
|
|
210
225
|
.withStartupTimeout(120_000);
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
226
|
+
assert(os.platform() === 'linux', 'Docker-based Solana validator requires Linux. ' +
|
|
227
|
+
'Solana needs AVX instructions that cannot be emulated on other platforms. ' +
|
|
228
|
+
'Install solana-test-validator locally: https://docs.anza.xyz/cli/install');
|
|
215
229
|
const bindMounts = [...hostDirToContainerDir.entries()].map(([hostDir, containerDir]) => ({
|
|
216
230
|
source: hostDir,
|
|
217
231
|
target: containerDir,
|
|
@@ -220,7 +234,7 @@ async function startDockerValidator(config) {
|
|
|
220
234
|
if (bindMounts.length > 0) {
|
|
221
235
|
builder = builder.withBindMounts(bindMounts);
|
|
222
236
|
}
|
|
223
|
-
const container = await builder.start();
|
|
237
|
+
const container = await retryAsync(() => builder.start(), 3, 5000);
|
|
224
238
|
const mappedPort = container.getMappedPort(rpcPort);
|
|
225
239
|
const host = container.getHost();
|
|
226
240
|
const rpcUrl = `http://${host}:${mappedPort}`;
|
|
@@ -235,29 +249,7 @@ async function startDockerValidator(config) {
|
|
|
235
249
|
},
|
|
236
250
|
};
|
|
237
251
|
}
|
|
238
|
-
|
|
239
|
-
const { forceDocker = false } = config;
|
|
240
|
-
if (!forceDocker) {
|
|
241
|
-
const localBinary = config.binaryPath ?? findSolanaTestValidator();
|
|
242
|
-
if (localBinary) {
|
|
243
|
-
// eslint-disable-next-line no-console
|
|
244
|
-
console.log(`Using local solana-test-validator: ${localBinary}`);
|
|
245
|
-
return startLocalValidator({ ...config, binaryPath: localBinary });
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
if (isAppleSilicon()) {
|
|
249
|
-
throw new Error('No local solana-test-validator found on Apple Silicon.\n' +
|
|
250
|
-
'Docker is not supported: Solana requires AVX instructions that Rosetta 2 cannot emulate.\n' +
|
|
251
|
-
'Install natively from: https://docs.anza.xyz/cli/install\n' +
|
|
252
|
-
'Or download directly:\n' +
|
|
253
|
-
' curl -L -o /tmp/solana.tar.bz2 https://github.com/anza-xyz/agave/releases/download/v3.0.14/solana-release-aarch64-apple-darwin.tar.bz2\n' +
|
|
254
|
-
' tar jxf /tmp/solana.tar.bz2 -C /tmp');
|
|
255
|
-
}
|
|
256
|
-
// eslint-disable-next-line no-console
|
|
257
|
-
console.log('Using Docker for solana-test-validator');
|
|
258
|
-
return startDockerValidator(config);
|
|
259
|
-
}
|
|
260
|
-
export async function waitForRpcReady(rpcUrl, maxAttempts = 30, delayMs = 1000) {
|
|
252
|
+
async function waitForRpcReady(rpcUrl, maxAttempts = 30, delayMs = 1000) {
|
|
261
253
|
let lastError;
|
|
262
254
|
for (let i = 0; i < maxAttempts; i++) {
|
|
263
255
|
try {
|
|
@@ -284,6 +276,42 @@ export async function waitForRpcReady(rpcUrl, maxAttempts = 30, delayMs = 1000)
|
|
|
284
276
|
}
|
|
285
277
|
throw new Error(`RPC endpoint not ready after ${maxAttempts} attempts. Last error: ${lastError}`);
|
|
286
278
|
}
|
|
287
|
-
|
|
288
|
-
|
|
279
|
+
/**
|
|
280
|
+
* Starts a Solana test validator and waits for the RPC to be ready.
|
|
281
|
+
* Uses a local binary if available, otherwise falls back to Docker (Linux only).
|
|
282
|
+
*
|
|
283
|
+
* @param chainMetadata - Test chain metadata (defaults to TEST_SVM_CHAIN_METADATA)
|
|
284
|
+
* @param preloadedPrograms - Programs to preload into the validator
|
|
285
|
+
*/
|
|
286
|
+
export async function runSolanaNode(chainMetadata = TEST_SVM_CHAIN_METADATA, preloadedPrograms = []) {
|
|
287
|
+
const config = {
|
|
288
|
+
rpcPort: chainMetadata.rpcPort,
|
|
289
|
+
preloadedPrograms,
|
|
290
|
+
};
|
|
291
|
+
let validator;
|
|
292
|
+
const localBinary = findSolanaTestValidator();
|
|
293
|
+
if (localBinary) {
|
|
294
|
+
// eslint-disable-next-line no-console
|
|
295
|
+
console.log(`Using local solana-test-validator: ${localBinary}`);
|
|
296
|
+
validator = await startLocalValidator({
|
|
297
|
+
...config,
|
|
298
|
+
binaryPath: localBinary,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
else if (isAppleSilicon()) {
|
|
302
|
+
throw new Error('No local solana-test-validator found on Apple Silicon.\n' +
|
|
303
|
+
'Docker is not supported: Solana requires AVX instructions that Rosetta 2 cannot emulate.\n' +
|
|
304
|
+
'Install natively from: https://docs.anza.xyz/cli/install\n' +
|
|
305
|
+
'Or download directly:\n' +
|
|
306
|
+
` curl -L -o /tmp/solana.tar.bz2 https://github.com/anza-xyz/agave/releases/download/${AGAVE_VERSION}/solana-release-aarch64-apple-darwin.tar.bz2\n` +
|
|
307
|
+
' tar jxf /tmp/solana.tar.bz2 -C /tmp');
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
// eslint-disable-next-line no-console
|
|
311
|
+
console.log('Using Docker for solana-test-validator');
|
|
312
|
+
validator = await startDockerValidator(config);
|
|
313
|
+
}
|
|
314
|
+
await waitForRpcReady(validator.rpcUrl);
|
|
315
|
+
return validator;
|
|
316
|
+
}
|
|
289
317
|
//# sourceMappingURL=solana-container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-container.js","sourceRoot":"","sources":["../../src/testing/solana-container.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solana-container.js","sourceRoot":"","sources":["../../src/testing/solana-container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { address } from '@solana/kit';
|
|
2
2
|
import { expect } from 'chai';
|
|
3
|
-
import {
|
|
3
|
+
import { before, describe, it } from 'mocha';
|
|
4
4
|
import { HYPERLANE_SVM_PROGRAM_BYTES } from '../hyperlane/program-bytes.js';
|
|
5
5
|
import { ArtifactState } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
6
6
|
import { TokenType } from '@hyperlane-xyz/provider-sdk/warp';
|
|
@@ -9,19 +9,13 @@ import { DEFAULT_IGP_SALT, SvmIgpHookWriter, } from '../hook/igp-hook.js';
|
|
|
9
9
|
import { SvmTestIsmWriter } from '../ism/test-ism.js';
|
|
10
10
|
import { deriveAtaPayerPda } from '../pda.js';
|
|
11
11
|
import { createRpc } from '../rpc.js';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
12
|
+
import { TEST_SVM_CHAIN_METADATA } from '../testing/constants.js';
|
|
13
|
+
import { TEST_ATA_PAYER_FUNDING_AMOUNT, TEST_PROGRAM_IDS, airdropSol, createSplMint, } from '../testing/setup.js';
|
|
14
14
|
import { SvmCollateralTokenWriter } from '../warp/collateral-token.js';
|
|
15
15
|
import { defineWarpTokenTests } from './warp-token-suite.js';
|
|
16
16
|
const TEST_PRIVATE_KEY = '0x0000000000000000000000000000000000000000000000000000000000000001';
|
|
17
|
-
const PRELOADED_PROGRAMS = [
|
|
18
|
-
'mailbox',
|
|
19
|
-
'igp',
|
|
20
|
-
'testIsm',
|
|
21
|
-
];
|
|
22
17
|
describe('SVM Collateral Warp Token E2E Tests', function () {
|
|
23
18
|
this.timeout(300_000);
|
|
24
|
-
let solana;
|
|
25
19
|
let rpc;
|
|
26
20
|
let signer;
|
|
27
21
|
let mailboxAddress;
|
|
@@ -30,11 +24,8 @@ describe('SVM Collateral Warp Token E2E Tests', function () {
|
|
|
30
24
|
let testIsmAddress;
|
|
31
25
|
let writer;
|
|
32
26
|
before(async () => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
await waitForRpcReady(solana.rpcUrl);
|
|
36
|
-
rpc = createRpc(solana.rpcUrl);
|
|
37
|
-
signer = await SvmSigner.connectWithSigner([solana.rpcUrl], TEST_PRIVATE_KEY);
|
|
27
|
+
rpc = createRpc(TEST_SVM_CHAIN_METADATA.rpcUrl);
|
|
28
|
+
signer = await SvmSigner.connectWithSigner([TEST_SVM_CHAIN_METADATA.rpcUrl], TEST_PRIVATE_KEY);
|
|
38
29
|
await airdropSol(rpc, address(signer.getSignerAddress()), 50000000000n);
|
|
39
30
|
mailboxAddress = TEST_PROGRAM_IDS.mailbox;
|
|
40
31
|
igpProgramId = TEST_PROGRAM_IDS.igp;
|
|
@@ -71,11 +62,6 @@ describe('SVM Collateral Warp Token E2E Tests', function () {
|
|
|
71
62
|
ataPayerFundingAmount: TEST_ATA_PAYER_FUNDING_AMOUNT,
|
|
72
63
|
}, rpc, signer);
|
|
73
64
|
});
|
|
74
|
-
after(async () => {
|
|
75
|
-
if (solana) {
|
|
76
|
-
await solana.stop();
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
65
|
describe('Collateral Token', () => {
|
|
80
66
|
let deployedProgramId;
|
|
81
67
|
defineWarpTokenTests(() => ({
|
|
@@ -93,7 +79,7 @@ describe('SVM Collateral Warp Token E2E Tests', function () {
|
|
|
93
79
|
testIsmAddress,
|
|
94
80
|
signer,
|
|
95
81
|
rpc,
|
|
96
|
-
rpcUrl:
|
|
82
|
+
rpcUrl: TEST_SVM_CHAIN_METADATA.rpcUrl,
|
|
97
83
|
}), (id) => {
|
|
98
84
|
deployedProgramId = id;
|
|
99
85
|
});
|