• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

node-opcua / node-opcua / 23974043205

04 Apr 2026 07:17AM UTC coverage: 92.589% (+0.01%) from 92.576%
23974043205

push

github

erossignon
chore: fix Mocha.Suite.settimeout misused

18408 of 21832 branches covered (84.32%)

161708 of 174651 relevant lines covered (92.59%)

461089.77 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

87.63
/packages/node-opcua-server/source/node_sampler.ts
1
/**
31✔
2
 * @module node-opcua-server
2✔
3
 */
2✔
4
import { assert } from "node-opcua-assert";
2✔
5
import { checkDebugFlag, make_debugLog } from "node-opcua-debug";
2✔
6
import { MonitoringMode } from "node-opcua-types";
2✔
7
import { hrtime } from "node-opcua-utils";
2✔
8

2✔
9
const debugLog = make_debugLog(__filename);
2✔
10
const doDebug = checkDebugFlag(__filename);
2✔
11

2✔
12
import type { MonitoredItem } from "./monitored_item";
2✔
13

2✔
14
interface ITimer {
2✔
15
    _samplingId: NodeJS.Timeout | false;
2✔
16
    monitoredItems: Record<string, any>;
2✔
17
    monitoredItemsCount: number;
2✔
18
}
2✔
19
const timers: Record<string, ITimer> = {};
2✔
20
const NS_PER_SEC = 1e9;
2✔
21

2✔
22
interface MonitoredItemPriv {
2✔
23
    _on_sampling_timer(): void;
2✔
24
}
2✔
25
function sampleMonitoredItem(monitoredItem: MonitoredItem) {
312,623✔
26
    const _monitoredItem = monitoredItem as unknown as MonitoredItemPriv;
312,623✔
27

312,623✔
28
    if (monitoredItem.monitoringMode === MonitoringMode.Disabled) {
312,623!
29
        return;
×
30
    }
×
31

312,623✔
32
    setImmediate(() => {
312,623✔
33
        _monitoredItem._on_sampling_timer();
312,610✔
34
    });
312,623✔
35
}
312,623✔
36

2✔
37
export function appendToTimer(monitoredItem: MonitoredItem): string {
20,920✔
38
    const samplingInterval = monitoredItem.samplingInterval;
20,949✔
39
    const key = samplingInterval.toString();
20,949✔
40
    assert(samplingInterval > 0);
20,949✔
41
    let _t = timers[key];
20,949✔
42
    if (!_t) {
20,949✔
43
        _t = {
245✔
44
            _samplingId: false,
245✔
45
            monitoredItems: {},
245✔
46
            monitoredItemsCount: 0
245✔
47
        };
245✔
48

245✔
49
        _t._samplingId = setInterval(() => {
245✔
50
            const start = doDebug ? hrtime() : undefined;
1,209!
51
            let counter = 0;
1,209✔
52
            for (const m in _t.monitoredItems) {
1,209✔
53
                if (Object.hasOwn(_t.monitoredItems, m)) {
312,623✔
54
                    sampleMonitoredItem(_t.monitoredItems[m]);
312,623✔
55
                    counter++;
312,623✔
56
                }
312,623✔
57
            }
312,623✔
58
            // c8 ignore next
1,209✔
59
            if (doDebug) {
1,209!
60
                const elapsed = hrtime(start);
×
61
                debugLog(
×
62
                    `Sampler ${samplingInterval}  ms : Benchmark took ${(
×
63
                        (elapsed[0] * NS_PER_SEC + elapsed[1]) / 1000 / 1000.0
×
64
                    ).toFixed(3)} milliseconds for ${counter} elements`
×
65
                );
×
66
            }
×
67
        }, samplingInterval);
245✔
68
        timers[key] = _t;
245✔
69
    }
245✔
70
    assert(!_t.monitoredItems[monitoredItem.monitoredItemId]);
20,949✔
71
    _t.monitoredItems[monitoredItem.monitoredItemId] = monitoredItem;
20,949✔
72
    _t.monitoredItemsCount++;
20,949✔
73
    return key;
20,949✔
74
}
20,949✔
75

2✔
76
export function removeFromTimer(monitoredItem: MonitoredItem): void {
20,920✔
77
    const samplingInterval = monitoredItem.samplingInterval;
20,949✔
78
    assert(samplingInterval > 0);
20,949✔
79
    assert(typeof monitoredItem._samplingId === "string");
20,949✔
80
    const key = monitoredItem._samplingId as string;
20,949✔
81
    const _t = timers[key];
20,949✔
82
    if (!_t) {
20,949!
83
        debugLog("cannot find common timer for samplingInterval", key);
×
84
        return;
×
85
    }
×
86
    assert(_t);
20,949✔
87
    assert(_t.monitoredItems[monitoredItem.monitoredItemId]);
20,949✔
88
    delete _t.monitoredItems[monitoredItem.monitoredItemId];
20,949✔
89
    _t.monitoredItemsCount--;
20,949✔
90
    assert(_t.monitoredItemsCount >= 0);
20,949✔
91
    if (_t.monitoredItemsCount === 0) {
20,949✔
92
        if (_t._samplingId !== false) {
245✔
93
            clearInterval(_t._samplingId);
245✔
94
        }
245✔
95
        delete timers[key];
245✔
96
    }
245✔
97
}
20,949✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc