#172: Started tracking results
This commit is contained in:
+106
-6
@@ -357,11 +357,13 @@ type ExecutionRequestWrapper struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type AppExecutionExample struct {
|
type AppExecutionExample struct {
|
||||||
AppName string `json:"app_name"`
|
AppName string `json:"app_name"`
|
||||||
AppVersion string `json:"app_version"`
|
AppVersion string `json:"app_version"`
|
||||||
AppAction string `json:"app_action"`
|
AppAction string `json:"app_action"`
|
||||||
AppId string `json:"app_id"`
|
AppId string `json:"app_id"`
|
||||||
Examples []string `json:"examples"`
|
ExampleId string `json:"example_id"`
|
||||||
|
SuccessExamples []string `json:"success_examples"`
|
||||||
|
FailureExamples []string `json:"failure_examples"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// This might be... a bit off, but that's fine :)
|
// This might be... a bit off, but that's fine :)
|
||||||
@@ -1090,7 +1092,9 @@ func handleWorkflowQueue(resp http.ResponseWriter, request *http.Request) {
|
|||||||
log.Printf("Failed to increase success execution stats: %s", err)
|
log.Printf("Failed to increase success execution stats: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// type AppExecutionExample struct {
|
// Handles extra statistics stuff when it's done
|
||||||
|
// Does autocomplete magic with JSON
|
||||||
|
go handleExecutionStatistics(*workflowExecution)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1138,6 +1142,90 @@ func handleWorkflowQueue(resp http.ResponseWriter, request *http.Request) {
|
|||||||
resp.Write([]byte(fmt.Sprintf(`{"success": true}`)))
|
resp.Write([]byte(fmt.Sprintf(`{"success": true}`)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func JSONCheck(str string) bool {
|
||||||
|
var jsonStr interface{}
|
||||||
|
return json.Unmarshal([]byte(str), &jsonStr) == nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleExecutionStatistics(execution WorkflowExecution) {
|
||||||
|
// FIXME: CLEAN UP THE JSON THAT'S SAVED!
|
||||||
|
|
||||||
|
appResults := []AppExecutionExample{}
|
||||||
|
for _, result := range execution.Results {
|
||||||
|
resultCheck := JSONCheck(result.Result)
|
||||||
|
if !resultCheck {
|
||||||
|
log.Printf("Result is NOT JSON!")
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
log.Printf("Result IS JSON!")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
appFound := false
|
||||||
|
executionIndex := 0
|
||||||
|
for index, appExample := range appResults {
|
||||||
|
if appExample.AppId == result.Action.ID {
|
||||||
|
appFound = true
|
||||||
|
executionIndex = index
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if appFound {
|
||||||
|
// Append to SuccessExamples or FailureExamples
|
||||||
|
if result.Status == "ABORTED" || result.Status == "FAILURE" {
|
||||||
|
appResults[executionIndex].FailureExamples = append(appResults[executionIndex].FailureExamples, result.Result)
|
||||||
|
} else if result.Status == "FINISHED" || result.Status == "SUCCESS" {
|
||||||
|
appResults[executionIndex].SuccessExamples = append(appResults[executionIndex].SuccessExamples, result.Result)
|
||||||
|
} else {
|
||||||
|
log.Printf("[ERROR] Can't handle status %s", result.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
// appResults = append(appResults, executionExample)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// CREATE SuccessExamples or FailureExamples
|
||||||
|
executionExample := AppExecutionExample{
|
||||||
|
AppName: result.Action.AppName,
|
||||||
|
AppVersion: result.Action.AppVersion,
|
||||||
|
AppAction: result.Action.Name,
|
||||||
|
AppId: result.Action.AppID,
|
||||||
|
ExampleId: fmt.Sprintf("%s_%s", execution.ExecutionId, result.Action.AppID),
|
||||||
|
}
|
||||||
|
|
||||||
|
if result.Status == "ABORTED" || result.Status == "FAILURE" {
|
||||||
|
executionExample.FailureExamples = append(executionExample.FailureExamples, result.Result)
|
||||||
|
} else if result.Status == "FINISHED" || result.Status == "SUCCESS" {
|
||||||
|
executionExample.SuccessExamples = append(executionExample.SuccessExamples, result.Result)
|
||||||
|
} else {
|
||||||
|
log.Printf("[ERROR] Can't handle status %s", result.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
appResults = append(appResults, executionExample)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExampleId string `json:"example_id"`
|
||||||
|
// func setExampleresult(ctx context.Context, result exampleResult) error {
|
||||||
|
// log.Printf("Execution length: %d", len(appResults))
|
||||||
|
if len(appResults) > 0 {
|
||||||
|
ctx := context.Background()
|
||||||
|
successful := 0
|
||||||
|
for _, exampleresult := range appResults {
|
||||||
|
err := setExampleresult(ctx, exampleresult)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Failed setting examplresult %s: %s", exampleresult.ExampleId, err)
|
||||||
|
} else {
|
||||||
|
successful += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("Added %d exampleresults to backend", successful)
|
||||||
|
} else {
|
||||||
|
log.Printf("No examplresults necessary to be added for execution %s", execution.ExecutionId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func getWorkflows(resp http.ResponseWriter, request *http.Request) {
|
func getWorkflows(resp http.ResponseWriter, request *http.Request) {
|
||||||
cors := handleCors(resp, request)
|
cors := handleCors(resp, request)
|
||||||
if cors {
|
if cors {
|
||||||
@@ -3236,6 +3324,18 @@ func getAllWorkflows(ctx context.Context) ([]Workflow, error) {
|
|||||||
return allworkflows, nil
|
return allworkflows, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setExampleresult(ctx context.Context, result AppExecutionExample) error {
|
||||||
|
key := datastore.NameKey("example_result", result.ExampleId, nil)
|
||||||
|
|
||||||
|
// New struct, to not add body, author etc
|
||||||
|
if _, err := dbclient.Put(ctx, key, &result); err != nil {
|
||||||
|
log.Printf("Error adding workflow: %s", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Hmm, so I guess this should use uuid :(
|
// Hmm, so I guess this should use uuid :(
|
||||||
// Consistency PLX
|
// Consistency PLX
|
||||||
func setWorkflow(ctx context.Context, workflow Workflow, id string) error {
|
func setWorkflow(ctx context.Context, workflow Workflow, id string) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user