[READ-ONLY] Mirror of https://github.com/FoxxMD/multi-scrobbler. Scrobble plays from multiple sources to multiple clients docs.multi-scrobbler.app
deezer docker jellyfin koito lastfm listenbrainz maloja mopidy mpris music music-assistant plex scrobble self-hosted spotify subsonic tautulli youtube-music
0

Configure Feed

Select the types of activity you want to include in your feed.

test(database): Add 10k size stats

FoxxMD (May 12, 2026, 2:52 PM UTC) 51b7b3fd c22867a9

+31 -4
+31 -4
src/backend/tests/database/drizzle.test.ts
··· 14 14 import { fixtureCreateComponent, fixtureCreateInput, fixtureCreatePlay } from '../utils/databaseFixtures.js'; 15 15 import { DrizzlePlayRepository, RepositoryCreatePlayOpts } from '../../common/database/drizzle/repositories/PlayRepository.js'; 16 16 import { generatePlayWithLifecycle, generateRandomObj } from '../../../core/tests/utils/fixtures.js'; 17 - import { generateArray } from '../../../core/DataUtils.js'; 17 + import { formatNumber, generateArray } from '../../../core/DataUtils.js'; 18 18 import { objectsEqual } from '../../utils/DataUtils.js'; 19 19 import { eq, sql } from 'drizzle-orm'; 20 20 import { PlaySelect } from '../../common/database/drizzle/drizzleTypes.js'; ··· 577 577 578 578 it('get db plays size stats', async function () { 579 579 580 + this.timeout(10000); 581 + 580 582 await withLocalTmpDir(async () => { 581 583 try { 582 584 let db = getDb('ms', { workingDirectory: process.cwd() }); ··· 593 595 const morePlayData = generateArray<RepositoryCreatePlayOpts>(900, () => ({ ...fixtureCreatePlay({ componentId: component[0].id, play: generatePlay() }), state: 'queued', input: { data: undefined }})); 594 596 await playRepo.createPlays(morePlayData); 595 597 const Play1000Component = await fs.stat(path.resolve('./ms.db')); 596 - loggerDebug.debug(`1000 Plays => ${Play1000Component.size / 1024}kb`); 598 + loggerDebug.debug(`1000 Plays => ${formatNumber(Play1000Component.size / 1024 / 1024, {toFixed: 2})}mb`); 599 + 600 + for(let i = 0; i < 9; i++) { 601 + const evenMorePlayData = generateArray<RepositoryCreatePlayOpts>(1000, () => ({ ...fixtureCreatePlay({ componentId: component[0].id, play: generatePlay() }), state: 'queued', input: { data: undefined }})); 602 + await playRepo.createPlays(evenMorePlayData); 603 + } 604 + const Play10000Component = await fs.stat(path.resolve('./ms.db')); 605 + loggerDebug.debug(`10000 Plays => ${formatNumber(Play10000Component.size / 1024 / 1024, {toFixed: 2})}mb`); 597 606 } catch (e) { 598 607 throw e; 599 608 } ··· 601 610 }); 602 611 603 612 it('get db plays size stats with input', async function () { 613 + 614 + this.timeout(10000); 604 615 605 616 await withLocalTmpDir(async () => { 606 617 try { ··· 618 629 const morePlayData = generateArray<RepositoryCreatePlayOpts>(900, () => ({ ...fixtureCreatePlay({ componentId: component[0].id, play: generatePlay() }), state: 'queued', input: { data: generateRandomObj(undefined, { allowUndefined: false }) } })); 619 630 await playRepo.createPlays(morePlayData); 620 631 const Play1000Component = await fs.stat(path.resolve('./ms.db')); 621 - loggerDebug.debug(`1000 Plays => ${Play1000Component.size / 1024}kb`); 632 + loggerDebug.debug(`1000 Plays => ${formatNumber(Play1000Component.size / 1024 / 1024, {toFixed: 2})}mb`); 633 + 634 + for(let i = 0; i < 9; i++) { 635 + const evenMorePlayData = generateArray<RepositoryCreatePlayOpts>(1000, () => ({ ...fixtureCreatePlay({ componentId: component[0].id, play: generatePlay() }), state: 'queued', input: { data: generateRandomObj(undefined, { allowUndefined: false }) } })); 636 + await playRepo.createPlays(evenMorePlayData); 637 + } 638 + const Play10000Component = await fs.stat(path.resolve('./ms.db')); 639 + loggerDebug.debug(`10000 Plays => ${formatNumber(Play10000Component.size / 1024 / 1024, {toFixed: 2})}mb`); 622 640 } catch (e) { 623 641 throw e; 624 642 } ··· 626 644 }); 627 645 628 646 it('get db plays size stats with input and lifecycle', async function () { 647 + 648 + this.timeout(10000); 629 649 630 650 await withLocalTmpDir(async () => { 631 651 try { ··· 643 663 const morePlayData = generateArray<RepositoryCreatePlayOpts>(900, () => ({ ...fixtureCreatePlay({ componentId: component[0].id, play: generatePlayWithLifecycle({lifecycleSteps: {preCompare: 1}}) }), state: 'queued', input: { data: generateRandomObj(undefined, { allowUndefined: false }) } })); 644 664 await playRepo.createPlays(morePlayData); 645 665 const Play1000Component = await fs.stat(path.resolve('./ms.db')); 646 - loggerDebug.debug(`1000 Plays => ${Play1000Component.size / 1024}kb`); 666 + loggerDebug.debug(`1000 Plays => ${formatNumber(Play1000Component.size / 1024 / 1024, {toFixed: 2})}mb`); 667 + 668 + for(let i = 0; i < 9; i++) { 669 + const evenMorePlayData = generateArray<RepositoryCreatePlayOpts>(1000, () => ({ ...fixtureCreatePlay({ componentId: component[0].id, play: generatePlayWithLifecycle({lifecycleSteps: {preCompare: 1}}) }), state: 'queued', input: { data: generateRandomObj(undefined, { allowUndefined: false }) } })); 670 + await playRepo.createPlays(evenMorePlayData); 671 + } 672 + const Play10000Component = await fs.stat(path.resolve('./ms.db')); 673 + loggerDebug.debug(`10000 Plays => ${formatNumber(Play10000Component.size / 1024 / 1024, {toFixed: 2})}mb`); 647 674 } catch (e) { 648 675 throw e; 649 676 }