aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/controller/api_test.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2025-02-13 13:59:19 +0100
committerAleksandr Nogikh <nogikh@google.com>2025-02-14 13:40:12 +0000
commiteaf86f3f4dc8a7190abf09fe840e20bcf83709d8 (patch)
treec28d030a8923833ffc39005b1a57946cd48fea62 /syz-cluster/controller/api_test.go
parent59c86b9e1c7a0f91fbb1b680676f33b4cc7bf137 (diff)
syz-cluster/controller: move the API server to pkg/controller
This will facilitate its reuse in tests.
Diffstat (limited to 'syz-cluster/controller/api_test.go')
-rw-r--r--syz-cluster/controller/api_test.go141
1 files changed, 0 insertions, 141 deletions
diff --git a/syz-cluster/controller/api_test.go b/syz-cluster/controller/api_test.go
deleted file mode 100644
index 24c113b12..000000000
--- a/syz-cluster/controller/api_test.go
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2024 syzkaller project authors. All rights reserved.
-// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
-
-package main
-
-import (
- "context"
- "net/http/httptest"
- "testing"
- "time"
-
- "github.com/google/syzkaller/syz-cluster/pkg/api"
- "github.com/google/syzkaller/syz-cluster/pkg/app"
- "github.com/stretchr/testify/assert"
-)
-
-func TestAPIGetSeries(t *testing.T) {
- env, ctx := app.TestEnvironment(t)
- apiServer := NewControllerAPI(env)
- server := httptest.NewServer(apiServer.Mux())
- defer server.Close()
-
- client := api.NewClient(server.URL)
- seriesID, sessionID := uploadSeries(t, ctx, client, testSeries)
-
- ret, err := client.GetSessionSeries(ctx, sessionID)
- assert.NoError(t, err)
- ret.ID = ""
- assert.Equal(t, testSeries, ret)
-
- ret, err = client.GetSeries(ctx, seriesID)
- assert.NoError(t, err)
- ret.ID = ""
- assert.Equal(t, testSeries, ret)
-}
-
-func TestAPISuccessfulBuild(t *testing.T) {
- env, ctx := app.TestEnvironment(t)
- apiServer := NewControllerAPI(env)
- server := httptest.NewServer(apiServer.Mux())
- defer server.Close()
-
- client := api.NewClient(server.URL)
- buildInfo, _ := uploadTestBuild(t, client)
- info, err := client.LastSuccessfulBuild(ctx, &api.LastBuildReq{
- Arch: buildInfo.Arch,
- TreeName: buildInfo.TreeName,
- ConfigName: buildInfo.ConfigName,
- })
- assert.NoError(t, err)
- assert.Equal(t, buildInfo, info)
-}
-
-func TestAPISaveFinding(t *testing.T) {
- env, ctx := app.TestEnvironment(t)
- apiServer := NewControllerAPI(env)
- server := httptest.NewServer(apiServer.Mux())
- defer server.Close()
-
- client := api.NewClient(server.URL)
-
- _, sessionID := uploadSeries(t, ctx, client, testSeries)
- _, buildResp := uploadTestBuild(t, client)
- err := client.UploadTestResult(ctx, &api.TestResult{
- SessionID: sessionID,
- BaseBuildID: buildResp.ID,
- TestName: "test",
- Result: api.TestRunning,
- Log: []byte("some log"),
- })
- assert.NoError(t, err)
-
- t.Run("not existing test", func(t *testing.T) {
- err = client.UploadFinding(ctx, &api.Finding{
- SessionID: sessionID,
- TestName: "unknown test",
- })
- assert.Error(t, err)
- })
-
- t.Run("must succeed", func(t *testing.T) {
- finding := &api.Finding{
- SessionID: sessionID,
- TestName: "test",
- Report: []byte("report"),
- Log: []byte("log"),
- }
- err = client.UploadFinding(ctx, finding)
- assert.NoError(t, err)
- // Even if the finding is reported the second time, it must still not fail.
- err = client.UploadFinding(ctx, finding)
- assert.NoError(t, err)
- })
-}
-
-func uploadTestBuild(t *testing.T, client *api.Client) (*api.Build, *api.UploadBuildResp) {
- buildInfo := &api.Build{
- Arch: "amd64",
- TreeName: "mainline",
- ConfigName: "config",
- CommitHash: "abcd",
- CommitDate: time.Date(2020, time.January, 1, 3, 0, 0, 0, time.UTC),
- BuildSuccess: true,
- }
- ret, err := client.UploadBuild(context.Background(), &api.UploadBuildReq{
- Build: *buildInfo,
- })
- assert.NoError(t, err)
- assert.NotEmpty(t, ret.ID)
- return buildInfo, ret
-}
-
-// Returns a (session ID, series ID) tuple.
-func uploadSeries(t *testing.T, ctx context.Context, client *api.Client, series *api.Series) (string, string) {
- retSeries, err := client.UploadSeries(ctx, series)
- assert.NoError(t, err)
- retSession, err := client.UploadSession(ctx, &api.NewSession{
- ExtID: series.ExtID,
- })
- assert.NoError(t, err)
- return retSeries.ID, retSession.ID
-}
-
-var testSeries = &api.Series{
- ExtID: "ext-id",
- AuthorEmail: "some@email.com",
- Title: "test series name",
- Version: 2,
- PublishedAt: time.Date(2020, time.January, 1, 3, 0, 0, 0, time.UTC),
- Cc: []string{"email"},
- Patches: []api.SeriesPatch{
- {
- Seq: 1,
- Body: []byte("first content"),
- },
- {
- Seq: 2,
- Body: []byte("second content"),
- },
- },
-}