Add project secret & bug fix

This commit is contained in:
simon987
2019-02-19 19:38:54 -05:00
parent 94c3ce3267
commit f235bfb588
27 changed files with 443 additions and 54 deletions

View File

@@ -4,6 +4,7 @@ import (
"fmt"
"github.com/simon987/task_tracker/api"
"github.com/simon987/task_tracker/storage"
"math"
"testing"
)
@@ -780,6 +781,42 @@ func TestTaskChain(t *testing.T) {
}
}
func TestTaskReleaseBigInt(t *testing.T) {
createTask(api.SubmitTaskRequest{
Project: testProject,
VerificationCount: 1,
Recipe: "bigint",
}, testWorker)
createTask(api.SubmitTaskRequest{
Project: testProject,
VerificationCount: 1,
Recipe: "smallint",
}, testWorker)
tid := getTaskFromProject(testProject, testWorker).Content.Task.Id
tid2 := getTaskFromProject(testProject, testWorker).Content.Task.Id
r := releaseTask(api.ReleaseTaskRequest{
Verification: math.MaxInt64,
Result: storage.TR_OK,
TaskId: tid,
}, testWorker)
r2 := releaseTask(api.ReleaseTaskRequest{
Verification: math.MinInt64,
Result: storage.TR_OK,
TaskId: tid2,
}, testWorker)
if r.Content.Updated != true {
t.Error()
}
if r2.Content.Updated != true {
t.Error()
}
}
func createTask(request api.SubmitTaskRequest, worker *storage.Worker) (ar api.JsonResponse) {
r := Post("/task/submit", request, worker, nil)
UnmarshalResponse(r, &ar)

View File

@@ -3,6 +3,7 @@ package test
import (
"github.com/simon987/task_tracker/api"
"github.com/simon987/task_tracker/config"
"github.com/simon987/task_tracker/storage"
"net/http"
"testing"
"time"
@@ -12,6 +13,9 @@ var testApi *api.WebAPI
var testAdminCtx *http.Client
var testUserCtx *http.Client
var testProject int64
var testWorker *storage.Worker
func TestMain(m *testing.M) {
config.SetupConfig()
@@ -25,6 +29,19 @@ func TestMain(m *testing.M) {
testAdminCtx = getSessionCtx("testadmin", "testadmin", true)
testUserCtx = getSessionCtx("testuser", "testuser", false)
testProject = createProjectAsAdmin(api.CreateProjectRequest{
Name: "generictestproject",
Public: false,
}).Content.Id
testWorker = createWorker(api.CreateWorkerRequest{
Alias: "generictestworker",
}).Content.Worker
requestAccess(api.CreateWorkerAccessRequest{
Project: testProject,
Assign: true,
Submit: true,
}, testWorker)
acceptAccessRequest(testProject, testWorker.Id, testAdminCtx)
m.Run()
}

View File

@@ -1,8 +1,6 @@
DROP TABLE IF EXISTS worker, project, task, log_entry,
worker_access, manager, manager_has_role_on_project, project_monitoring_snapshot,
worker_verifies_task;
DROP TYPE IF EXISTS status;
DROP TYPE IF EXISTS log_level;
CREATE TABLE worker
(
@@ -25,7 +23,8 @@ CREATE TABLE project
clone_url TEXT NOT NULL,
git_repo TEXT UNIQUE NOT NULL,
version TEXT NOT NULL,
motd TEXT NOT NULL
motd TEXT NOT NULL,
secret TEXT NOT NULL DEFAULT '{}'
);
CREATE TABLE worker_access
@@ -103,14 +102,18 @@ $$
DECLARE
chain INTEGER;
BEGIN
UPDATE project SET closed_task_count=closed_task_count + 1 WHERE id = OLD.project returning project.chain into chain;
UPDATE worker SET closed_task_count=closed_task_count + 1 WHERE id = OLD.assignee;
IF chain != 0 THEN
INSERT into task (hash64, project, assignee, max_assign_time, assign_time, verification_count,
priority, retries, max_retries, status, recipe)
VALUES (old.hash64, chain, NULL, old.max_assign_time, NULL,
old.verification_count, old.priority, 0, old.max_retries, 1,
old.recipe);
if OLD.assignee IS NOT NULL THEN
UPDATE project
SET closed_task_count=closed_task_count + 1
WHERE id = OLD.project returning project.chain into chain;
UPDATE worker SET closed_task_count=closed_task_count + 1 WHERE id = OLD.assignee;
IF chain != 0 THEN
INSERT into task (hash64, project, assignee, max_assign_time, assign_time, verification_count,
priority, retries, max_retries, status, recipe)
VALUES (old.hash64, chain, NULL, old.max_assign_time, NULL,
old.verification_count, old.priority, 0, old.max_retries, 1,
old.recipe);
end if;
end if;
RETURN OLD;
END;
@@ -136,7 +139,7 @@ CREATE TRIGGER on_manager_insert
FOR EACH ROW
EXECUTE PROCEDURE on_manager_insert();
CREATE OR REPLACE FUNCTION release_task_ok(wid INT, tid INT, ver INT) RETURNS BOOLEAN AS
CREATE OR REPLACE FUNCTION release_task_ok(wid INT, tid INT, ver BIGINT) RETURNS BOOLEAN AS
$$
DECLARE
res INT = NULL;