Update cluster/load.js

Process will be terminated if programs not found
This commit is contained in:
Aleksandr Statciuk 2023-01-12 10:53:22 +03:00
parent ef6d151596
commit 67ef5aa13e
2 changed files with 41 additions and 24 deletions

View File

@ -35,8 +35,8 @@ async function main() {
const total = items.length
logger.info('Loading...')
const results = {}
let i = 1
let totalPrograms = 0
let config = require(file.resolve(items[0].configPath))
config = _.merge(config, {
debug: options.debug,
@ -48,30 +48,42 @@ async function main() {
const grabber = new EPGGrabber(config)
for (const item of items) {
const channel = new Channel(item.channel)
await grabber.grab(channel, item.date, async (data, err) => {
logger.info(
`[${i}/${total}] ${channel.site} (${channel.lang}) - ${channel.id} - ${dayjs
.utc(data.date)
.format('MMM D, YYYY')} (${data.programs.length} programs)`
)
if (err) logger.error(err.message)
await new Promise(resolve => {
grabber.grab(channel, item.date, async (data, err) => {
logger.info(
`[${i}/${total}] ${channel.site} (${channel.lang}) - ${channel.id} - ${dayjs
.utc(data.date)
.format('MMM D, YYYY')} (${data.programs.length} programs)`
)
const result = {
_qid: item._id,
programs: data.programs,
error: err ? err.message : null
}
if (err) logger.error(err.message)
await file.append(CLUSTER_PATH, JSON.stringify(result) + '\n')
const result = {
_qid: item._id,
programs: data.programs,
error: err ? err.message : null
}
if (i < total) i++
await file.append(CLUSTER_PATH, JSON.stringify(result) + '\n')
totalPrograms += data.programs.length
if (i < total) i++
resolve()
})
})
}
db.queue.compact()
logger.info(`Done in ${timer.format('HH[h] mm[m] ss[s]')}`)
if (totalPrograms === 0) {
logger.error('\nError: No programs found')
process.exit(1)
}
}
main()

View File

@ -5,17 +5,22 @@ const path = require('path')
beforeEach(() => {
fs.emptyDirSync('tests/__data__/output')
fs.copyFileSync('tests/__data__/input/database/queue.db', 'tests/__data__/output/queue.db')
execSync(
'DB_DIR=tests/__data__/output LOGS_DIR=tests/__data__/output/logs npm run cluster:load -- --cluster-id=1 --timeout=10000',
{ encoding: 'utf8' }
)
})
it('can load cluster', () => {
expect(content('tests/__data__/output/logs/cluster/load/cluster_1.log')).toEqual(
content('tests/__data__/expected/logs/cluster/load/cluster_1.log')
)
it('can load cluster and will terminate process if programs not found', () => {
try {
execSync(
'DB_DIR=tests/__data__/output LOGS_DIR=tests/__data__/output/logs npm run cluster:load -- --cluster-id=1 --timeout=10000',
{ encoding: 'utf8' }
)
process.exit(1)
} catch (err) {
expect(err.status).toBe(1)
expect(err.stdout.includes('Error: No programs found')).toBe(true)
expect(content('tests/__data__/output/logs/cluster/load/cluster_1.log')).toEqual(
content('tests/__data__/expected/logs/cluster/load/cluster_1.log')
)
}
})
function content(filepath) {