Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cmd/server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ func main() {
config.CorsAllowedOrigins,
api.SwaggerJsonTemplate(),
api.RegisterSubmitHandler,
api.RegisterRetryPolicyServiceHandler,
api.RegisterEventHandler,
api.RegisterJobsHandler,
schedulerobjects.RegisterSchedulerReportingHandler,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
CREATE TABLE IF NOT EXISTS retry_policy
(
name text NOT NULL PRIMARY KEY,
definition bytea NOT NULL
)
33 changes: 13 additions & 20 deletions internal/server/executor/executor_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"github.com/stretchr/testify/require"
"go.uber.org/mock/gomock"
"google.golang.org/grpc/codes"
grpcstatus "google.golang.org/grpc/status"
clocktesting "k8s.io/utils/clock/testing"

"github.com/armadaproject/armada/internal/common/armadacontext"
Expand All @@ -20,6 +19,7 @@ import (
protoutil "github.com/armadaproject/armada/internal/common/proto"
servermocks "github.com/armadaproject/armada/internal/server/mocks"
"github.com/armadaproject/armada/internal/server/permissions"
"github.com/armadaproject/armada/internal/server/servertest"
"github.com/armadaproject/armada/pkg/api"
"github.com/armadaproject/armada/pkg/controlplaneevents"
)
Expand All @@ -40,13 +40,6 @@ func newExecutorTestServer(t *testing.T) (*Server, *executorTestMocks) {
return s, m
}

func requireGrpcCode(t *testing.T, err error, code codes.Code) {
t.Helper()
st, ok := grpcstatus.FromError(err)
require.True(t, ok, "expected gRPC status error")
assert.Equal(t, code, st.Code())
}

func TestUpsertExecutorSettings_PermissionDenied(t *testing.T) {
s, m := newExecutorTestServer(t)
grpcCtx := armadacontext.Background()
Expand All @@ -59,7 +52,7 @@ func TestUpsertExecutorSettings_PermissionDenied(t *testing.T) {

_, err := s.UpsertExecutorSettings(grpcCtx, &api.ExecutorSettingsUpsertRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.PermissionDenied)
servertest.RequireGrpcCode(t, err, codes.PermissionDenied)
}

func TestUpsertExecutorSettings_AuthorizeErrorUnavailable(t *testing.T) {
Expand All @@ -74,7 +67,7 @@ func TestUpsertExecutorSettings_AuthorizeErrorUnavailable(t *testing.T) {

_, err := s.UpsertExecutorSettings(grpcCtx, &api.ExecutorSettingsUpsertRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Unavailable)
servertest.RequireGrpcCode(t, err, codes.Unavailable)
}

func TestUpsertExecutorSettings_ValidationName(t *testing.T) {
Expand Down Expand Up @@ -125,7 +118,7 @@ func TestUpsertExecutorSettings_PublishErrorInternal(t *testing.T) {

_, err := s.UpsertExecutorSettings(grpcCtx, &api.ExecutorSettingsUpsertRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Internal)
servertest.RequireGrpcCode(t, err, codes.Internal)
}

func TestUpsertExecutorSettings_SuccessPublishesExpectedEvent(t *testing.T) {
Expand Down Expand Up @@ -186,7 +179,7 @@ func TestDeleteExecutorSettings_PermissionDenied(t *testing.T) {

_, err := s.DeleteExecutorSettings(grpcCtx, &api.ExecutorSettingsDeleteRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.PermissionDenied)
servertest.RequireGrpcCode(t, err, codes.PermissionDenied)
}

func TestDeleteExecutorSettings_AuthorizeErrorUnavailable(t *testing.T) {
Expand All @@ -201,7 +194,7 @@ func TestDeleteExecutorSettings_AuthorizeErrorUnavailable(t *testing.T) {

_, err := s.DeleteExecutorSettings(grpcCtx, &api.ExecutorSettingsDeleteRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Unavailable)
servertest.RequireGrpcCode(t, err, codes.Unavailable)
}

func TestDeleteExecutorSettings_ValidationName(t *testing.T) {
Expand Down Expand Up @@ -237,7 +230,7 @@ func TestDeleteExecutorSettings_PublishErrorInternal(t *testing.T) {

_, err := s.DeleteExecutorSettings(grpcCtx, &api.ExecutorSettingsDeleteRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Internal)
servertest.RequireGrpcCode(t, err, codes.Internal)
}

func TestDeleteExecutorSettings_SuccessPublishesExpectedEvent(t *testing.T) {
Expand Down Expand Up @@ -288,7 +281,7 @@ func TestPreemptOnExecutor_PermissionDenied(t *testing.T) {

_, err := s.PreemptOnExecutor(grpcCtx, &api.ExecutorPreemptRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.PermissionDenied)
servertest.RequireGrpcCode(t, err, codes.PermissionDenied)
}

func TestPreemptOnExecutor_AuthorizeErrorUnavailable(t *testing.T) {
Expand All @@ -303,7 +296,7 @@ func TestPreemptOnExecutor_AuthorizeErrorUnavailable(t *testing.T) {

_, err := s.PreemptOnExecutor(grpcCtx, &api.ExecutorPreemptRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Unavailable)
servertest.RequireGrpcCode(t, err, codes.Unavailable)
}

func TestPreemptOnExecutor_ValidationName(t *testing.T) {
Expand Down Expand Up @@ -339,7 +332,7 @@ func TestPreemptOnExecutor_PublishErrorInternal(t *testing.T) {

_, err := s.PreemptOnExecutor(grpcCtx, &api.ExecutorPreemptRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Internal)
servertest.RequireGrpcCode(t, err, codes.Internal)
}

func TestPreemptOnExecutor_SuccessPublishesExpectedEvent(t *testing.T) {
Expand Down Expand Up @@ -392,7 +385,7 @@ func TestCancelOnExecutor_PermissionDenied(t *testing.T) {

_, err := s.CancelOnExecutor(grpcCtx, &api.ExecutorCancelRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.PermissionDenied)
servertest.RequireGrpcCode(t, err, codes.PermissionDenied)
}

func TestCancelOnExecutor_AuthorizeErrorUnavailable(t *testing.T) {
Expand All @@ -407,7 +400,7 @@ func TestCancelOnExecutor_AuthorizeErrorUnavailable(t *testing.T) {

_, err := s.CancelOnExecutor(grpcCtx, &api.ExecutorCancelRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Unavailable)
servertest.RequireGrpcCode(t, err, codes.Unavailable)
}

func TestCancelOnExecutor_ValidationName(t *testing.T) {
Expand Down Expand Up @@ -443,7 +436,7 @@ func TestCancelOnExecutor_PublishErrorInternal(t *testing.T) {

_, err := s.CancelOnExecutor(grpcCtx, &api.ExecutorCancelRequest{Name: "executor-1"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Internal)
servertest.RequireGrpcCode(t, err, codes.Internal)
}

func TestCancelOnExecutor_SuccessPublishesExpectedEvent(t *testing.T) {
Expand Down
1 change: 1 addition & 0 deletions internal/server/mocks/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ package mocks
//go:generate mockgen -destination=./mock_deduplicator.go -package=mocks "github.com/armadaproject/armada/internal/server/submit" Deduplicator
//go:generate mockgen -destination=./mock_authorizer.go -package=mocks "github.com/armadaproject/armada/internal/common/auth" ActionAuthorizer
//go:generate mockgen -destination=./mock_repository.go -package=mocks "github.com/armadaproject/armada/internal/server/queue" QueueRepository
//go:generate mockgen -destination=./mock_retry_policy_repository.go -package=mocks "github.com/armadaproject/armada/internal/server/retrypolicy" RetryPolicyRepository
108 changes: 108 additions & 0 deletions internal/server/mocks/mock_retry_policy_repository.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 7 additions & 14 deletions internal/server/node/node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"github.com/stretchr/testify/require"
"go.uber.org/mock/gomock"
"google.golang.org/grpc/codes"
grpcstatus "google.golang.org/grpc/status"
clocktesting "k8s.io/utils/clock/testing"

"github.com/armadaproject/armada/internal/common/armadacontext"
Expand All @@ -19,6 +18,7 @@ import (
protoutil "github.com/armadaproject/armada/internal/common/proto"
servermocks "github.com/armadaproject/armada/internal/server/mocks"
"github.com/armadaproject/armada/internal/server/permissions"
"github.com/armadaproject/armada/internal/server/servertest"
"github.com/armadaproject/armada/pkg/api"
"github.com/armadaproject/armada/pkg/controlplaneevents"
)
Expand All @@ -39,13 +39,6 @@ func newTestServer(t *testing.T) (*Server, *testMocks) {
return s, m
}

func requireGrpcCode(t *testing.T, err error, code codes.Code) {
t.Helper()
st, ok := grpcstatus.FromError(err)
require.True(t, ok, "expected gRPC status error")
assert.Equal(t, code, st.Code())
}

func TestPreemptOnNode_PermissionDenied(t *testing.T) {
s, m := newTestServer(t)
ctx := armadacontext.Background()
Expand All @@ -58,7 +51,7 @@ func TestPreemptOnNode_PermissionDenied(t *testing.T) {

_, err := s.PreemptOnNode(ctx, &api.NodePreemptRequest{Name: "executor-1", Executor: "executor-id"})
require.Error(t, err)
requireGrpcCode(t, err, codes.PermissionDenied)
servertest.RequireGrpcCode(t, err, codes.PermissionDenied)
}

func TestPreemptOnNode_AuthorizeErrorUnavailable(t *testing.T) {
Expand All @@ -73,7 +66,7 @@ func TestPreemptOnNode_AuthorizeErrorUnavailable(t *testing.T) {

_, err := s.PreemptOnNode(ctx, &api.NodePreemptRequest{Name: "executor-1", Executor: "executor-id"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Internal)
servertest.RequireGrpcCode(t, err, codes.Internal)
}

func TestPreemptOnNode_Validation(t *testing.T) {
Expand Down Expand Up @@ -109,7 +102,7 @@ func TestPreemptOnNode_PublishErrorInternal(t *testing.T) {

_, err := s.PreemptOnNode(ctx, &api.NodePreemptRequest{Name: "executor-1", Executor: "executor-id"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Internal)
servertest.RequireGrpcCode(t, err, codes.Internal)
}

func TestPreemptOnNode_SuccessPublishesExpectedEvent(t *testing.T) {
Expand Down Expand Up @@ -168,7 +161,7 @@ func TestCancelOnNode_PermissionDenied(t *testing.T) {

_, err := s.CancelOnNode(ctx, &api.NodeCancelRequest{Name: "executor-1", Executor: "executor-id"})
require.Error(t, err)
requireGrpcCode(t, err, codes.PermissionDenied)
servertest.RequireGrpcCode(t, err, codes.PermissionDenied)
}

func TestCancelOnNode_AuthorizeErrorUnavailable(t *testing.T) {
Expand All @@ -183,7 +176,7 @@ func TestCancelOnNode_AuthorizeErrorUnavailable(t *testing.T) {

_, err := s.CancelOnNode(ctx, &api.NodeCancelRequest{Name: "executor-1", Executor: "executor-id"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Internal)
servertest.RequireGrpcCode(t, err, codes.Internal)
}

func TestCancelOnNode_Validation(t *testing.T) {
Expand Down Expand Up @@ -219,7 +212,7 @@ func TestCancelOnNode_PublishErrorInternal(t *testing.T) {

_, err := s.CancelOnNode(ctx, &api.NodeCancelRequest{Name: "executor-1", Executor: "executor-id"})
require.Error(t, err)
requireGrpcCode(t, err, codes.Internal)
servertest.RequireGrpcCode(t, err, codes.Internal)
}

func TestCancelOnNode_SuccessPublishesExpectedEvent(t *testing.T) {
Expand Down
3 changes: 3 additions & 0 deletions internal/server/permissions/permissions.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,7 @@ const (
CordonNodes = "cordon_nodes"
ExecuteJobs = "execute_jobs"
UpdateExecutorSettings = "update_executor_settings"
CreateRetryPolicy = "create_retry_policy"
UpdateRetryPolicy = "update_retry_policy"
DeleteRetryPolicy = "delete_retry_policy"
)
5 changes: 5 additions & 0 deletions internal/server/queryapi/database/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading