diff options
| author | Paul Buetow <paul@buetow.org> | 2025-10-27 23:36:49 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-10-27 23:36:49 +0200 |
| commit | 81d1550df55318beff8e9f762952a33daaa7c0cf (patch) | |
| tree | 897e3c044c8e3bf5c9d71d98345fde9a645e8c7a /internal/state_test.go | |
| parent | 6352e8c33c1c22af382093d406d477d1530950db (diff) | |
feat: Add randomSpread and RunInterval to checks
This commit introduces two new optional parameters to the check configuration:
- `randomSpread`: This parameter allows specifying a random sleep time up to N seconds before a check is executed. This is useful to avoid all checks running at the same time.
- `RunInterval`: This parameter defines the minimum interval in seconds between two executions of a check. This is useful if gogios is run more frequently than a specific check should be.
The `README.md` has been updated to document these new features.
fix: Fix deadlock when skipping checks
This commit also fixes a deadlock that occurred when a check was skipped due to the `RunInterval` setting. The `inputWg.Done()` was not being called, causing the main goroutine to wait forever.
build: Replace Taskfile with Magefile
The `Taskfile.yml` has been replaced with a `Magefile.go` to manage the build process. This provides more flexibility and is more idiomatic for Go projects.
Diffstat (limited to 'internal/state_test.go')
| -rw-r--r-- | internal/state_test.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/internal/state_test.go b/internal/state_test.go new file mode 100644 index 0000000..aacc023 --- /dev/null +++ b/internal/state_test.go @@ -0,0 +1,24 @@ +package internal + +import ( + "testing" + "time" +) + +func TestAge(t *testing.T) { + state := state{checks: make(map[string]checkState)} + + state.checks["Check Foo"] = checkState{Epoch: 0} + minAge := time.Duration(time.Now().Unix()) + + if reportedAge := state.age("Check Foo"); reportedAge < minAge { + t.Errorf("expected age >= %v, got %v", minAge, reportedAge) + } + + maxAge := time.Duration(time.Now().Unix()) + state.checks["Check Bar"] = checkState{Epoch: time.Now().Unix()} + + if reportedAge := state.age("Check Bar"); reportedAge >= minAge { + t.Errorf("expected age < %v, got %v", maxAge, reportedAge) + } +} |
