diff --git a/test/e2e/v2/manager/task.go b/test/e2e/v2/manager/task.go index 258eff0c3e4..d1d587a9540 100644 --- a/test/e2e/v2/manager/task.go +++ b/test/e2e/v2/manager/task.go @@ -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{ @@ -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) @@ -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{ @@ -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 +}