Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updated dependencies #108

Merged
merged 2 commits into from
Dec 28, 2023
Merged
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
60 changes: 60 additions & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,63 @@ jobs:
env:
REF: ${{ github. sha }}
run: docker build -t radix-job-scheduler:${REF##*/} .

lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: Install dependencies
run: go mod download
- name: Install GolangCI Lint
run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.55.2

- name: golangci-lint
run: golangci-lint run --timeout=30m --max-same-issues=0 --out-format=github-actions

test:
name: Unit Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: Install dependencies
run: go mod download
- name: Run Tests
run: go test -cover `go list ./... | grep -v 'pkg/client'`

test-swagger:
name: Test Swagger
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: Install dependencies
run: go mod download
- name: Install Swagger
run: go install github.com/go-swagger/go-swagger/cmd/[email protected]
- name: Generate Swagger
run: swagger generate spec -o ./swagger.json --scan-models --exclude-deps
- name: Validate no changes
run: diff swagger.json ./swaggerui/html/swagger.json
- name: Check breaking changes
if: always()
id: breaking
continue-on-error: true
run: swagger diff --break <(git show master:swaggerui/html/swagger.json) swagger.json > /tmp/swagger_breaking_changes.txt
- name: Add comment
if: failure() && steps.breaking.outcome == 'failure'
uses: mshick/add-pr-comment@v2
with:
message-id: breaking-comment
preformatted: true
message-path: /tmp/swagger_breaking_changes.txt
18 changes: 0 additions & 18 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,6 @@ RUN adduser -S -u 1000 -G job-scheduler job-scheduler
RUN apk update && apk upgrade && \
apk add bash jq alpine-sdk sed gawk git ca-certificates curl && \
apk add --no-cache gcc musl-dev
RUN go install honnef.co/go/tools/cmd/[email protected] && \
go install github.com/rakyll/[email protected]

# Install go-swagger - 57786786=v0.29.0 - get release id from https://api.github.com/repos/go-swagger/go-swagger/releases
RUN download_url=$(curl -s https://api.github.com/repos/go-swagger/go-swagger/releases/57786786 | \
jq -r '.assets[] | select(.name | contains("'"$(uname | tr '[:upper:]' '[:lower:]')"'_amd64")) | .browser_download_url') && \
curl -o /usr/local/bin/swagger -L'#' "$download_url" && \
chmod +x /usr/local/bin/swagger

WORKDIR /go/src/github.com/equinor/radix-job-scheduler/

Expand All @@ -25,16 +17,6 @@ RUN go mod download
# copy api code
COPY . .

# Generate swagger
RUN swagger generate spec -o ./swaggerui_src/swagger.json --scan-models -x github.com/equinor/radix-job-scheduler/models/v2 && \
swagger validate ./swaggerui_src/swagger.json && \
statik -src=./swaggerui_src/ -p swaggerui

# lint and unit tests
RUN staticcheck ./... && \
go vet ./... && \
CGO_ENABLED=0 GOOS=linux go test ./...

# Build radix api go project
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags "-s -w" -a -installsuffix cgo -o /usr/local/bin/radix-job-scheduler

Expand Down
33 changes: 23 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,10 @@ echo:
# This make command is only needed for local testing now
# we also do make swagger inside Dockerfile
.PHONY: swagger
swagger:
rm -f ./swaggerui_src/swagger.json ./swaggerui/statik.go
swagger generate spec -o ./swagger.json --scan-models -x github.com/equinor/radix-job-scheduler/models/v2
mv swagger.json ./swaggerui_src/swagger.json
swagger validate ./swaggerui_src/swagger.json && \
statik -src=./swaggerui_src/ -p swaggerui
swagger: SHELL:=/bin/bash
swagger: bootstrap
swagger generate spec -o ./swaggerui/html/swagger.json --scan-models --exclude-deps
swagger validate ./swaggerui/html/swagger.json

.PHONY: docker-build
docker-build:
Expand All @@ -50,13 +48,28 @@ docker-push-main:
test:
go test -cover `go list ./...`

lint: bootstrap
golangci-lint run --timeout=30m --max-same-issues=0

.PHONY: mocks
mocks:
mocks: bootstrap
mockgen -source ./api/v2/handler.go -destination ./api/v2/mock/handler_mock.go -package mock
mockgen -source ./api/v1/jobs/job_handler.go -destination ./api/v1/jobs/mock/job_mock.go -package mock
mockgen -source ./api/v1/batches/batch_handler.go -destination ./api/v1/batches/mock/batch_mock.go -package mock
mockgen -source ./models/notifications/notifier.go -destination ./models/notifications/notifier_mock.go -package notifications

.PHONY: staticcheck
staticcheck:
staticcheck `go list ./...` && go vet `go list ./...`

HAS_SWAGGER := $(shell command -v swagger;)
HAS_GOLANGCI_LINT := $(shell command -v golangci-lint;)
HAS_MOCKGEN := $(shell command -v mockgen;)

bootstrap:
ifndef HAS_SWAGGER
go install github.com/go-swagger/go-swagger/cmd/[email protected]
endif
ifndef HAS_GOLANGCI_LINT
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.55.2
endif
ifndef HAS_MOCKGEN
go install github.com/golang/mock/[email protected]
endif
71 changes: 46 additions & 25 deletions api/v1/controllers/batches/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/equinor/radix-operator/pkg/apis/radix/v1"
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func setupTest(handler api.BatchHandler) *test.ControllerTestUtils {
Expand Down Expand Up @@ -57,7 +58,8 @@ func TestGetBatches(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusOK, response.StatusCode)
var returnedBatches []modelsV1.BatchStatus
test.GetResponseBody(response, &returnedBatches)
err := test.GetResponseBody(response, &returnedBatches)
require.NoError(t, err)
assert.Len(t, returnedBatches, 1)
assert.Equal(t, batchState.JobStatus.Name, returnedBatches[0].Name)
assert.Equal(t, batchState.JobStatus.Started, returnedBatches[0].Started)
Expand Down Expand Up @@ -86,7 +88,8 @@ func TestGetBatches(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusInternalServerError, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusInternalServerError, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonUnknown, returnedStatus.Reason)
Expand Down Expand Up @@ -125,7 +128,8 @@ func TestGetBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusOK, response.StatusCode)
var returnedBatch modelsV1.BatchStatus
test.GetResponseBody(response, &returnedBatch)
err := test.GetResponseBody(response, &returnedBatch)
require.NoError(t, err)
assert.Equal(t, batchState.Name, returnedBatch.Name)
assert.Equal(t, batchState.Started, returnedBatch.Started)
assert.Equal(t, batchState.Ended, returnedBatch.Ended)
Expand Down Expand Up @@ -154,7 +158,8 @@ func TestGetBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusNotFound, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusNotFound, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonNotFound, returnedStatus.Reason)
Expand Down Expand Up @@ -182,7 +187,8 @@ func TestGetBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusInternalServerError, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusInternalServerError, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonUnknown, returnedStatus.Reason)
Expand Down Expand Up @@ -225,7 +231,8 @@ func TestCreateBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusOK, response.StatusCode)
var returnedBatch modelsV1.BatchStatus
test.GetResponseBody(response, &returnedBatch)
err := test.GetResponseBody(response, &returnedBatch)
require.NoError(t, err)
assert.Equal(t, createdBatch.Name, returnedBatch.Name)
assert.Equal(t, createdBatch.Started, returnedBatch.Started)
assert.Equal(t, createdBatch.Ended, returnedBatch.Ended)
Expand Down Expand Up @@ -289,7 +296,8 @@ func TestCreateBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusOK, response.StatusCode)
var returnedBatch modelsV1.BatchStatus
test.GetResponseBody(response, &returnedBatch)
err := test.GetResponseBody(response, &returnedBatch)
require.NoError(t, err)
assert.Equal(t, createdBatch.Name, returnedBatch.Name)
assert.Equal(t, createdBatch.Started, returnedBatch.Started)
assert.Equal(t, createdBatch.Ended, returnedBatch.Ended)
Expand Down Expand Up @@ -335,7 +343,8 @@ func TestCreateBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusOK, response.StatusCode)
var returnedBatch modelsV1.BatchStatus
test.GetResponseBody(response, &returnedBatch)
err := test.GetResponseBody(response, &returnedBatch)
require.NoError(t, err)
assert.Equal(t, createdBatch.Name, returnedBatch.Name)
assert.Equal(t, createdBatch.Started, returnedBatch.Started)
assert.Equal(t, createdBatch.Ended, returnedBatch.Ended)
Expand Down Expand Up @@ -366,7 +375,8 @@ func TestCreateBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusUnprocessableEntity, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusUnprocessableEntity, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonInvalid, returnedStatus.Reason)
Expand Down Expand Up @@ -399,7 +409,8 @@ func TestCreateBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusNotFound, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusNotFound, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonNotFound, returnedStatus.Reason)
Expand Down Expand Up @@ -431,7 +442,8 @@ func TestCreateBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusInternalServerError, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusInternalServerError, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonUnknown, returnedStatus.Reason)
Expand Down Expand Up @@ -460,7 +472,8 @@ func TestDeleteBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusOK, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusOK, returnedStatus.Code)
assert.Equal(t, models.StatusSuccess, returnedStatus.Status)
assert.Empty(t, returnedStatus.Reason)
Expand All @@ -487,7 +500,8 @@ func TestDeleteBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusNotFound, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusNotFound, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonNotFound, returnedStatus.Reason)
Expand Down Expand Up @@ -515,7 +529,8 @@ func TestDeleteBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusInternalServerError, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusInternalServerError, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonUnknown, returnedStatus.Reason)
Expand Down Expand Up @@ -544,7 +559,8 @@ func TestStopBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusOK, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusOK, returnedStatus.Code)
assert.Equal(t, models.StatusSuccess, returnedStatus.Status)
assert.Empty(t, returnedStatus.Reason)
Expand All @@ -571,7 +587,8 @@ func TestStopBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusNotFound, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusNotFound, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonNotFound, returnedStatus.Reason)
Expand Down Expand Up @@ -599,7 +616,8 @@ func TestStopBatch(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusInternalServerError, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusInternalServerError, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonUnknown, returnedStatus.Reason)
Expand Down Expand Up @@ -635,9 +653,7 @@ func TestStopBatchJob(t *testing.T) {
assert.Equal(t, http.StatusOK, response.StatusCode)
var returnedStatus models.Status
err := test.GetResponseBody(response, &returnedStatus)
if err != nil {
panic(err)
}
require.NoError(t, err)
assert.Equal(t, http.StatusOK, returnedStatus.Code)
assert.Equal(t, models.StatusSuccess, returnedStatus.Status)
assert.Empty(t, returnedStatus.Reason)
Expand Down Expand Up @@ -665,7 +681,8 @@ func TestStopBatchJob(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusNotFound, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusNotFound, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonNotFound, returnedStatus.Reason)
Expand Down Expand Up @@ -694,7 +711,8 @@ func TestStopBatchJob(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusInternalServerError, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusInternalServerError, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonUnknown, returnedStatus.Reason)
Expand Down Expand Up @@ -732,7 +750,8 @@ func TestGetBatchJob(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusOK, response.StatusCode)
var returnedJob modelsV1.JobStatus
test.GetResponseBody(response, &returnedJob)
err := test.GetResponseBody(response, &returnedJob)
require.NoError(t, err)
assert.Equal(t, jobState.Name, returnedJob.Name)
assert.Equal(t, jobState.Started, returnedJob.Started)
assert.Equal(t, jobState.Ended, returnedJob.Ended)
Expand Down Expand Up @@ -761,7 +780,8 @@ func TestGetBatchJob(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusNotFound, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusNotFound, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonNotFound, returnedStatus.Reason)
Expand Down Expand Up @@ -789,7 +809,8 @@ func TestGetBatchJob(t *testing.T) {
if response != nil {
assert.Equal(t, http.StatusInternalServerError, response.StatusCode)
var returnedStatus models.Status
test.GetResponseBody(response, &returnedStatus)
err := test.GetResponseBody(response, &returnedStatus)
require.NoError(t, err)
assert.Equal(t, http.StatusInternalServerError, returnedStatus.Code)
assert.Equal(t, models.StatusFailure, returnedStatus.Status)
assert.Equal(t, models.StatusReasonUnknown, returnedStatus.Reason)
Expand Down
Loading
Loading