ソースを参照

Fix redundancy totalVideos stats

Chocobozzz 5 年 前
コミット
ebdb612458

+ 0 - 1
server/lib/schedulers/videos-redundancy-scheduler.ts

@@ -11,7 +11,6 @@ import { getServerActor } from '../../helpers/utils'
 import { sendCreateCacheFile, sendUpdateCacheFile } from '../activitypub/send'
 import { VideoModel } from '../../models/video/video'
 import { getVideoCacheFileActivityPubUrl } from '../activitypub/url'
-import { isTestInstance } from '../../helpers/core-utils'
 import { removeVideoRedundancy } from '../redundancy'
 
 export class VideosRedundancyScheduler extends AbstractScheduler {

+ 2 - 2
server/models/redundancy/video-redundancy.ts

@@ -286,8 +286,8 @@ export class VideoRedundancyModel extends Model<VideoRedundancyModel> {
       raw: true,
       attributes: [
         [ Sequelize.fn('COALESCE', Sequelize.fn('SUM', Sequelize.col('VideoFile.size')), '0'), 'totalUsed' ],
-        [ Sequelize.fn('COUNT', Sequelize.fn('DISTINCT', 'videoId')), 'totalVideos' ],
-        [ Sequelize.fn('COUNT', 'videoFileId'), 'totalVideoFiles' ]
+        [ Sequelize.fn('COUNT', Sequelize.fn('DISTINCT', Sequelize.col('videoId'))), 'totalVideos' ],
+        [ Sequelize.fn('COUNT', Sequelize.col('videoFileId')), 'totalVideoFiles' ]
       ],
       where: {
         strategy,

+ 16 - 5
server/tests/api/server/redundancy.ts

@@ -9,7 +9,7 @@ import {
   getFollowingListPaginationAndSort,
   getVideo,
   immutableAssign,
-  killallServers,
+  killallServers, makeGetRequest,
   root,
   ServerInfo,
   setAccessTokensToServers,
@@ -147,11 +147,22 @@ async function check2Webseeds (strategy: VideoRedundancyStrategy, videoUUID?: st
     }
   }
 
-  const files = await readdir(join(root(), 'test1', 'videos'))
-  expect(files).to.have.lengthOf(4)
+  for (const url of [ 'http://localhost:9001', 'http://localhost:9002' ]) {
+    await makeGetRequest({
+      url,
+      statusCodeExpected: 200,
+      path: '/static/webseed/' + videoUUID,
+      contentType: null
+    })
+  }
 
-  for (const resolution of [ 240, 360, 480, 720 ]) {
-    expect(files.find(f => f === `${videoUUID}-${resolution}.mp4`)).to.not.be.undefined
+  for (const directory of [ 'test1', 'test2' ]) {
+    const files = await readdir(join(root(), directory, 'videos'))
+    expect(files).to.have.length.at.least(4)
+
+    for (const resolution of [ 240, 360, 480, 720 ]) {
+      expect(files.find(f => f === `${videoUUID}-${resolution}.mp4`)).to.not.be.undefined
+    }
   }
 }
 

+ 5 - 5
server/tests/utils/requests/requests.ts

@@ -7,20 +7,20 @@ function makeGetRequest (options: {
   path: string,
   query?: any,
   token?: string,
-  statusCodeExpected?: number
+  statusCodeExpected?: number,
+  contentType?: string
 }) {
   if (!options.statusCodeExpected) options.statusCodeExpected = 400
+  if (options.contentType === undefined) options.contentType = 'application/json'
 
   const req = request(options.url)
     .get(options.path)
-    .set('Accept', 'application/json')
 
+  if (options.contentType) req.set('Accept', options.contentType)
   if (options.token) req.set('Authorization', 'Bearer ' + options.token)
   if (options.query) req.query(options.query)
 
-  return req
-    .expect('Content-Type', /json/)
-    .expect(options.statusCodeExpected)
+  return req.expect(options.statusCodeExpected)
 }
 
 function makeDeleteRequest (options: {