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 const total = items.length
logger.info('Loading...') logger.info('Loading...')
const results = {}
let i = 1 let i = 1
let totalPrograms = 0
let config = require(file.resolve(items[0].configPath)) let config = require(file.resolve(items[0].configPath))
config = _.merge(config, { config = _.merge(config, {
debug: options.debug, debug: options.debug,
@ -48,7 +48,9 @@ async function main() {
const grabber = new EPGGrabber(config) const grabber = new EPGGrabber(config)
for (const item of items) { for (const item of items) {
const channel = new Channel(item.channel) const channel = new Channel(item.channel)
await grabber.grab(channel, item.date, async (data, err) => {
await new Promise(resolve => {
grabber.grab(channel, item.date, async (data, err) => {
logger.info( logger.info(
`[${i}/${total}] ${channel.site} (${channel.lang}) - ${channel.id} - ${dayjs `[${i}/${total}] ${channel.site} (${channel.lang}) - ${channel.id} - ${dayjs
.utc(data.date) .utc(data.date)
@ -65,13 +67,23 @@ async function main() {
await file.append(CLUSTER_PATH, JSON.stringify(result) + '\n') await file.append(CLUSTER_PATH, JSON.stringify(result) + '\n')
totalPrograms += data.programs.length
if (i < total) i++ if (i < total) i++
resolve()
})
}) })
} }
db.queue.compact() db.queue.compact()
logger.info(`Done in ${timer.format('HH[h] mm[m] ss[s]')}`) 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() main()

View file

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