Skip to content

Commit

Permalink
Fix handle down test
Browse files Browse the repository at this point in the history
  • Loading branch information
Chocobozzz committed Jul 31, 2018
1 parent 6104adc commit cc6373e
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 36 deletions.
19 changes: 18 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,27 @@
# Changelog

## v1.0.0-beta.10.pre.3

**See the v1.0.0-beta.10.pre.1 changelog, in particular how to upgrade**

### Bug fixes (from beta.10.pre.2)

* Try to fix the infinite creation of Delete actor jobs by deleting kue migration
* Cleanup SQL indexes
* Try to optimize SQL search query
* Try to optimize videos list SQL query
* Add more logs and fix logger when having an error
* Move subscription helper in the account line in video watch page
* Fix responsive on videos search
* Refresh orphan actors
* Don't send a follow request if the follow was already accepted


## v1.0.0-beta.10.pre.2

**See the v1.0.0-beta.10.pre.1 changelog, in particular how to upgrade**

### Bug fixes
### Bug fixes (from beta.10.pre.1)

* Fix captions/subtitles freeze in player
* Fix attribute label width in video watch page
Expand Down
93 changes: 58 additions & 35 deletions server/tests/api/server/handle-down.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import * as chai from 'chai'
import 'mocha'
import { JobState } from '../../../../shared/models'
import { JobState, Video } from '../../../../shared/models'
import { VideoPrivacy } from '../../../../shared/models/videos'
import { VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
import { completeVideoCheck, getVideo, immutableAssign, reRunServer, viewVideo } from '../../utils'
import { completeVideoCheck, getVideo, immutableAssign, reRunServer, unfollow, viewVideo } from '../../utils'
import {
flushAndRunMultipleServers,
getVideosList,
Expand All @@ -28,11 +28,13 @@ const expect = chai.expect

describe('Test handle downs', function () {
let servers: ServerInfo[] = []
const videos = []
let threadIdServer1: number
let threadIdServer2: number
let commentIdServer1: number
let commentIdServer2: number
let missedVideo1: Video
let missedVideo2: Video
let unlistedVideo: Video

const videoAttributes = {
name: 'my super name for server 1',
Expand Down Expand Up @@ -89,7 +91,7 @@ describe('Test handle downs', function () {
before(async function () {
this.timeout(30000)

servers = await flushAndRunMultipleServers(2)
servers = await flushAndRunMultipleServers(3)

// Get the access tokens
await setAccessTokensToServers(servers)
Expand All @@ -98,57 +100,70 @@ describe('Test handle downs', function () {
it('Should remove followers that are often down', async function () {
this.timeout(60000)

// Server 2 and 3 follow server 1
await follow(servers[1].url, [ servers[0].url ], servers[1].accessToken)
await follow(servers[2].url, [ servers[0].url ], servers[2].accessToken)

await waitJobs(servers)

// Upload a video to server 1
await uploadVideo(servers[0].url, servers[0].accessToken, videoAttributes)

await waitJobs(servers)

// And check all servers have this video
for (const server of servers) {
const res = await getVideosList(server.url)
expect(res.body.data).to.be.an('array')
expect(res.body.data).to.have.lengthOf(1)
}

// Kill server 1
// Kill server 2
killallServers([ servers[1] ])

let resVideo = await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, unlistedVideoAttributes)
videos.push(resVideo.body.video)

// Remove server 2 follower
for (let i = 0; i < 10; i++) {
resVideo = await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, videoAttributes)
videos.push(resVideo.body.video)
await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, videoAttributes)
}

await waitJobs(servers[0])

await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, videoAttributes)
// Kill server 3
killallServers([ servers[2] ])

const resLastVideo1 = await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, videoAttributes)
missedVideo1 = resLastVideo1.body.video

const resLastVideo2 = await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, videoAttributes)
missedVideo2 = resLastVideo2.body.video

// Unlisted video
let resVideo = await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, unlistedVideoAttributes)
unlistedVideo = resVideo.body.video

// Add comments to video 2
{
const text = 'thread 1'
let resComment = await addVideoCommentThread(servers[0].url, servers[0].accessToken, videos[1].uuid, text)
let resComment = await addVideoCommentThread(servers[0].url, servers[0].accessToken, missedVideo2.uuid, text)
let comment = resComment.body.comment
threadIdServer1 = comment.id

resComment = await addVideoCommentReply(servers[0].url, servers[0].accessToken, videos[1].uuid, comment.id, 'comment 1-1')
resComment = await addVideoCommentReply(servers[0].url, servers[0].accessToken, missedVideo2.uuid, comment.id, 'comment 1-1')
comment = resComment.body.comment

resComment = await addVideoCommentReply(servers[0].url, servers[0].accessToken, videos[1].uuid, comment.id, 'comment 1-2')
resComment = await addVideoCommentReply(servers[0].url, servers[0].accessToken, missedVideo2.uuid, comment.id, 'comment 1-2')
commentIdServer1 = resComment.body.comment.id
}

await waitJobs(servers[0])
// Wait scheduler
await wait(11000)

const res = await getFollowersListPaginationAndSort(servers[0].url, 0, 1, 'createdAt')
// Only server 3 is still a follower of server 1
const res = await getFollowersListPaginationAndSort(servers[0].url, 0, 2, 'createdAt')
expect(res.body.data).to.be.an('array')
expect(res.body.data).to.have.lengthOf(0)
expect(res.body.data).to.have.lengthOf(1)
expect(res.body.data[0].follower.host).to.equal('localhost:9003')
})

it('Should not have pending/processing jobs anymore', async function () {
Expand All @@ -160,58 +175,66 @@ describe('Test handle downs', function () {
}
})

it('Should follow server 1', async function () {
it('Should re-follow server 1', async function () {
this.timeout(15000)

await reRunServer(servers[1])
await reRunServer(servers[2])

await unfollow(servers[1].url, servers[1].accessToken, servers[0])
await waitJobs(servers)

await follow(servers[1].url, [ servers[0].url ], servers[1].accessToken)

await waitJobs(servers)

const res = await getFollowersListPaginationAndSort(servers[0].url, 0, 1, 'createdAt')
const res = await getFollowersListPaginationAndSort(servers[0].url, 0, 2, 'createdAt')
expect(res.body.data).to.be.an('array')
expect(res.body.data).to.have.lengthOf(1)
expect(res.body.data).to.have.lengthOf(2)
})

it('Should send a view to server 2, and automatically fetch the video', async function () {
it('Should send a view to server 3, and automatically fetch the video', async function () {
this.timeout(15000)

await viewVideo(servers[0].url, videos[0].uuid)
const res1 = await getVideosList(servers[2].url)
expect(res1.body.data).to.be.an('array')
expect(res1.body.data).to.have.lengthOf(11)

await viewVideo(servers[0].url, missedVideo1.uuid)
await viewVideo(servers[0].url, unlistedVideo.uuid)

await waitJobs(servers)

const res = await getVideosList(servers[1].url)
const res = await getVideosList(servers[2].url)
expect(res.body.data).to.be.an('array')
// Video is unlisted
expect(res.body.data).to.have.lengthOf(1)
// 1 video is unlisted
expect(res.body.data).to.have.lengthOf(12)

const resVideo = await getVideo(servers[1].url, videos[0].uuid)
// Check unlisted video
const resVideo = await getVideo(servers[2].url, unlistedVideo.uuid)
expect(resVideo.body).not.to.be.undefined

await completeVideoCheck(servers[1].url, resVideo.body, unlistedCheckAttributes)
await completeVideoCheck(servers[2].url, resVideo.body, unlistedCheckAttributes)
})

it('Should send comments on a video to server 2, and automatically fetch the video', async function () {
it('Should send comments on a video to server 3, and automatically fetch the video', async function () {
this.timeout(25000)

await addVideoCommentReply(servers[0].url, servers[0].accessToken, videos[1].uuid, commentIdServer1, 'comment 1-3')
await addVideoCommentReply(servers[0].url, servers[0].accessToken, missedVideo2.uuid, commentIdServer1, 'comment 1-3')

await waitJobs(servers)

const resVideo = await getVideo(servers[1].url, videos[0].uuid)
const resVideo = await getVideo(servers[2].url, missedVideo2.uuid)
expect(resVideo.body).not.to.be.undefined

await completeVideoCheck(servers[1].url, resVideo.body, unlistedCheckAttributes)

{
let resComment = await getVideoCommentThreads(servers[1].url, videos[1].uuid, 0, 5)
let resComment = await getVideoCommentThreads(servers[2].url, missedVideo2.uuid, 0, 5)
expect(resComment.body.data).to.be.an('array')
expect(resComment.body.data).to.have.lengthOf(1)

threadIdServer2 = resComment.body.data[0].id

resComment = await getVideoThreadComments(servers[1].url, videos[1].uuid, threadIdServer2)
resComment = await getVideoThreadComments(servers[2].url, missedVideo2.uuid, threadIdServer2)

const tree: VideoCommentThreadTree = resComment.body
expect(tree.comment.text).equal('thread 1')
Expand All @@ -236,12 +259,12 @@ describe('Test handle downs', function () {
it('Should correctly reply to the comment', async function () {
this.timeout(15000)

await addVideoCommentReply(servers[1].url, servers[1].accessToken, videos[1].uuid, commentIdServer2, 'comment 1-4')
await addVideoCommentReply(servers[2].url, servers[2].accessToken, missedVideo2.uuid, commentIdServer2, 'comment 1-4')

await waitJobs(servers)

{
const resComment = await getVideoThreadComments(servers[0].url, videos[1].uuid, threadIdServer1)
const resComment = await getVideoThreadComments(servers[0].url, missedVideo2.uuid, threadIdServer1)

const tree: VideoCommentThreadTree = resComment.body
expect(tree.comment.text).equal('thread 1')
Expand Down

0 comments on commit cc6373e

Please sign in to comment.