summaryrefslogtreecommitdiffstats
path: root/model/scheduled_task_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'model/scheduled_task_test.go')
-rw-r--r--model/scheduled_task_test.go188
1 files changed, 188 insertions, 0 deletions
diff --git a/model/scheduled_task_test.go b/model/scheduled_task_test.go
new file mode 100644
index 000000000..6ba8edaf9
--- /dev/null
+++ b/model/scheduled_task_test.go
@@ -0,0 +1,188 @@
+// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package model
+
+import (
+ "testing"
+ "time"
+)
+
+func TestCreateTask(t *testing.T) {
+ TASK_NAME := "Test Task"
+ TASK_TIME := time.Second * 3
+
+ testValue := 0
+ testFunc := func() {
+ testValue = 1
+ }
+
+ task := CreateTask(TASK_NAME, testFunc, TASK_TIME)
+ if testValue != 0 {
+ t.Fatal("Unexpected execuition of task")
+ }
+
+ time.Sleep(TASK_TIME + time.Second)
+
+ if testValue != 1 {
+ t.Fatal("Task did not execute")
+ }
+
+ if task.Name != TASK_NAME {
+ t.Fatal("Bad name")
+ }
+
+ if task.Interval != TASK_TIME {
+ t.Fatal("Bad interval")
+ }
+
+ if task.Recurring != false {
+ t.Fatal("should not reccur")
+ }
+}
+
+func TestCreateRecurringTask(t *testing.T) {
+ TASK_NAME := "Test Recurring Task"
+ TASK_TIME := time.Second * 3
+
+ testValue := 0
+ testFunc := func() {
+ testValue += 1
+ }
+
+ task := CreateRecurringTask(TASK_NAME, testFunc, TASK_TIME)
+ if testValue != 0 {
+ t.Fatal("Unexpected execuition of task")
+ }
+
+ time.Sleep(TASK_TIME + time.Second)
+
+ if testValue != 1 {
+ t.Fatal("Task did not execute")
+ }
+
+ time.Sleep(TASK_TIME)
+
+ if testValue != 2 {
+ t.Fatal("Task did not re-execute")
+ }
+
+ if task.Name != TASK_NAME {
+ t.Fatal("Bad name")
+ }
+
+ if task.Interval != TASK_TIME {
+ t.Fatal("Bad interval")
+ }
+
+ if task.Recurring != true {
+ t.Fatal("should reccur")
+ }
+
+ task.Cancel()
+}
+
+func TestCancelTask(t *testing.T) {
+ TASK_NAME := "Test Task"
+ TASK_TIME := time.Second * 3
+
+ testValue := 0
+ testFunc := func() {
+ testValue = 1
+ }
+
+ task := CreateTask(TASK_NAME, testFunc, TASK_TIME)
+ if testValue != 0 {
+ t.Fatal("Unexpected execuition of task")
+ }
+ task.Cancel()
+
+ time.Sleep(TASK_TIME + time.Second)
+
+ if testValue != 0 {
+ t.Fatal("Unexpected execuition of task")
+ }
+}
+
+func TestGetAllTasks(t *testing.T) {
+ doNothing := func() {}
+
+ CreateTask("Task1", doNothing, time.Hour)
+ CreateTask("Task2", doNothing, time.Second)
+ CreateRecurringTask("Task3", doNothing, time.Second)
+ task4 := CreateRecurringTask("Task4", doNothing, time.Second)
+
+ task4.Cancel()
+
+ time.Sleep(time.Second * 3)
+
+ tasks := *GetAllTasks()
+ if len(tasks) != 2 {
+ t.Fatal("Wrong number of tasks got: ", len(tasks))
+ }
+ for _, task := range tasks {
+ if task.Name != "Task1" && task.Name != "Task3" {
+ t.Fatal("Wrong tasks")
+ }
+ }
+}
+
+func TestExecuteTask(t *testing.T) {
+ TASK_NAME := "Test Task"
+ TASK_TIME := time.Second * 5
+
+ testValue := 0
+ testFunc := func() {
+ testValue += 1
+ }
+
+ task := CreateTask(TASK_NAME, testFunc, TASK_TIME)
+ if testValue != 0 {
+ t.Fatal("Unexpected execuition of task")
+ }
+
+ task.Execute()
+
+ if testValue != 1 {
+ t.Fatal("Task did not execute")
+ }
+
+ time.Sleep(TASK_TIME + time.Second)
+
+ if testValue != 2 {
+ t.Fatal("Task re-executed")
+ }
+}
+
+func TestExecuteTaskRecurring(t *testing.T) {
+ TASK_NAME := "Test Recurring Task"
+ TASK_TIME := time.Second * 5
+
+ testValue := 0
+ testFunc := func() {
+ testValue += 1
+ }
+
+ task := CreateRecurringTask(TASK_NAME, testFunc, TASK_TIME)
+ if testValue != 0 {
+ t.Fatal("Unexpected execuition of task")
+ }
+
+ time.Sleep(time.Second * 3)
+
+ task.Execute()
+ if testValue != 1 {
+ t.Fatal("Task did not execute")
+ }
+
+ time.Sleep(time.Second * 3)
+ if testValue != 1 {
+ t.Fatal("Task should not have executed before 5 seconds")
+ }
+
+ time.Sleep(time.Second * 3)
+
+ if testValue != 2 {
+ t.Fatal("Task did not re-execute after forced execution")
+ }
+}