fleetmap-reports 1.0.740 → 1.0.742

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetmap-reports",
3
- "version": "1.0.740",
3
+ "version": "1.0.742",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -65,4 +65,3 @@ exports.calculateSpentFuel = calculateSpentFuel
65
65
  exports.calculateXpertSpentFuel = calculateXpertSpentFuel
66
66
  exports.calculateXpertDistance = calculateXpertDistance
67
67
  exports.maxParallelRequests = maxParallelRequests
68
-
package/src/kms-report.js CHANGED
@@ -18,20 +18,15 @@ const { getDriverData } = require('./util/driver')
18
18
  const fileName = 'KmsReport'
19
19
 
20
20
  async function createKmsReport (from, to, userData, traccarInstance) {
21
- console.log('Create KmsReport')
22
-
23
- console.log(from, to)
21
+ console.log('Create KmsReport', from, to, userData.byDriver ? 'by driver' : (userData.byGroup ? 'by group' : 'by device'))
24
22
  const reportData = []
25
23
  if (userData.byDriver) {
26
- console.log('ByDriver')
27
24
  const allData = await createKmsReportByDriver(from, to, userData, traccarInstance)
28
25
  reportData.push(allData)
29
26
  } else if (userData.byGroup) {
30
- console.log('ByGroup')
31
27
  const allData = await createKmsReportByGroup(from, to, userData, traccarInstance)
32
28
  reportData.push(...allData)
33
29
  } else {
34
- console.log('ByDevice')
35
30
  const allData = await createKmsReportByDevice(from, to, userData, traccarInstance)
36
31
  reportData.push(allData)
37
32
  }
@@ -8,13 +8,23 @@ describe('Kms_Reports', function () {
8
8
  const reports = await getReports()
9
9
  const userData = await reports.getUserData()
10
10
  userData.devices = userData.devices.filter(d => d.id === 22326)
11
- const data = await reports.kmsReport(new Date(2021, 10, 1, 0, 0, 0), new Date(2021, 10, 31, 23, 59, 59),
11
+ const data = await reports.kmsReport(new Date(2023, 5, 1, 0, 0, 0), new Date(2023, 5, 31, 23, 59, 59),
12
12
  userData)
13
13
  assert.equal(data.length, 1)
14
14
  assert.equal(data.length, 1)
15
15
  const device = data[0].devices.find(d => d.device.id === 22326)
16
- assert.equal(device.summary.distance, 1183950.9299999475) // Total Kms
16
+ assert.notEqual(device, undefined)
17
+ assert.equal(device.summary.distance, 1878840.7300000389) // Total Kms
17
18
  }, 30000)
19
+ it('works with many devices', async () => {
20
+ const reports = await getReports(process.env.USER_NOGARTEL, process.env.PASS_NOGARTEL)
21
+ const userData = await reports.getUserData()
22
+ const data = await reports.kmsReport(new Date(2023, 5, 1, 0, 0, 0), new Date(2023, 5, 31, 23, 59, 59),
23
+ userData)
24
+ assert.equal(data.length, 1)
25
+ assert.notEqual(device, undefined)
26
+ assert.equal(device.summary.distance, 1878840.7300000389) // Total Kms
27
+ }, 300000)
18
28
  // eslint-disable-next-line no-undef
19
29
  it('KmsReport byDevice groupByDay', async () => {
20
30
  const reports = await getReports()
@@ -2,50 +2,46 @@ const { sliceArray } = require('../automaticReports')
2
2
  const path = require('path')
3
3
 
4
4
  exports.parallel = (report, method, toSlice, ...args) => {
5
- try {
6
- const cluster = require('cluster')
7
- const numCPUs = require('os').cpus().length
8
- return new Promise((resolve, reject) => {
9
- if (cluster.isPrimary) {
10
- console.log(`Master ${process.pid} is running`, process.cwd())
11
- cluster.setupPrimary({
12
- exec: path.resolve(__dirname, 'worker.js')
13
- })
14
- const sliced = sliceArray(toSlice, toSlice.length / (numCPUs - 1))
15
- const _result = []
16
- let done = 0
17
- let workerCount = 0
18
- sliced.forEach((slice) => {
19
- try {
20
- const worker = cluster.fork()
21
- workerCount++
22
- worker.send({
23
- report,
24
- method,
25
- args: [slice, ...args]
26
- })
27
- worker.on('message', ({ result }) => {
28
- console.log('Received result from worker', worker.process.pid)
29
- _result.push(result)
30
- if (++done === sliced.length) {
31
- resolve(_result.flat())
32
- }
33
- })
34
- } catch (e) {
35
- console.error(report, method, 'worker', workerCount, 'numCPUs', numCPUs)
36
- reject(e)
37
- }
38
- })
5
+ const cluster = require('cluster')
6
+ const numCPUs = require('os').cpus().length
7
+ return new Promise((resolve, reject) => {
8
+ if (cluster.isPrimary) {
9
+ console.log(`master ${process.pid} is running`, process.cwd())
10
+ cluster.setupPrimary({
11
+ exec: path.resolve(__dirname, 'worker.js')
12
+ })
13
+ const sliced = sliceArray(toSlice, toSlice.length / (numCPUs - 1))
14
+ const _result = []
15
+ let done = 0
16
+ let workerCount = 0
17
+ sliced.forEach((slice) => {
18
+ try {
19
+ console.log('forking', workerCount++)
20
+ const worker = cluster.fork()
21
+ worker.send({
22
+ report,
23
+ method,
24
+ args: [slice, ...args]
25
+ })
26
+ worker.on('message', ({ result }) => {
27
+ console.log('received result from worker', worker.process.pid)
28
+ _result.push(result)
29
+ if (++done === sliced.length) {
30
+ resolve(_result.flat())
31
+ }
32
+ })
33
+ } catch (e) {
34
+ console.error(report, method, 'worker', workerCount, 'numCPUs', numCPUs)
35
+ reject(e)
36
+ }
37
+ })
39
38
 
40
- cluster.on('exit', (worker, code, signal) => {
41
- console.log('Worker died', worker.process.pid, code, signal)
42
- if (signal === 'SIGKILL') {
43
- reject(new Error(`Worker died ${worker.process.pid}, code ${code} signal ${signal}`))
44
- }
45
- })
46
- }
47
- })
48
- } catch (e) {
49
- console.log('ClientSide')
50
- }
39
+ cluster.on('exit', (worker, code, signal) => {
40
+ console.log('worker died', worker.process.pid, code, signal)
41
+ if (signal === 'SIGKILL') {
42
+ reject(new Error(`Worker died ${worker.process.pid}, code ${code} signal ${signal}`))
43
+ }
44
+ })
45
+ }
46
+ })
51
47
  }
@@ -111,6 +111,7 @@ async function getAllInOne (
111
111
  }))
112
112
  }
113
113
  const now = new Date()
114
+ console.log('parallel', requests.length)
114
115
  result.push(...(await Promise.all(requests)))
115
116
  console.log('took', new Date() - now, 'ms')
116
117
  }
@@ -1,5 +1,5 @@
1
1
  const path = require('path')
2
-
2
+ console.log(`worker ${process.pid} is running`, process.cwd())
3
3
  process.on('message', async (message) => {
4
4
  const { report, method, args } = message
5
5
  const _report = require(path.resolve(__dirname, `../${report}`))