From 17321a12730db01c501a5b9a6d2c4a5dafcc4533 Mon Sep 17 00:00:00 2001
From: Moritz Langenstein <ml5717@ic.ac.uk>
Date: Fri, 29 Nov 2019 21:32:48 +0000
Subject: [PATCH] (ml5717) Added network->frontend benchmark for parallel dots

---
 __tests__/benchmark.test.js | 188 ++++++++++++++++++++++++++++--------
 1 file changed, 149 insertions(+), 39 deletions(-)

diff --git a/__tests__/benchmark.test.js b/__tests__/benchmark.test.js
index abf954b..dedc0fa 100644
--- a/__tests__/benchmark.test.js
+++ b/__tests__/benchmark.test.js
@@ -326,25 +326,32 @@ describe("drawing app mesh", () => {
     const dotIDs = []
     let prevTime
 
-    let addTime
-    let addPackets = 0
+    let addLocTime
+    const addPackets = []
     let addSize = 0
-    let eraseTime
-    let erasePackets = 0
+    let eraseLocTime
+    const erasePackets = []
     let eraseSize = 0
-    let syncTime
-    let syncPackets = 0
+    let syncLocTime
+    const syncPackets = []
     let syncSize = 0
 
+    let addRemTime = 0
+    let addEvents = 0
+    let eraseRemTime = 0
+    let eraseEvents = 0
+    let syncRemTime = 0
+    let syncEvents = 0
+
     let timeout
 
     return new Promise((resolve) => {
       broadcastListener.callback = (channel, message) => {
         const currTime = process.hrtime()
 
-        addTime =
+        addLocTime =
           (currTime[0] - prevTime[0]) * 1e9 + (currTime[1] - prevTime[1])
-        addPackets += 1
+        addPackets.push(message)
         addSize += message.message.length
 
         clearTimeout(timeout)
@@ -363,9 +370,9 @@ describe("drawing app mesh", () => {
             broadcastListener.callback = (channel, message) => {
               const currTime = process.hrtime()
 
-              eraseTime =
+              eraseLocTime =
                 (currTime[0] - prevTime[0]) * 1e9 + (currTime[1] - prevTime[1])
-              erasePackets += 1
+              erasePackets.push(message)
               eraseSize += message.message.length
 
               clearTimeout(timeout)
@@ -390,40 +397,14 @@ describe("drawing app mesh", () => {
           new Promise((resolve) => {
             sendListener.callback = (uid, channel, message) => {
               const currTime = process.hrtime()
-              syncTime =
+              syncLocTime =
                 (currTime[0] - prevTime[0]) * 1e9 + (currTime[1] - prevTime[1])
 
-              syncPackets += 1
+              syncPackets.push(message)
               syncSize += message.message.length
 
               clearTimeout(timeout)
-              timeout = setTimeout(() => {
-                printBenchmark("single draw and erase [parallel]", ITERATIONS, {
-                  addPath: {
-                    timeLoc: addTime,
-                    packets: addPackets,
-                    size: addSize,
-                    timeRem: -1,
-                    events: -1,
-                  },
-                  extendErasureIntervals: {
-                    timeLoc: eraseTime,
-                    packets: erasePackets,
-                    size: eraseSize,
-                    timeRem: -1,
-                    events: -1,
-                  },
-                  synchronisation: {
-                    timeLoc: syncTime,
-                    packets: syncPackets,
-                    size: syncSize,
-                    timeRem: -1,
-                    events: -1,
-                  },
-                })
-
-                resolve()
-              }, 1000)
+              timeout = setTimeout(() => resolve(), 1000)
             }
 
             prevTime = process.hrtime()
@@ -434,6 +415,135 @@ describe("drawing app mesh", () => {
             )(createMessageReceivedEvent(syncStep1))
           }),
       )
+      .then(
+        () =>
+          new Promise((resolve) => {
+            updateRoom.addEventListener("addOrUpdatePath", () => {
+              const currTime = process.hrtime()
+
+              addRemTime =
+                (currTime[0] - prevTime[0]) * 1e9 + (currTime[1] - prevTime[1])
+              addEvents += 1
+
+              clearTimeout(timeout)
+              timeout = setTimeout(() => resolve(), 1000)
+            })
+
+            updateRoom.addEventListener("removedIntervalsChange", () => {
+              const currTime = process.hrtime()
+
+              addRemTime =
+                (currTime[0] - prevTime[0]) * 1e9 + (currTime[1] - prevTime[1])
+              addEvents += 1
+
+              clearTimeout(timeout)
+              timeout = setTimeout(() => resolve(), 1000)
+            })
+
+            for (const addPacket of addPackets) {
+              getEventListener(
+                "update",
+                "messageReceived",
+              )(createMessageReceivedEvent(addPacket))
+            }
+          }),
+      )
+      .then(
+        () =>
+          new Promise((resolve) => {
+            updateRoom.addEventListener("addOrUpdatePath", () => {
+              const currTime = process.hrtime()
+
+              eraseRemTime =
+                (currTime[0] - prevTime[0]) * 1e9 + (currTime[1] - prevTime[1])
+              eraseEvents += 1
+
+              clearTimeout(timeout)
+              timeout = setTimeout(() => resolve(), 1000)
+            })
+
+            updateRoom.addEventListener("removedIntervalsChange", () => {
+              const currTime = process.hrtime()
+
+              eraseRemTime =
+                (currTime[0] - prevTime[0]) * 1e9 + (currTime[1] - prevTime[1])
+              eraseEvents += 1
+
+              clearTimeout(timeout)
+              timeout = setTimeout(() => resolve(), 1000)
+            })
+
+            for (const erasePacket of erasePackets) {
+              getEventListener(
+                "update",
+                "messageReceived",
+              )(createMessageReceivedEvent(erasePacket))
+            }
+          }),
+      )
+      .then(
+        () =>
+          new Promise((resolve) => {
+            syncRoom.addEventListener("addOrUpdatePath", () => {
+              const currTime = process.hrtime()
+
+              syncRemTime =
+                (currTime[0] - prevTime[0]) * 1e9 + (currTime[1] - prevTime[1])
+              syncEvents += 1
+
+              clearTimeout(timeout)
+              timeout = setTimeout(() => resolve(), 1000)
+            })
+
+            syncRoom.addEventListener("removedIntervalsChange", () => {
+              const currTime = process.hrtime()
+
+              syncRemTime =
+                (currTime[0] - prevTime[0]) * 1e9 + (currTime[1] - prevTime[1])
+              syncEvents += 1
+
+              clearTimeout(timeout)
+              timeout = setTimeout(() => resolve(), 1000)
+            })
+
+            for (const syncPacket of syncPackets) {
+              getEventListener(
+                "sync",
+                "messageReceived",
+              )(createMessageReceivedEvent(syncPacket))
+            }
+          }),
+      )
+      .then(
+        () =>
+          new Promise((resolve) => {
+            printBenchmark("single draw and erase [parallel]", ITERATIONS, {
+              addPath: {
+                timeLoc: addLocTime,
+                packets: addPackets.length,
+                size: addSize,
+                timeRem: addRemTime,
+                events: addEvents,
+              },
+              extendErasureIntervals: {
+                timeLoc: eraseLocTime,
+                packets: erasePackets.length,
+                size: eraseSize,
+                timeRem: eraseRemTime,
+                events: eraseEvents,
+              },
+              synchronisation: {
+                timeLoc: syncLocTime,
+                packets: syncPackets.length,
+                size: syncSize,
+                timeRem: syncRemTime,
+                events: syncEvents,
+              },
+            })
+
+            resolve()
+          }),
+      )
   })
 
   it("communicates a single draw and erase update", () => {
-- 
GitLab