Commit 307e0456 authored by Aditya Prakash's avatar Aditya Prakash
Browse files

Fixing job library related items

No related merge requests found
Showing with 21 additions and 180 deletions
+21 -180
......@@ -6,6 +6,8 @@ retract v0.3.5 // v0.3.5 was retagged to fix a bug but the proxy.golang.org had
require go.mongodb.org/mongo-driver v1.12.1
require github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494 // indirect
require (
github.com/go-chi/chi v1.5.5
github.com/go-chi/chi/v5 v5.0.11
......
......@@ -31,6 +31,8 @@ github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494 h1:wSmWgpuccqS2IOfmYrbRiUgv+g37W5suLLLxwwniTSc=
github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494/go.mod h1:yipyliwI08eQ6XwDm1fEwKPdF/xdbkiHtrU+1Hg+vc4=
github.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414 h1:AJNDS0kP60X8wwWFvbLPwDuojxubj9pbfK7pjHw0vKg=
github.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
github.com/sendgrid/solr-go v1.0.27 h1:1ElCyxr1HvAI3MxA2M5mGXqQ2xg4Jl1mdVACciT2wnc=
......@@ -44,6 +46,7 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.1 h1:4VhoImhV/Bm0ToFkXFi8hXNXwpDRZ/ynw3amt82mzq0=
github.com/stretchr/objx v0.5.1/go.mod h1:/iHQpkQwBD6DLUmQ4pE+s1TXdob1mORJ4/UFdrifcy0=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
......@@ -121,6 +124,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/resty.v1 v1.10.3/go.mod h1:nrgQYbPhkRfn2BfT32NNTLfq3K9NuHRB0MsAcA9weWY=
gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
package handlers_job
import (
"errors"
"fmt"
"log"
"net/http"
methods_job "git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/jobs/methods"
"git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/shared"
"github.com/go-chi/chi"
)
func GetJobByName(w http.ResponseWriter, r *http.Request) {
log.Println("===============================")
log.Println("🙂 I will 'get' schema of the job...")
name := chi.URLParam(r, "name")
if name == "" {
err := errors.New("🤨 hey, i did not receive 'job-name'")
shared.ErrorJSON(w, err, http.StatusBadRequest)
return
}
log.Printf("...'%s'", name)
jsonData, statusCode, err := methods_job.InitializeSchema(name)
if err != nil {
log.Printf("❌ Error: %s", err)
shared.ErrorJSON(w, err, statusCode)
return
}
res := shared.JsonResponse{
Error: false,
Message: fmt.Sprintf("😄 Here is the schema for the job '%s'", jsonData.Name),
Data: jsonData,
}
log.Println(res.Message)
shared.WriteJSON(w, http.StatusOK, res)
}
package handlers_job
import (
"context"
"encoding/json"
"errors"
"fmt"
"net/http"
"net/http/httptest"
"net/url"
"testing"
methods_job "git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/jobs/methods"
models_job "git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/jobs/models"
"git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/shared"
"github.com/go-chi/chi"
"github.com/stretchr/testify/assert"
)
func TestGetSchemaByName(t *testing.T) {
var MockError = errors.New("error set during mock-test")
type TestCase struct {
name string
jobName string
mockSchema *models_job.Schema_Job
mockInitSchemaStatusCode int
mockInitSchemaError error
expectedStatusCode int
expectedResponseBody map[string]interface{}
}
jobSchema := models_job.Schema_Job{
Name: "A Job Schema",
}
jobSchemaMap, _ := shared.StructToMap(jobSchema)
testCases := []TestCase{{
name: "returns error if 'job name' is not specified",
expectedStatusCode: http.StatusBadRequest,
expectedResponseBody: map[string]interface{}{
"error": true,
"message": "🤨 hey, i did not receive 'job-name'",
},
}, {
name: "returns error if 'methods_job.InitializeSchema' throws error ",
jobName: "schema-name",
mockSchema: nil,
mockInitSchemaStatusCode: http.StatusTeapot,
mockInitSchemaError: MockError,
expectedStatusCode: http.StatusTeapot,
expectedResponseBody: map[string]interface{}{
"error": true,
"message": MockError.Error(),
},
}, {
name: "returns success if 'methods_job.InitializeSchema' returns schema",
jobName: "schema-name",
mockSchema: &jobSchema,
mockInitSchemaStatusCode: http.StatusTeapot,
mockInitSchemaError: nil,
expectedStatusCode: http.StatusOK,
expectedResponseBody: map[string]interface{}{
"error": false,
"message": fmt.Sprintf("😄 Here is the schema for the job '%s'", jobSchema.Name),
"data": jobSchemaMap,
},
}}
tmpFunc := methods_job.InitializeSchema
defer func() {
methods_job.InitializeSchema = tmpFunc
}()
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
methods_job.InitializeSchema = func(name string) (*models_job.Schema_Job, int, error) {
return tc.mockSchema, tc.mockInitSchemaStatusCode, tc.mockInitSchemaError
}
endPoint := fmt.Sprintf("/job/schema/%s", tc.jobName)
u, _ := url.Parse(endPoint)
req := httptest.NewRequest(http.MethodGet, u.Path, nil)
res := httptest.NewRecorder()
rctx := chi.NewRouteContext()
rctx.URLParams.Add("name", tc.jobName)
req = req.WithContext(context.WithValue(req.Context(), chi.RouteCtxKey, rctx))
GetJobByName(res, req)
var body interface{}
json.Unmarshal([]byte(res.Body.Bytes()), &body)
assert.EqualValues(t, tc.expectedStatusCode, res.Code)
assert.Equal(t, tc.expectedResponseBody, body)
})
}
}
......@@ -8,6 +8,7 @@ import (
models_job "git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/jobs/models"
"git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/shared"
"github.com/qdm12/reprint"
)
var ExecuteJob = func(jobSchema models_job.Schema_Job, job models_job.Job, executedBy shared.SimpleObject, enteredOn time.Time, functionMap map[string]models_job.JobFunction) (models_job.Job, int, error) {
......@@ -22,8 +23,7 @@ var ExecuteJob = func(jobSchema models_job.Schema_Job, job models_job.Job, execu
job.RuntimeData = models_job.RuntimeData_Job{}
var copyJob models_job.Job
shared.DeepCopy(job, &copyJob)
reprint.FromTo(&job, &copyJob)
job.DB = tempDB
job.SearchDB = tempSearch
......
......@@ -13,6 +13,7 @@ import (
models_job "git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/jobs/models"
"git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/shared"
"github.com/qdm12/reprint"
)
func getStepToExecute(jobSchemaSteps []models_job.Steps_JobSchema, jobSteps []models_job.Steps_Job) (models_job.Steps_JobSchema, models_job.Steps_Job, error) {
......@@ -252,7 +253,7 @@ func mergeVariablesWithAJobStep(schemaStep models_job.Steps_JobSchema, variables
func setStatusOfOngoingBranchStepToCompleted(steps []models_job.Steps_Job, parentStep string) ([]models_job.Steps_Job, error) {
var err error
var copySteps []models_job.Steps_Job
shared.DeepCopy(steps, &copySteps)
reprint.FromTo(&steps, &copySteps)
for i := 0; i < len(copySteps); i++ {
step := &copySteps[i]
......
......@@ -7,13 +7,15 @@ import (
"log"
"net/http"
"os"
"path"
"strings"
models_job "git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/jobs/models"
)
var InitializeSchema = func(name string) (*models_job.Schema_Job, int, error) {
jsonFile, err := os.Open(strings.ToLower(fmt.Sprintf("/jobs/schema/%s.json", name)))
var InitializeSchema = func(schemaPath, name string) (*models_job.Schema_Job, int, error) {
path := path.Join(schemaPath, "jobs", "schema", fmt.Sprintf("%s.json", name))
jsonFile, err := os.Open(strings.ToLower(path))
if err != nil {
log.Printf("❌ Error: %s", err)
......
......@@ -71,10 +71,11 @@ func TestInitializeSchema(t *testing.T) {
bs2, _ := json.Marshal(schema)
f2.Write(bs2)
f2.Close()
cwd, _ := os.Getwd()
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
schema, statusCode, err := InitializeSchema(tc.input)
schema, statusCode, err := InitializeSchema(cwd, tc.input)
assert.EqualValues(t, tc.expectedSchema, schema)
assert.EqualValues(t, tc.expectedStatusCode, statusCode)
......
......@@ -8,6 +8,7 @@ import (
models_job "git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/jobs/models"
"git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/shared"
"github.com/qdm12/reprint"
)
var SelectABranch = func(jobSchema models_job.Schema_Job, job models_job.Job, ur shared.SimpleObject, enteredOn time.Time, selection string) (models_job.Job, error) {
......@@ -19,7 +20,7 @@ var SelectABranch = func(jobSchema models_job.Schema_Job, job models_job.Job, ur
job.SearchDB = nil
var copyJob models_job.Job
_ = shared.DeepCopy(job, &copyJob)
reprint.FromTo(&job, &copyJob)
job.DB = tempDB
job.SearchDB = tempSearch
......
......@@ -6,7 +6,7 @@ import (
"time"
models_job "git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/jobs/models"
"git.clarity.psyora.com/tera-clarity-app/backend-go-shared-lib/shared"
"github.com/qdm12/reprint"
)
var SkipNextStepToExecute = func(schema models_job.Schema_Job, job models_job.Job, enteredBy, enteryType string, samaya time.Time) (models_job.Job, error) {
......@@ -29,8 +29,8 @@ var SkipNextStepToExecute = func(schema models_job.Schema_Job, job models_job.Jo
var copyJob models_job.Job
var copyJobStep models_job.Steps_Job
shared.DeepCopy(job, &copyJob)
shared.DeepCopy(jobStep, &copyJobStep)
reprint.FromTo(&job, &copyJob)
reprint.FromTo(&jobStep, &copyJobStep)
job.DB = tempDB
job.SearchDB = tempSearch
......
package shared
import (
"bytes"
"encoding/gob"
"fmt"
)
func DeepCopy(src, dst interface{}) error {
var buf bytes.Buffer
if err := gob.NewEncoder(&buf).Encode(src); err != nil {
return fmt.Errorf("❌ Error while encoding: %s", err)
}
if err := gob.NewDecoder(&buf).Decode(dst); err != nil {
return fmt.Errorf("❌ Error while decoding: %s", err)
}
return nil
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment