github.com/grafana/synthetic-monitoring-agent@v0.64.2/internal/scraper/scrape_clock_test.go (about)

     1  package scraper
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestScheduledScrapeClockUsesWallTime(t *testing.T) {
    12  	scheduledAt := time.Now().Add(-time.Hour)
    13  	wallStart := time.Now().Add(-time.Minute)
    14  	clock := scheduledScrapeClock(scheduledAt)
    15  
    16  	wrapperTimestamp := fmt.Sprint(clock.wrapperLogTimestamp()())
    17  	parsedTimestamp, err := time.Parse(time.RFC3339Nano, wrapperTimestamp)
    18  	require.NoError(t, err)
    19  	require.WithinDuration(t, time.Now().UTC(), parsedTimestamp, time.Second)
    20  	require.Empty(t, clock.endLogFields(0.25))
    21  	require.Greater(t, clock.fallbackDuration(wallStart), 59*time.Minute)
    22  }
    23  
    24  func TestLogicalScrapeClockUsesEventTime(t *testing.T) {
    25  	eventTime := time.Date(2020, 3, 1, 12, 0, 0, 0, time.UTC)
    26  	wallStart := time.Now().Add(-time.Minute)
    27  	clock := logicalScrapeClock(eventTime)
    28  
    29  	require.Equal(t, eventTime.Format(time.RFC3339Nano), fmt.Sprint(clock.wrapperLogTimestamp()()))
    30  	require.Equal(t, []any{
    31  		"time", eventTime.Add(250 * time.Millisecond).Format(time.RFC3339Nano),
    32  	}, clock.endLogFields(0.25))
    33  	require.Less(t, clock.fallbackDuration(wallStart), 2*time.Minute)
    34  }