chore: Use standardized test timeouts and delays (#3291)

This commit is contained in:
Mathias Fredriksson
2022-08-01 15:45:05 +03:00
committed by GitHub
parent 3d0febdd90
commit 4730c589fe
25 changed files with 198 additions and 109 deletions

View File

@ -40,6 +40,7 @@ import (
"github.com/coder/coder/codersdk"
"github.com/coder/coder/provisioner/echo"
"github.com/coder/coder/provisionersdk/proto"
"github.com/coder/coder/testutil"
)
func TestMain(m *testing.M) {
@ -157,7 +158,7 @@ func TestAuthorizeAllEndpoints(t *testing.T) {
require.Eventually(t, func() bool {
provisionerds, err := client.ProvisionerDaemons(ctx)
return assert.NoError(t, err) && len(provisionerds) > 0
}, time.Second*10, time.Second)
}, testutil.WaitLong, testutil.IntervalSlow)
provisionerds, err := client.ProvisionerDaemons(ctx)
require.NoError(t, err, "fetch provisioners")

View File

@ -56,6 +56,7 @@ import (
"github.com/coder/coder/provisionerd"
"github.com/coder/coder/provisionersdk"
"github.com/coder/coder/provisionersdk/proto"
"github.com/coder/coder/testutil"
)
type Options struct {
@ -180,7 +181,7 @@ func newWithCloser(t *testing.T, options *Options) (*codersdk.Client, io.Closer)
AgentConnectionUpdateFrequency: 150 * time.Millisecond,
// Force a long disconnection timeout to ensure
// agents are not marked as disconnected during slow tests.
AgentInactiveDisconnectTimeout: 5 * time.Second,
AgentInactiveDisconnectTimeout: testutil.WaitShort,
AccessURL: serverURL,
Logger: slogtest.Make(t, nil).Leveled(slog.LevelDebug),
CacheDir: t.TempDir(),
@ -414,7 +415,7 @@ func AwaitTemplateVersionJob(t *testing.T, client *codersdk.Client, version uuid
var err error
templateVersion, err = client.TemplateVersion(context.Background(), version)
return assert.NoError(t, err) && templateVersion.Job.CompletedAt != nil
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
return templateVersion
}
@ -428,7 +429,7 @@ func AwaitWorkspaceBuildJob(t *testing.T, client *codersdk.Client, build uuid.UU
var err error
workspaceBuild, err = client.WorkspaceBuild(context.Background(), build)
return assert.NoError(t, err) && workspaceBuild.Job.CompletedAt != nil
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
return workspaceBuild
}
@ -452,7 +453,7 @@ func AwaitWorkspaceAgents(t *testing.T, client *codersdk.Client, build uuid.UUID
}
}
return true
}, 15*time.Second, 50*time.Millisecond)
}, testutil.WaitLong, testutil.IntervalMedium)
return resources
}

View File

@ -25,6 +25,7 @@ import (
"cdr.dev/slog/sloggers/slogtest"
"github.com/coder/coder/coderd/devtunnel"
"github.com/coder/coder/testutil"
)
const (
@ -85,15 +86,15 @@ func TestTunnel(t *testing.T) {
_, _ = io.Copy(io.Discard, res.Body)
return res.StatusCode == http.StatusAccepted
}, time.Minute, time.Second)
}, testutil.WaitShort, testutil.IntervalSlow)
assert.NoError(t, server.Close())
cancelTun()
select {
case <-errCh:
case <-time.After(10 * time.Second):
t.Error("tunnel did not close after 10 seconds")
case <-time.After(testutil.WaitLong):
t.Errorf("tunnel did not close after %s", testutil.WaitLong)
}
}
@ -226,7 +227,7 @@ func (f *fakeTunnelServer) requestHTTP() (*http.Response, error) {
}
client := &http.Client{
Transport: transport,
Timeout: 10 * time.Second,
Timeout: testutil.WaitLong,
}
return client.Get(fmt.Sprintf("http://[%s]:8090", clientIP))
}

View File

@ -4,12 +4,12 @@ import (
"net/http"
"net/http/httptest"
"testing"
"time"
"github.com/go-chi/chi/v5"
"github.com/stretchr/testify/require"
"github.com/coder/coder/coderd/httpmw"
"github.com/coder/coder/testutil"
)
func TestRateLimit(t *testing.T) {
@ -27,6 +27,6 @@ func TestRateLimit(t *testing.T) {
rec := httptest.NewRecorder()
rtr.ServeHTTP(rec, req)
return rec.Result().StatusCode == http.StatusTooManyRequests
}, 5*time.Second, time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
})
}

View File

@ -5,7 +5,6 @@ import (
"crypto/rand"
"runtime"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@ -13,6 +12,7 @@ import (
"github.com/coder/coder/coderd/coderdtest"
"github.com/coder/coder/codersdk"
"github.com/coder/coder/provisionersdk"
"github.com/coder/coder/testutil"
)
func TestProvisionerDaemons(t *testing.T) {
@ -41,7 +41,7 @@ func TestProvisionerDaemons(t *testing.T) {
var err error
version, err = client.TemplateVersion(context.Background(), version.ID)
return assert.NoError(t, err) && version.Job.Error != ""
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
})
}

