mirror of
				https://github.com/datarhei/core.git
				synced 2025-10-31 11:26:52 +08:00 
			
		
		
		
	 b63b23527b
			
		
	
	b63b23527b
	
	
	
		
			
			The scheduler allows to define when a process should run. It can be either a timestamp in RFC3339 format or a crontab expression. If a scheduler is given, reconnect and the reconnect delay will only apply to processes that exited as failed. The timeout allows to define when a process should be gracefully stopped. It is measured from the actual start of that process including all reconnects due to failures. If the process finished regularly, the timeout will be reset.
		
			
				
	
	
		
			46 lines
		
	
	
		
			955 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			955 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package process
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/stretchr/testify/require"
 | |
| )
 | |
| 
 | |
| func TestSchedulerPointInTime(t *testing.T) {
 | |
| 	s, err := NewScheduler("2023-03-20T11:06:39Z")
 | |
| 	require.NoError(t, err)
 | |
| 
 | |
| 	p, err := time.Parse(time.RFC3339, "2023-03-20T11:05:39Z")
 | |
| 	require.NoError(t, err)
 | |
| 
 | |
| 	d, err := s.NextAfter(p)
 | |
| 	require.NoError(t, err)
 | |
| 	require.Equal(t, time.Minute, d)
 | |
| 
 | |
| 	p, err = time.Parse(time.RFC3339, "2023-03-20T11:07:39Z")
 | |
| 	require.NoError(t, err)
 | |
| 
 | |
| 	_, err = s.NextAfter(p)
 | |
| 	require.Error(t, err)
 | |
| }
 | |
| 
 | |
| func TestSchedulerCron(t *testing.T) {
 | |
| 	s, err := NewScheduler("* * * * *")
 | |
| 	require.NoError(t, err)
 | |
| 
 | |
| 	sc := s.(*scheduler)
 | |
| 	require.True(t, sc.isCron)
 | |
| 
 | |
| 	p, err := time.Parse(time.RFC3339, "2023-03-20T11:05:39Z")
 | |
| 	require.NoError(t, err)
 | |
| 
 | |
| 	d, err := s.NextAfter(p)
 | |
| 	require.NoError(t, err)
 | |
| 	require.Equal(t, 21*time.Second, d)
 | |
| 
 | |
| 	d, err = s.NextAfter(p.Add(21 * time.Second))
 | |
| 	require.NoError(t, err)
 | |
| 	require.Equal(t, 60*time.Second, d)
 | |
| }
 |