| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/protocol-test.js"></script> |
| <script src="../../http/tests/inspector/resources/probe-test.js"></script> |
| <script src="resources/breakpoint.js"></script> |
| <script> |
| function test() |
| { |
| InspectorProtocol.sendCommand("Debugger.enable", {}); |
| InspectorProtocol.sendCommand("Debugger.setBreakpointsActive", {active: true}); |
| |
| var samples = []; |
| const expectedSampleCount = 4; |
| |
| function receivedAllExpectedSamples() { |
| return samples.length === expectedSampleCount; |
| } |
| |
| function dumpSamples() { |
| for (var i = 0; i < samples.length; i++) |
| ProtocolTest.log("Sample " + (i + 1) + ": " + JSON.stringify(samples[i])); |
| } |
| |
| var tests = [ |
| { |
| message: "Samples from different probe actions should have unique action identifiers.", |
| predicate: function samplesHaveUniqueActionIds() { |
| return samples[0].probeId !== samples[1].probeId; |
| }, |
| error: dumpSamples |
| }, |
| { |
| message: "Samples from probe actions on the same breakpoint should have the same batch identifiers.", |
| predicate: function samplesHaveEqualBatchIds() { |
| return samples[0].batchId === samples[1].batchId; |
| }, |
| error: dumpSamples |
| }, |
| { |
| message: "SampleIds from a any probe are sequential and start counting from one.", |
| predicate: function samplesHaveSequentialIds() { |
| let initialSampleId = samples[0].sampleId; |
| for (let i = 0; i < samples.length; ++i) { |
| let expectedSampleId = initialSampleId + i; |
| if (samples[i].sampleId !== expectedSampleId) |
| return false; |
| } |
| return true; |
| }, |
| error: dumpSamples |
| }, |
| ]; |
| |
| InspectorProtocol.eventHandler["Debugger.scriptParsed"] = function(messageObject) |
| { |
| if (/resources\/breakpoint\.js$/.test(messageObject.params.url)) { |
| ProtocolTest.log("Found breakpoint.js"); |
| var scriptIdentifier = messageObject.params.scriptId; |
| var location = {scriptId: scriptIdentifier, lineNumber: 18, columnNumber: 0}; |
| var options = { |
| autoContinue: true, |
| actions: [ |
| {"type": "probe", "data": "a", "id": 1}, |
| {"type": "probe", "data": "a", "id": 2} |
| ] |
| }; |
| |
| InspectorProtocol.sendCommand("Debugger.setBreakpoint", {location, options}, function(responseObject) { |
| InspectorProtocol.checkForError(responseObject); |
| |
| ProtocolTest.log("Running breakpointActions to trigger probe samples."); |
| InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointActions(12, {x:1,y:2})"}); |
| InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointActions(12, {x:1,y:2})"}); |
| }); |
| } |
| } |
| |
| InspectorProtocol.eventHandler["Debugger.didSampleProbe"] = function(messageObject) |
| { |
| var sample = ProtocolTest.Probe.sanitizeProbeSample(messageObject); |
| samples.push(sample); |
| ProtocolTest.log("Received probe sample payload: " + JSON.stringify(sample.payload)); |
| |
| if (receivedAllExpectedSamples()) { |
| tests.forEach(function(test) { |
| var result = test.predicate(); |
| ProtocolTest.expectThat(result, test.message); |
| if (!result) |
| test.error(); |
| }); |
| ProtocolTest.completeTest(); |
| } |
| } |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Debugger.setBreakpoint with multiple probe actions at the same breakpoint. Test Debugger.didSampleProbe events for the probe samples.</p> |
| </body> |
| </html> |