blob: 798c2fa2608712f4aca47752dbd55fe91dbc7535 [file] [log] [blame]
<!doctype html><!-- webkit-test-runner [ IPCTestingAPIEnabled=true ] -->
<title>Test that sending messages immediately after creating a new connection works.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<body>
<script>
const defaultTimeout = 1000;
promise_test(async t => {
if (!window.IPC)
return;
const testerID = 447;
for (const processTarget of IPC.processTargets) {
// Test starts here.
const [connection, clientConnectionIdentifier] = IPC.createConnectionPair();
connection.open();
const msgs = [];
const numMessages = 10000;
for (let v = 0; v < numMessages; v++)
msgs.push([{ type: 'uint32_t', value: v + 1}]);
let msgName = IPC.messages.IPCConnectionTester_AsyncMessage.name;
IPC.sendMessage(processTarget, 0, IPC.messages.IPCTester_CreateConnectionTester.name, [
{ type: 'uint64_t', value: testerID },
{ type: 'Attachment', value: clientConnectionIdentifier },
]);
try {
for (let msg of msgs)
connection.sendMessage(0, msgName, msg);
const reply = connection.sendSyncMessage(0, IPC.messages.IPCConnectionTester_SyncMessage.name, defaultTimeout, [{ type: 'uint32_t', value: 55 }]);
const firstResult = reply.arguments[0];
assert_equals(firstResult.type, "uint32_t", `for ${ processTarget }`);
assert_equals(firstResult.value, 55 + numMessages, `for ${ processTarget }`);
} finally {
connection.invalidate();
IPC.sendSyncMessage(processTarget, 0, IPC.messages.IPCTester_ReleaseConnectionTester.name, defaultTimeout, [{ type: 'uint64_t', value: testerID }]);
}
}
}, "Sending async messages from the server immediately after opening a new connection works.");
promise_test(async t => {
if (!window.IPC)
return;
const testerID = 448;
for (const processTarget of IPC.processTargets) {
// Test starts here.
const connectionCount = 5; // FIXME: should be 100, but waiting for messages is slow.
for (let i = 0; i < connectionCount; ++i) {
const [connection, clientConnectionIdentifier] = IPC.createConnectionPair();
connection.open();
const messageCount = 3; // FIXME: should be 10000, but waiting for messages is slow.
IPC.sendMessage(processTarget, 0, IPC.messages.IPCTester_CreateConnectionTesterAndSendAsyncMessages.name, [
{ type: 'uint64_t', value: testerID },
{ type: 'Attachment', value: clientConnectionIdentifier },
{ type: 'uint32_t', value: messageCount },
]);
try {
for (let v = 0; v < messageCount; v++) {
const msg = connection.waitForMessage(0, IPC.messages.IPCConnectionTester_AsyncMessage.name, defaultTimeout);
assert_equals(msg[0].type, "uint32_t", `for ${ processTarget }`);
assert_equals(msg[0].value, v, `for ${ processTarget }`);
}
} finally {
connection.invalidate();
IPC.sendSyncMessage(processTarget, 0, IPC.messages.IPCTester_ReleaseConnectionTester.name, defaultTimeout, [{ type: 'uint64_t', value: testerID }]);
}
}
}
}, "Sending async messages from the client immediately after opening the connection works.");
</script>
</body>