@@ -1825,6 +1825,56 @@ describe('e2e', function () {
18251825 } ) ;
18261826 } ) ;
18271827
1828+ describe ( 'with custom log retention max logs size' , function ( ) {
1829+ const customLogDir = useTmpdir ( ) ;
1830+
1831+ it ( 'should delete files once it is above the logs retention GB' , async function ( ) {
1832+ const globalConfig = path . join ( homedir , 'globalconfig.conf' ) ;
1833+ await fs . writeFile (
1834+ globalConfig ,
1835+ // Set logRetentionGB to 4 KB
1836+ `mongosh:\n logLocation: ${ JSON . stringify (
1837+ customLogDir . path
1838+ ) } \n logRetentionGB: ${ 4 / 1024 / 1024 } `
1839+ ) ;
1840+ const paths : string [ ] = [ ] ;
1841+ const offset = Math . floor ( Date . now ( ) / 1000 ) ;
1842+
1843+ // Create 10 log files, 1kb each
1844+ for ( let i = 9 ; i >= 0 ; i -- ) {
1845+ const filename = path . join (
1846+ customLogDir . path ,
1847+ ObjectId . createFromTime ( offset - i ) . toHexString ( ) + '_log'
1848+ ) ;
1849+ await fs . writeFile ( filename , '0' . repeat ( 1024 ) ) ;
1850+ paths . push ( filename ) ;
1851+ }
1852+
1853+ // All 10 existing log files exist.
1854+ expect ( await getFilesState ( paths ) ) . to . equal ( '1111111111' ) ;
1855+ shell = this . startTestShell ( {
1856+ args : [ '--nodb' ] ,
1857+ env,
1858+ globalConfigPath : globalConfig ,
1859+ forceTerminal : true ,
1860+ } ) ;
1861+
1862+ await shell . waitForPrompt ( ) ;
1863+
1864+ // Add the newly created log to the file list.
1865+ paths . push (
1866+ path . join ( customLogDir . path , `${ shell . logId as string } _log` )
1867+ ) ;
1868+
1869+ expect (
1870+ await shell . executeLine ( 'config.get("logRetentionGB")' )
1871+ ) . contains ( `${ 4 / 1024 / 1024 } ` ) ;
1872+
1873+ // Expect 6 files to be deleted and 5 to remain (including the new log file)
1874+ expect ( await getFilesState ( paths ) ) . to . equal ( '00000011111' ) ;
1875+ } ) ;
1876+ } ) ;
1877+
18281878 it ( 'creates a log file that keeps track of session events' , async function ( ) {
18291879 expect ( await shell . executeLine ( 'print(123 + 456)' ) ) . to . include ( '579' ) ;
18301880 const log = await readLogFile ( ) ;
0 commit comments