Skip to content

Commit 2460f6b

Browse files
committed
Refactor state management: remove unused paused state variables and implement requests per second tracking
1 parent 3044ffa commit 2460f6b

File tree

3 files changed

+24
-38
lines changed

3 files changed

+24
-38
lines changed

index.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/locations.js

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/speed-test.js

Lines changed: 23 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,9 @@ const state = {
2626
isPaused: false,
2727
pauseCallbacks: [],
2828
requestsCompleted: 0,
29-
startTime: Date.now(),
30-
statsResetInterval: null,
31-
pausedAt: null,
32-
pausedDuration: 0
29+
requestsInLastSecond: 0,
30+
requestsPerSecond: 0,
31+
requestCounterInterval: null
3332
}
3433

3534
// Extract destructured state for cleaner code
@@ -179,18 +178,15 @@ function handleTestResult(item, result) {
179178
// Check if warm-up is complete
180179
if (state.warmupProgress.completed >= state.warmupProgress.total) {
181180
state.warmupProgress.isWarmupPhase = false
182-
// Reset start time and counter when warmup completes
183-
state.startTime = Date.now()
184-
state.requestsCompleted = 0
185181

186-
// Start periodic stats reset (every 60 seconds)
187-
if (state.statsResetInterval) {
188-
clearInterval(state.statsResetInterval)
182+
// Start 1-second interval to track requests per second
183+
if (state.requestCounterInterval) {
184+
clearInterval(state.requestCounterInterval)
189185
}
190-
state.statsResetInterval = setInterval(() => {
191-
state.requestsCompleted = 0
192-
state.startTime = Date.now()
193-
}, 60000)
186+
state.requestCounterInterval = setInterval(() => {
187+
state.requestsPerSecond = state.requestsInLastSecond
188+
state.requestsInLastSecond = 0
189+
}, 1000)
194190

195191
progressCallbacks.forEach(callback => {
196192
try {
@@ -211,7 +207,7 @@ function handleTestResult(item, result) {
211207
}
212208

213209
// Increment request counter (after warm-up)
214-
state.requestsCompleted++
210+
state.requestsInLastSecond++
215211

216212
// Notify all callbacks with the result
217213
callbacks.forEach(callback => {
@@ -274,6 +270,16 @@ function handleFailedResult(item, result, callRecord) {
274270
// Check if warm-up is complete
275271
if (state.warmupProgress.completed >= state.warmupProgress.total) {
276272
state.warmupProgress.isWarmupPhase = false
273+
274+
// Start 1-second interval to track requests per second
275+
if (state.requestCounterInterval) {
276+
clearInterval(state.requestCounterInterval)
277+
}
278+
state.requestCounterInterval = setInterval(() => {
279+
state.requestsPerSecond = state.requestsInLastSecond
280+
state.requestsInLastSecond = 0
281+
}, 1000)
282+
277283
progressCallbacks.forEach(callback => {
278284
try {
279285
callback({
@@ -293,7 +299,7 @@ function handleFailedResult(item, result, callRecord) {
293299
}
294300

295301
// Increment request counter (after warm-up) for failed requests too
296-
state.requestsCompleted++
302+
state.requestsInLastSecond++
297303

298304
callbacks.forEach(callback => {
299305
try {
@@ -406,25 +412,13 @@ export const retry = (domain) => {
406412
* Get current statistics
407413
*/
408414
export const getStats = () => {
409-
let elapsed = (Date.now() - state.startTime) / 1000 // seconds
410-
411-
// If paused, subtract the paused duration from elapsed time
412-
if (state.isPaused && state.pausedAt) {
413-
elapsed -= (Date.now() - state.pausedAt) / 1000
414-
} else if (state.pausedDuration > 0) {
415-
elapsed -= state.pausedDuration / 1000
416-
}
417-
418-
const requestsPerSecond = elapsed > 0 ? state.requestsCompleted / elapsed : 0
419-
420415
return {
421416
totalDomains: getLocations().length,
422417
blockedDomains: blockList.size,
423418
activeDomains: getLocations().length - blockList.size,
424419
queueLength: queue.length,
425420
activeRequests: Object.keys(callRecords).length,
426-
requestsCompleted: state.requestsCompleted,
427-
requestsPerSecond: requestsPerSecond
421+
requestsPerSecond: state.requestsPerSecond
428422
}
429423
}
430424

@@ -433,7 +427,6 @@ export const getStats = () => {
433427
*/
434428
export const pause = () => {
435429
state.isPaused = true
436-
state.pausedAt = Date.now()
437430

438431
pauseCallbacks.forEach(callback => {
439432
try {
@@ -448,12 +441,6 @@ export const pause = () => {
448441
* Resume all speed test requests
449442
*/
450443
export const resume = () => {
451-
// Track paused duration
452-
if (state.pausedAt) {
453-
state.pausedDuration += Date.now() - state.pausedAt
454-
state.pausedAt = null
455-
}
456-
457444
state.isPaused = false
458445

459446
// Clear any stale call records from before pause

0 commit comments

Comments
 (0)