Skip to content

Commit

Permalink
feat: migrate check logic to checkTaskResponse.
Browse files Browse the repository at this point in the history
Signed-off-by: Asklv <[email protected]>
  • Loading branch information
IRONICBo committed Sep 23, 2024
1 parent ac2ae76 commit 2651b89
Showing 1 changed file with 120 additions and 118 deletions.
238 changes: 120 additions & 118 deletions test/e2e/v2/manager/task.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,37 +101,9 @@ var _ = Describe("GetTask and DeleteTask with Manager", func() {
done = waitForDone(job, managerPod)
Expect(done).Should(BeTrue())

// Check get task response is not null.
Expect(job.Result).NotTo(BeNil())
groupJobStateData, err := json.Marshal(job.Result)
Expect(err).NotTo(HaveOccurred())
groupJobState := internaljob.GroupJobState{}
err = json.Unmarshal(groupJobStateData, &groupJobState)
Expect(err).NotTo(HaveOccurred())
Expect(len(groupJobState.JobStates)).Should(BeNumerically("==", 3))

// Check get task response is valid.
foundValidResult := false
for _, state := range groupJobState.JobStates {
for _, result := range state.Results {
resultData, err := json.Marshal(result)
Expect(err).NotTo(HaveOccurred())

getTaskResponse := internaljob.GetTaskResponse{}
err = json.Unmarshal(resultData, &getTaskResponse)
Expect(err).NotTo(HaveOccurred())

if len(getTaskResponse.Peers) > 0 {
foundValidResult = true
break
}
}

if foundValidResult {
break
}
}
Expect(foundValidResult).To(BeTrue())
isValid := checkTaskResponse(job)
Expect(isValid).To(BeTrue())

// Delete task.
req, err = structure.StructToMap(types.CreateDeleteTaskJobRequest{
Expand All @@ -155,37 +127,9 @@ var _ = Describe("GetTask and DeleteTask with Manager", func() {
done = waitForDone(job, managerPod)
Expect(done).Should(BeTrue())

// Check delete task response is not null.
Expect(job.Result).NotTo(BeNil())
groupJobStateData, err = json.Marshal(job.Result)
Expect(err).NotTo(HaveOccurred())
groupJobState = internaljob.GroupJobState{}
err = json.Unmarshal(groupJobStateData, &groupJobState)
Expect(err).NotTo(HaveOccurred())
Expect(len(groupJobState.JobStates)).Should(BeNumerically("==", 3))

// Check delete task response is valid.
foundValidResult = false
for _, state := range groupJobState.JobStates {
for _, result := range state.Results {
resultData, err := json.Marshal(result)
Expect(err).NotTo(HaveOccurred())

deleteTaskResponse := internaljob.DeleteTaskResponse{}
err = json.Unmarshal(resultData, &deleteTaskResponse)
Expect(err).NotTo(HaveOccurred())

if len(deleteTaskResponse.SuccessTasks) > 0 || len(deleteTaskResponse.FailureTasks) > 0 {
foundValidResult = true
break
}
}

if foundValidResult {
break
}
}
Expect(foundValidResult).To(BeTrue())
isValid = checkTaskResponse(job)
Expect(isValid).To(BeTrue())

// Check file is deleted successfully.
exist := util.CheckFilesExist(seedClientPods, fileMetadata.ID)
Expand Down Expand Up @@ -263,37 +207,9 @@ var _ = Describe("GetTask and DeleteTask with Manager", func() {
done = waitForDone(job, managerPod)
Expect(done).Should(BeTrue())

// Check get task response is not null.
Expect(job.Result).NotTo(BeNil())
groupJobStateData, err := json.Marshal(job.Result)
Expect(err).NotTo(HaveOccurred())
groupJobState := internaljob.GroupJobState{}
err = json.Unmarshal(groupJobStateData, &groupJobState)
Expect(err).NotTo(HaveOccurred())
Expect(len(groupJobState.JobStates)).Should(BeNumerically("==", 3))

// Check get task response is valid.
foundValidResult := false
for _, state := range groupJobState.JobStates {
for _, result := range state.Results {
resultData, err := json.Marshal(result)
Expect(err).NotTo(HaveOccurred())

getTaskResponse := internaljob.GetTaskResponse{}
err = json.Unmarshal(resultData, &getTaskResponse)
Expect(err).NotTo(HaveOccurred())

if len(getTaskResponse.Peers) > 0 {
foundValidResult = true
break
}
}

if foundValidResult {
break
}
}
Expect(foundValidResult).To(BeTrue())
isValid := checkTaskResponse(job)
Expect(isValid).To(BeTrue())

// Delete task.
req, err = structure.StructToMap(types.CreateDeleteTaskJobRequest{
Expand All @@ -317,41 +233,127 @@ var _ = Describe("GetTask and DeleteTask with Manager", func() {
done = waitForDone(job, managerPod)
Expect(done).Should(BeTrue())

// Check delete task response is not null.
Expect(job.Result).NotTo(BeNil())
groupJobStateData, err = json.Marshal(job.Result)
Expect(err).NotTo(HaveOccurred())
groupJobState = internaljob.GroupJobState{}
err = json.Unmarshal(groupJobStateData, &groupJobState)
// Check delete task response is valid.
isValid = checkTaskResponse(job)
Expect(isValid).To(BeTrue())

// Check file is deleted successfully.
exist := util.CheckFilesExist(seedClientPods, fileMetadata.ID)
Expect(exist).Should(BeFalse())
})
})

Context("/bin/time file", Label("getTask", "deleteTask", "file"), func() {
It("getTask and deleteTask should be failed", func() {
managerPod, err := util.ManagerExec(0)
fmt.Println(err)
Expect(err).NotTo(HaveOccurred())
Expect(len(groupJobState.JobStates)).Should(BeNumerically("==", 3))

// Check delete task response is valid.
foundValidResult = false
for _, state := range groupJobState.JobStates {
for _, result := range state.Results {
resultData, err := json.Marshal(result)
Expect(err).NotTo(HaveOccurred())

deleteTaskResponse := internaljob.DeleteTaskResponse{}
err = json.Unmarshal(resultData, &deleteTaskResponse)
Expect(err).NotTo(HaveOccurred())

if len(deleteTaskResponse.SuccessTasks) > 0 || len(deleteTaskResponse.FailureTasks) > 0 {
foundValidResult = true
break
}
}
fileMetadata := util.FileMetadata{
ID: "d7704dffb62c1925c56c2ad4e04ba16daf266432eed43a59336e8bd6e71fab92",
Sha256: "7301b9b4c51a8f4d26c1af0da250f03a49ec8a8141033123e79196ad18f6c81b",
}

if foundValidResult {
break
}
seedClientPods := make([]*util.PodExec, 3)
for i := 0; i < 3; i++ {
seedClientPods[i], err = util.SeedClientExec(i)
fmt.Println(err)
Expect(err).NotTo(HaveOccurred())
}
Expect(foundValidResult).To(BeTrue())

// Check file is deleted successfully.
// Check the file is not exist.
exist := util.CheckFilesExist(seedClientPods, fileMetadata.ID)
Expect(exist).Should(BeFalse())

// Get task.
req, err := structure.StructToMap(types.CreateGetTaskJobRequest{
Type: internaljob.GetTaskJob,
Args: types.GetTaskArgs{
TaskID: fileMetadata.ID,
},
})
Expect(err).NotTo(HaveOccurred())
out, err := managerPod.CurlCommand("POST", map[string]string{"Content-Type": "application/json"}, req,
"http://127.0.0.1:8080/api/v1/jobs").CombinedOutput()
fmt.Println(err)
Expect(err).NotTo(HaveOccurred())
fmt.Println(string(out))

job := &models.Job{}
err = json.Unmarshal(out, job)
fmt.Println(err)
Expect(err).NotTo(HaveOccurred())

done := waitForDone(job, managerPod)
Expect(done).Should(BeTrue())

// Check get task response is invalid.
isValid := checkTaskResponse(job)
Expect(isValid).To(BeFalse())

// Delete task.
req, err = structure.StructToMap(types.CreateDeleteTaskJobRequest{
Type: internaljob.DeleteTaskJob,
Args: types.DeleteTaskArgs{
TaskID: fileMetadata.ID,
},
})
Expect(err).NotTo(HaveOccurred())
out, err = managerPod.CurlCommand("POST", map[string]string{"Content-Type": "application/json"}, req,
"http://127.0.0.1:8080/api/v1/jobs").CombinedOutput()
fmt.Println(err)
Expect(err).NotTo(HaveOccurred())
fmt.Println(string(out))

job = &models.Job{}
err = json.Unmarshal(out, job)
fmt.Println(err)
Expect(err).NotTo(HaveOccurred())

done = waitForDone(job, managerPod)
Expect(done).Should(BeTrue())

// Check delete task response is invalid.
isValid = checkTaskResponse(job)
Expect(isValid).To(BeFalse())
})
})
})

func checkTaskResponse(job *models.Job) bool {
// Check task response is not null.
Expect(job.Result).NotTo(BeNil())
groupJobStateData, err := json.Marshal(job.Result)
Expect(err).NotTo(HaveOccurred())
groupJobState := internaljob.GroupJobState{}
err = json.Unmarshal(groupJobStateData, &groupJobState)
Expect(err).NotTo(HaveOccurred())
Expect(len(groupJobState.JobStates)).Should(BeNumerically("==", 3))

// Check task response is valid.
for _, state := range groupJobState.JobStates {
for _, result := range state.Results {
resultData, err := json.Marshal(result)
Expect(err).NotTo(HaveOccurred())

switch job.Type {
case internaljob.GetTaskJob:
getTaskResponse := internaljob.GetTaskResponse{}
err = json.Unmarshal(resultData, &getTaskResponse)
Expect(err).NotTo(HaveOccurred())
if len(getTaskResponse.Peers) > 0 {
return true
}
case internaljob.DeleteTaskJob:
deleteTaskResponse := internaljob.DeleteTaskResponse{}
err = json.Unmarshal(resultData, &deleteTaskResponse)
Expect(err).NotTo(HaveOccurred())
if len(deleteTaskResponse.SuccessTasks) > 0 || len(deleteTaskResponse.FailureTasks) > 0 {
return true
}
}
}
}

return false
}

0 comments on commit 2651b89

Please sign in to comment.