From b1e08ef231e188b0562fcb59ac24247156ef2250 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Fri, 24 Mar 2023 16:53:42 -0400 Subject: [PATCH] util: deadline: Add a simple test for deadline and testing This is a simple test/example placeholder if we want to remember how to run deadlines with contexts for testing. --- util/deadline/deadline_test.go | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 util/deadline/deadline_test.go diff --git a/util/deadline/deadline_test.go b/util/deadline/deadline_test.go new file mode 100644 index 00000000..bff16ceb --- /dev/null +++ b/util/deadline/deadline_test.go @@ -0,0 +1,50 @@ +// Mgmt +// Copyright (C) 2013-2023+ James Shubin and the project contributors +// Written by James Shubin and the project contributors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// Package deadline_test has examples to test the testing deadline system. +package deadline_test + +import ( + "context" + "testing" + "time" +) + +func TestSlowTest1(t *testing.T) { + time.Sleep(3 * time.Second) +} + +func TestDeadlineTimeout1(t *testing.T) { + now := time.Now() + min := time.Second * 3 // approx min time needed for the test + ctx := context.Background() + if deadline, ok := t.Deadline(); ok { + d := deadline.Add(-min) + t.Logf(" now: %+v", now) + t.Logf(" d: %+v", d) + newCtx, cancel := context.WithDeadline(ctx, d) + ctx = newCtx + defer cancel() + } + + select { + case <-ctx.Done(): + t.Logf(" ctx: %+v", time.Now()) + time.Sleep(min - (1 * time.Second)) // one second less for safety + t.Logf("sleep: %+v", time.Now()) + } +}