Skip to content
Snippets Groups Projects
Select Git revision
  • 6ddf3e24e199d5c53d7ab061c1d35496d29135b9
  • master default protected
  • v1.23.2
  • v1.23.1
  • v1.23.0
  • v1.22.0
  • v1.21.1
  • v1.21.0
  • v1.20.3
  • v1.20.2
  • v1.20.1
  • v1.20.0
  • v1.19.4
  • v1.19.3
  • v1.19.2
  • v1.19.1
  • v1.19.0
  • v1.18.2
  • v1.18.1
  • v1.18.0
  • v1.17.0
  • v1.16.1
22 results

release.nix

Blame
  • import_test.go 2.87 KiB
    package jobqueue
    
    import (
    	"github.com/stretchr/testify/assert"
    	"io/ioutil"
    	"os"
    	"testing"
    	"time"
    )
    
    func TestCreateJobAndSchedulerFromInput(t *testing.T) {
    	tests := []struct {
    		name      string
    		input     JobImport
    		wantJob   GenericJob
    		wantSched Scheduler
    		wantErr   bool
    	}{
    		{
    			name: "Shell Runnable and Interval Scheduler",
    			input: JobImport{
    				ID:         "1",
    				Priority:   1,
    				Timeout:    10 * time.Second,
    				MaxRetries: 3,
    				RetryDelay: 2 * time.Second,
    				Runnable: RunnableImport{
    					Type: "Shell",
    					Data: map[string]any{"ScriptPath": "script.sh"},
    				},
    				Scheduler: SchedulerImport{
    					Type:     "Interval",
    					Interval: 1 * time.Minute,
    				},
    			},
    			wantJob:   GenericJob(&Job[ShellResult]{ /* Initialization */ }),
    			wantSched: &IntervalScheduler{Interval: 1 * time.Minute},
    			wantErr:   false,
    		},
    		{
    			name: "Shell Runnable and Cron Scheduler",
    			input: JobImport{
    				ID:       "1",
    				Priority: 1,
    				Runnable: RunnableImport{
    					Type: "Shell",
    					Data: map[string]any{"ScriptPath": "script.sh"},
    				},
    				Scheduler: SchedulerImport{
    					Type: "Cron",
    					Spec: "*/5 * * * *",
    				},
    			},
    			wantJob:   GenericJob(&Job[ShellResult]{ /* Initialization */ }),
    			wantSched: &CronScheduler{ /* Initialization */ },
    			wantErr:   false,
    		},
    	}
    
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			gotJob, gotSchedule, err := CreateJobAndSchedulerFromImport(tt.input)
    
    			if (err != nil) != tt.wantErr {
    				t.Errorf("CreateJobAndSchedulerFromImport() error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    
    			assert.Equal(t, JobID(tt.input.ID), gotJob.GetID(), "Job ID mismatch")
    			assert.Equal(t, Priority(tt.input.Priority), gotJob.GetPriority(), "Job Priority mismatch")
    
    			assert.Equal(t, tt.input.Scheduler.Type, gotSchedule.GetType(), "Scheduler Type mismatch")
    
    		})
    	}
    }
    
    func TestReadJsonFile(t *testing.T) {
    	testContent := `[{"id": "1", "priority": 1}]`
    	tempFile, err := ioutil.TempFile("", "test.json")
    	if err != nil {
    		t.Fatal(err)
    	}
    	defer os.Remove(tempFile.Name())
    
    	if _, err := tempFile.Write([]byte(testContent)); err != nil {
    		t.Fatal(err)
    	}
    	tempFile.Close()
    
    	jobs, err := ReadJsonFile(tempFile.Name())
    	if err != nil {
    		t.Fatal(err)
    	}
    
    	if len(jobs) != 1 || jobs[0].ID != "1" || jobs[0].Priority != 1 {
    		t.Errorf("Expected job with ID '1' and priority 1, got %+v", jobs)
    	}
    }
    
    func TestReadYAMLFile(t *testing.T) {
    	testContent := `- id: "1"
      priority: 1
    `
    	tempFile, err := ioutil.TempFile("", "test.yaml")
    	if err != nil {
    		t.Fatal(err)
    	}
    	defer os.Remove(tempFile.Name())
    
    	if _, err := tempFile.Write([]byte(testContent)); err != nil {
    		t.Fatal(err)
    	}
    	tempFile.Close()
    
    	jobs, err := ReadYAMLFile(tempFile.Name())
    	if err != nil {
    		t.Fatal(err)
    	}
    
    	if len(jobs) != 1 || jobs[0].ID != "1" || jobs[0].Priority != 1 {
    		t.Errorf("Expected job with ID '1' and priority 1, got %+v", jobs)
    	}
    }