View File

@ -21,6 +21,7 @@ import (
"github.com/coder/coder/coderd/database"
"github.com/coder/coder/coderd/database/databasefake"
"github.com/coder/coder/codersdk"
"github.com/coder/coder/testutil"
)
func TestProvisionerJobLogs_Unit(t *testing.T) {
@ -63,7 +64,7 @@ func TestProvisionerJobLogs_Unit(t *testing.T) {
{ID: uuid.New(), JobID: jobID, Stage: "Stage3"},
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
defer cancel()
// wow there are a lot of DB rows we touch...

View File

@ -14,6 +14,7 @@ import (
"github.com/coder/coder/codersdk"
"github.com/coder/coder/provisioner/echo"
"github.com/coder/coder/provisionersdk/proto"
"github.com/coder/coder/testutil"
)
func TestTemplateVersion(t *testing.T) {
@ -120,7 +121,7 @@ func TestPatchCancelTemplateVersion(t *testing.T) {
}
t.Logf("Status: %s", version.Job.Status)
return version.Job.Status == codersdk.ProvisionerJobRunning
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
err := client.CancelTemplateVersion(context.Background(), version.ID)
require.NoError(t, err)
err = client.CancelTemplateVersion(context.Background(), version.ID)
@ -131,7 +132,7 @@ func TestPatchCancelTemplateVersion(t *testing.T) {
var err error
version, err = client.TemplateVersion(context.Background(), version.ID)
return assert.NoError(t, err) && version.Job.Status == codersdk.ProvisionerJobFailed
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
})
// TODO(Cian): until we are able to test cancellation properly, validating
// Running -> Canceling is the best we can do for now.
@ -155,7 +156,7 @@ func TestPatchCancelTemplateVersion(t *testing.T) {
}
t.Logf("Status: %s", version.Job.Status)
return version.Job.Status == codersdk.ProvisionerJobRunning
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
err := client.CancelTemplateVersion(context.Background(), version.ID)
require.NoError(t, err)
require.Eventually(t, func() bool {
@ -166,7 +167,7 @@ func TestPatchCancelTemplateVersion(t *testing.T) {
// provision complete response.
assert.Empty(t, version.Job.Error) &&
version.Job.Status == codersdk.ProvisionerJobCanceling
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
})
}
@ -541,7 +542,7 @@ func TestTemplateVersionDryRun(t *testing.T) {
require.Eventually(t, func() bool {
job, err := client.TemplateVersionDryRun(ctx, version.ID, job.ID)
return assert.NoError(t, err) && job.Status == codersdk.ProvisionerJobSucceeded
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
<-logsDone
@ -618,7 +619,7 @@ func TestTemplateVersionDryRun(t *testing.T) {
t.Logf("Status: %s", job.Status)
return job.Status == codersdk.ProvisionerJobPending
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
err = client.CancelTemplateVersionDryRun(context.Background(), version.ID, job.ID)
require.NoError(t, err)
@ -631,7 +632,7 @@ func TestTemplateVersionDryRun(t *testing.T) {
t.Logf("Status: %s", job.Status)
return job.Status == codersdk.ProvisionerJobCanceling
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
})
t.Run("AlreadyCompleted", func(t *testing.T) {
@ -655,7 +656,7 @@ func TestTemplateVersionDryRun(t *testing.T) {
t.Logf("Status: %s", job.Status)
return job.Status == codersdk.ProvisionerJobSucceeded
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
err = client.CancelTemplateVersionDryRun(context.Background(), version.ID, job.ID)
var apiErr *codersdk.Error

View File

@ -17,6 +17,7 @@ import (
"github.com/coder/coder/codersdk"
"github.com/coder/coder/provisioner/echo"
"github.com/coder/coder/provisionersdk/proto"
"github.com/coder/coder/testutil"
)
func TestWorkspaceBuild(t *testing.T) {
@ -222,7 +223,7 @@ func TestPatchCancelWorkspaceBuild(t *testing.T) {
var err error
build, err = client.WorkspaceBuild(context.Background(), workspace.LatestBuild.ID)
return assert.NoError(t, err) && build.Job.Status == codersdk.ProvisionerJobRunning
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
err := client.CancelWorkspaceBuild(context.Background(), build.ID)
require.NoError(t, err)
require.Eventually(t, func() bool {
@ -233,7 +234,7 @@ func TestPatchCancelWorkspaceBuild(t *testing.T) {
// provision complete response.
assert.Empty(t, build.Job.Error) &&
build.Job.Status == codersdk.ProvisionerJobCanceling
}, 5*time.Second, 25*time.Millisecond)
}, testutil.WaitShort, testutil.IntervalFast)
}
func TestWorkspaceBuildResources(t *testing.T) {