Skip to content
Merged
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
46 changes: 31 additions & 15 deletions packages/rollup-full-node/src/app/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<any> {
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 = {
Expand Down
1 change: 0 additions & 1 deletion packages/test-ERC20-Waffle/test/erc20.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
5 changes: 1 addition & 4 deletions packages/test-ovm-full-node/test/library-support.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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]

Expand Down Expand Up @@ -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()
Expand Down