diff --git a/packages/rollup-full-node/src/app/utils.ts b/packages/rollup-full-node/src/app/utils.ts index f7a48d8c9df3f..29096ff7dd321 100644 --- a/packages/rollup-full-node/src/app/utils.ts +++ b/packages/rollup-full-node/src/app/utils.ts @@ -40,22 +40,38 @@ export const createProviderForHandler = ( return provider } -export async function createMockProvider( - port: number = 9999, - messageSubmitter: L2ToL1MessageSubmitter = new NoOpL2ToL1MessageSubmitter() -) { - const host = '0.0.0.0' - const fullnodeHandler = await DefaultWeb3Handler.create(messageSubmitter) - const fullnodeRpcServer = new FullnodeRpcServer(fullnodeHandler, host, port) - fullnodeRpcServer.listen() - const baseUrl = `http://${host}:${port}` - const httpProvider = new providers.JsonRpcProvider(baseUrl) - httpProvider['closeOVM'] = () => { - if (!!fullnodeRpcServer) { - fullnodeRpcServer.close() - } +/** + * Creates a fullnodeHandler to handle the given Provider's `send`s. + * + * @param provider The provider to modify + * @return The provider with modified `send`s + */ +export async function addHandlerToProvider(provider: any): Promise { + const messageSubmitter: L2ToL1MessageSubmitter = new NoOpL2ToL1MessageSubmitter() + const fullnodeHandler: FullnodeHandler = await DefaultWeb3Handler.create( + messageSubmitter + ) + // Then we replace `send()` with our modified send that uses the execution manager as a proxy + provider.send = async (method: string, params: any) => { + log.debug('Sending -- Method:', method, 'Params:', params) + + // Convert the message or response if we need to + const response = await fullnodeHandler.handleRequest(method, params) + + log.debug('Received Response --', response) + return response } - return httpProvider + + // The return our slightly modified provider & the execution manager address + return provider +} + +export async function createMockProvider() { + const messageSubmitter = new NoOpL2ToL1MessageSubmitter() + const fullnodeHandler = await DefaultWeb3Handler.create(messageSubmitter) + const web3Provider = createProviderForHandler(fullnodeHandler) + + return web3Provider } const defaultDeployOptions = { diff --git a/packages/test-ERC20-Waffle/test/erc20.spec.js b/packages/test-ERC20-Waffle/test/erc20.spec.js index e3b224dadc634..dcbc312c6b847 100644 --- a/packages/test-ERC20-Waffle/test/erc20.spec.js +++ b/packages/test-ERC20-Waffle/test/erc20.spec.js @@ -15,7 +15,6 @@ describe('ERC20 smart contract', () => { wallet = wallets[0] walletTo = wallets[1] }) - after(() => {provider.closeOVM()}) // parameters to use for our test coin const COIN_NAME = 'OVM Test Coin' const TICKER = 'OVM' diff --git a/packages/test-ovm-full-node/test/library-support.spec.ts b/packages/test-ovm-full-node/test/library-support.spec.ts index fee77650d8106..4b64f29340e80 100644 --- a/packages/test-ovm-full-node/test/library-support.spec.ts +++ b/packages/test-ovm-full-node/test/library-support.spec.ts @@ -58,7 +58,7 @@ describe('Library usage tests', () => { beforeEach(async function() { // NOTE: if we run this test in isolation on default port, it works, but in multi-package tests it fails. // Hypothesis for why this is: multi-package tests are run in parallel, so we need to use a separate port per package. - provider = await createMockProvider(9998) + provider = await createMockProvider() const wallets = getWallets(provider) wallet = wallets[0] @@ -104,9 +104,6 @@ describe('Library usage tests', () => { deployedLibUser = await deployContract(wallet, libUserJSON, [], []) log.debug(`deployed library user to: ${deployedLibUser.address}`) }) - afterEach(async () => { - await provider.closeOVM() - }) it('should allow us to transpile, link, and query contract methods which use a single library', async () => { const returnedUsingLib = await deployedLibUser.useLib()