Skip to content

Commit

Permalink
Merge pull request #881 from wakatime/misc/test-backoff-logging
Browse files Browse the repository at this point in the history
Add tests for backoff logging
  • Loading branch information
alanhamlett authored May 8, 2023
2 parents e7009af + 1d930a4 commit 9ded0dd
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 132 deletions.
128 changes: 0 additions & 128 deletions CODE_OF_CONDUCT.md

This file was deleted.

8 changes: 4 additions & 4 deletions cmd/heartbeat/heartbeat_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -753,7 +753,7 @@ func TestSendHeartbeats_ErrAuth_UnsetAPIKey(t *testing.T) {
}

func TestSendHeartbeats_ErrBackoff(t *testing.T) {
_, router, tearDown := setupTestServer()
testServerURL, router, tearDown := setupTestServer()
defer tearDown()

var numCalls int
Expand All @@ -777,7 +777,7 @@ func TestSendHeartbeats_ErrBackoff(t *testing.T) {
v.Set("internal.backoff_at", time.Now().Add(10*time.Minute).Format(ini.DateFormat))
v.Set("internal.backoff_retries", "1")
v.SetDefault("sync-offline-activity", 1000)
v.Set("api-url", "https://example.org")
v.Set("api-url", testServerURL)
v.Set("entity", "testdata/main.go")
v.Set("entity-type", "file")
v.Set("key", "00000000-0000-4000-8000-000000000000")
Expand Down Expand Up @@ -817,7 +817,7 @@ func TestSendHeartbeats_ErrBackoff(t *testing.T) {
}

func TestSendHeartbeats_ErrBackoff_Verbose(t *testing.T) {
_, router, tearDown := setupTestServer()
testServerURL, router, tearDown := setupTestServer()
defer tearDown()

var numCalls int
Expand All @@ -841,7 +841,7 @@ func TestSendHeartbeats_ErrBackoff_Verbose(t *testing.T) {
v.Set("internal.backoff_at", time.Now().Add(10*time.Minute).Format(ini.DateFormat))
v.Set("internal.backoff_retries", "1")
v.SetDefault("sync-offline-activity", 1000)
v.Set("api-url", "https://example.org")
v.Set("api-url", testServerURL)
v.Set("entity", "testdata/main.go")
v.Set("entity-type", "file")
v.Set("key", "00000000-0000-4000-8000-000000000000")
Expand Down
108 changes: 108 additions & 0 deletions cmd/run_internal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,13 @@ import (
"net/http"
"net/http/httptest"
"os"
"runtime"
"testing"
"time"

cmdheartbeat "github.com/wakatime/wakatime-cli/cmd/heartbeat"
"github.com/wakatime/wakatime-cli/pkg/exitcode"
"github.com/wakatime/wakatime-cli/pkg/ini"
"github.com/wakatime/wakatime-cli/pkg/version"

"github.com/spf13/viper"
Expand Down Expand Up @@ -95,6 +99,110 @@ func TestRunCmd_ErrOfflineEnqueue(t *testing.T) {
assert.Equal(t, exitcode.ErrGeneric, ret)
}

func TestRunCmd_BackoffLoggedWithVerbose(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip("Skipping because OS is windows.")
}

verbose := true

testServerURL, router, tearDown := setupTestServer()
defer tearDown()

var numCalls int

router.HandleFunc("/users/current/heartbeats.bulk", func(w http.ResponseWriter, _ *http.Request) {
numCalls++

w.WriteHeader(http.StatusCreated)
})

tmpDir := t.TempDir()

logFile, err := os.CreateTemp(tmpDir, "")
require.NoError(t, err)

defer logFile.Close()

entity, err := os.CreateTemp(tmpDir, "")
require.NoError(t, err)

defer entity.Close()

v := viper.New()
v.Set("api-url", testServerURL)
v.Set("entity", entity.Name())
v.Set("key", "00000000-0000-4000-8000-000000000000")
v.Set("log-file", logFile.Name())
v.Set("internal.backoff_at", time.Now().Add(10*time.Minute).Format(ini.DateFormat))
v.Set("internal.backoff_retries", "1")
v.Set("verbose", verbose)

SetupLogging(v)

exitCode := runCmd(v, verbose, false, cmdheartbeat.Run)
assert.Equal(t, exitcode.ErrBackoff, exitCode)

assert.Equal(t, 0, numCalls)

output, err := io.ReadAll(logFile)
require.NoError(t, err)

assert.Contains(t, string(output), "failed to run command: sending heartbeat")
}

func TestRunCmd_BackoffNotLogged(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip("Skipping because OS is windows.")
}

verbose := false

testServerURL, router, tearDown := setupTestServer()
defer tearDown()

var numCalls int

router.HandleFunc("/users/current/heartbeats.bulk", func(w http.ResponseWriter, _ *http.Request) {
numCalls++

w.WriteHeader(http.StatusCreated)
})

tmpDir := t.TempDir()

logFile, err := os.CreateTemp(tmpDir, "")
require.NoError(t, err)

defer logFile.Close()

entity, err := os.CreateTemp(tmpDir, "")
require.NoError(t, err)

defer entity.Close()

v := viper.New()
v.Set("api-url", testServerURL)
v.Set("entity", entity.Name())
v.Set("key", "00000000-0000-4000-8000-000000000000")
v.Set("log-file", logFile.Name())
v.Set("internal.backoff_at", time.Now().Add(10*time.Minute).Format(ini.DateFormat))
v.Set("internal.backoff_retries", "1")
v.Set("verbose", verbose)

SetupLogging(v)

exitCode := runCmd(v, verbose, false, cmdheartbeat.Run)
assert.Equal(t, exitcode.ErrBackoff, exitCode)

assert.Equal(t, 0, numCalls)

output, err := io.ReadAll(logFile)
require.NoError(t, err)

assert.Empty(t, string(output))
}

func TestParseConfigFiles(t *testing.T) {
v := viper.New()
v.Set("config", "testdata/.wakatime.cfg")
Expand Down

0 comments on commit 9ded0dd

Please sign in to comment.