1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

mesh-testing - submit infura rpc requests to mesh-testing container (#7031)

This commit is contained in:
kumavis 2019-09-23 17:54:41 +08:00 committed by Frankie
parent f5b2977764
commit 4d71f3f854
4 changed files with 40 additions and 5 deletions

View File

@ -72,7 +72,7 @@ let versionedData
initialize().catch(log.error) initialize().catch(log.error)
// setup metamask mesh testing container // setup metamask mesh testing container
setupMetamaskMeshMetrics() const { submitMeshMetricsEntry } = setupMetamaskMeshMetrics()
/** /**
@ -252,6 +252,11 @@ function setupController (initState, initLangCode) {
const provider = controller.provider const provider = controller.provider
setupEnsIpfsResolver({ provider }) setupEnsIpfsResolver({ provider })
// submit rpc requests to mesh-metrics
controller.networkController.on('rpc-req', (data) => {
submitMeshMetricsEntry({ type: 'rpc', data })
})
// report failed transactions to Sentry // report failed transactions to Sentry
controller.txController.on(`tx:status-update`, (txId, status) => { controller.txController.on(`tx:status-update`, (txId, status) => {
if (status !== 'failed') return if (status !== 'failed') return

View File

@ -11,8 +11,11 @@ const BlockTracker = require('eth-block-tracker')
module.exports = createInfuraClient module.exports = createInfuraClient
function createInfuraClient ({ network }) { function createInfuraClient ({ network, onRequest }) {
const infuraMiddleware = createInfuraMiddleware({ network, maxAttempts: 5, source: 'metamask' }) const infuraMiddleware = mergeMiddleware([
createRequestHookMiddleware(onRequest),
createInfuraMiddleware({ network, maxAttempts: 5, source: 'metamask' }),
])
const infuraProvider = providerFromMiddleware(infuraMiddleware) const infuraProvider = providerFromMiddleware(infuraMiddleware)
const blockTracker = new BlockTracker({ provider: infuraProvider }) const blockTracker = new BlockTracker({ provider: infuraProvider })
@ -62,3 +65,10 @@ function createNetworkAndChainIdMiddleware ({ network }) {
net_version: netId, net_version: netId,
}) })
} }
function createRequestHookMiddleware (onRequest) {
return (req, _, next) => {
onRequest(req)
next()
}
}

View File

@ -190,7 +190,10 @@ module.exports = class NetworkController extends EventEmitter {
_configureInfuraProvider ({ type }) { _configureInfuraProvider ({ type }) {
log.info('NetworkController - configureInfuraProvider', type) log.info('NetworkController - configureInfuraProvider', type)
const networkClient = createInfuraClient({ network: type }) const networkClient = createInfuraClient({
network: type,
onRequest: (req) => this.emit('rpc-req', { network: type, req }),
})
this._setNetworkClient(networkClient) this._setNetworkClient(networkClient)
// setup networkConfig // setup networkConfig
var settings = { var settings = {

View File

@ -6,7 +6,24 @@ module.exports = setupMetamaskMeshMetrics
*/ */
function setupMetamaskMeshMetrics () { function setupMetamaskMeshMetrics () {
const testingContainer = document.createElement('iframe') const testingContainer = document.createElement('iframe')
testingContainer.src = 'https://metamask.github.io/mesh-testing/' const targetOrigin = 'https://metamask.github.io'
const targetUrl = `${targetOrigin}/mesh-testing/`
testingContainer.src = targetUrl
let didLoad = false
testingContainer.addEventListener('load', () => {
didLoad = true
})
console.log('Injecting MetaMask Mesh testing client') console.log('Injecting MetaMask Mesh testing client')
document.head.appendChild(testingContainer) document.head.appendChild(testingContainer)
return { submitMeshMetricsEntry }
function submitMeshMetricsEntry (message) {
// ignore if we haven't loaded yet
if (!didLoad) return
// submit the message
testingContainer.contentWindow.postMessage(message, targetOrigin)
}
} }