Skip to content
This repository was archived by the owner on Feb 2, 2022. It is now read-only.

Commit 857aa0f

Browse files
stishkinstas
andauthored
Move result URL into service, and make it set on Job Created (#75)
Closes #69, #70 Co-authored-by: stas <statis@microsoft.com>
1 parent b0b7762 commit 857aa0f

File tree

13 files changed

+78
-55
lines changed

13 files changed

+78
-55
lines changed

cli/raft-tools/tools/ZAP/config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"run" : {
44
"command" : "bash",
55
"arguments" : ["-c",
6-
"sleep $RAFT_STARTUP_DELAY; cd $RAFT_TOOL_RUN_DIRECTORY; ln -s $RAFT_WORK_DIRECTORY /zap/wrk; python3 run.py install; python3 run.py" ]
6+
"touch /.dockerenv; cd $RAFT_TOOL_RUN_DIRECTORY; ln -s $RAFT_WORK_DIRECTORY /zap/wrk; python3 run.py install; sleep $RAFT_STARTUP_DELAY; python3 run.py" ]
77
},
88
"idle" : {
99
"command" : "bash",

cli/raft_sdk/raft_service.py

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -72,25 +72,6 @@ def __init__(self, context=None):
7272
self.context['tenantId'],
7373
self.context.get('secret'))
7474

75-
def result_url(self, job_id):
76-
'''
77-
Constructs Azure File Storage results URL
78-
79-
Parameters:
80-
job_id: job ID
81-
82-
Returns:
83-
URL that contains results of the job run
84-
'''
85-
return(
86-
"https://ms.portal.azure.com/#blade/Microsoft_Azure_FileStorage/"
87-
"FileShareMenuBlade/overview/storageAccountId/"
88-
f"%2Fsubscriptions%2F{self.definitions.subscription}"
89-
f"%2FresourceGroups%2F{self.definitions.resource_group}"
90-
f"%2Fproviders%2FMicrosoft.Storage%2FstorageAccounts%2F"
91-
f"{self.definitions.storage_account}/"
92-
f"path/{job_id}/protocol/")
93-
9475
def job_status(self, job_id):
9576
'''
9677
Gets job status
@@ -286,6 +267,10 @@ def print_status(self, status):
286267
for s in status:
287268
if s['agentName'] == s['jobId']:
288269
print(f"{s['jobId']} {s['state']}")
270+
if s.get('utcEventTime'):
271+
print(f'UtcEventTime: {s["utcEventTime"]}')
272+
if s.get('resultsUrl'):
273+
print(f'Results: {s["resultsUrl"]}')
289274
if s.get('details'):
290275
print("Details:")
291276
for k in s['details']:
@@ -321,6 +306,7 @@ def print_status(self, status):
321306
print("Details:")
322307
for k in s['details']:
323308
print(f"{k} : {s['details'][k]}")
309+
324310
print('======================')
325311

326312
def poll(self, job_id, poll_interval=10):

src/APIService/ApiService/APIServiceTests/JobVerb_Tests_DeleteJob.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type DeleteJobTests() =
3333
let fakeMessageSender = Fixtures.createFakeMessageSender Raft.Message.ServiceBus.Queue.delete
3434

3535
let jobStatusJson = File.ReadAllText("test-job-status.json")
36-
let entity = JobStatusEntity(System.Guid.Parse("29211868-8178-4e81-9b8d-d52025b4c2d4").ToString(), "testAgent", jobStatusJson, "Created")
36+
let entity = JobStatusEntity(System.Guid.Parse("29211868-8178-4e81-9b8d-d52025b4c2d4").ToString(), "testAgent", jobStatusJson, "Created", System.DateTime.UtcNow, "http://some-url")
3737

3838
Raft.Utilities.raftStorage <- Fixtures.createFakeRaftStorage (Some entity)
3939

src/APIService/ApiService/APIServiceTests/JobVerb_Tests_GetJobStatus.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type GetJobStatusTests() =
3333
member this.``GET /jobs/restler succeeds`` () =
3434
async {
3535
let jobStatusJson = File.ReadAllText("test-job-status.json")
36-
let entity = JobStatusEntity(Guid.Parse("29211868-8178-4e81-9b8d-d52025b4c2d4").ToString(), "29211868-8178-4e81-9b8d-d52025b4c2d4", jobStatusJson, "Created")
36+
let entity = JobStatusEntity(Guid.Parse("29211868-8178-4e81-9b8d-d52025b4c2d4").ToString(), "29211868-8178-4e81-9b8d-d52025b4c2d4", jobStatusJson, "Created", System.DateTime.UtcNow, "http://some-url")
3737
Raft.Utilities.raftStorage <- Fixtures.createFakeRaftStorage (Some entity)
3838

3939
let jobController = jobsController(Fixtures.createFakeTelemetryClient, Fixtures.createFakeLogger<jobsController>)

src/APIService/ApiService/APIServiceTests/JobVerb_Tests_ListJobStatuses.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type ListJobStatusesTests() =
3030
member this.``LIST /jobs/restler succeeds`` () =
3131
async {
3232
let jobStatusJson = File.ReadAllText("test-job-status.json")
33-
let entity = JobStatusEntity(Guid.Parse("29211868-8178-4e81-9b8d-d52025b4c2d4").ToString(), "testAgent", jobStatusJson, "Created")
33+
let entity = JobStatusEntity(Guid.Parse("29211868-8178-4e81-9b8d-d52025b4c2d4").ToString(), "testAgent", jobStatusJson, "Created", System.DateTime.UtcNow, "http://some-url")
3434
Raft.Utilities.raftStorage <- Fixtures.createFakeRaftStorage (Some entity)
3535

3636
let jobController = jobsController(Fixtures.createFakeTelemetryClient, Fixtures.createFakeLogger<jobsController>)

src/APIService/ApiService/APIServiceTests/JobVerb_Tests_RePostJob.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ type jobsRePOSTTests() =
2020
let jobId = System.Guid.NewGuid().ToString()
2121

2222
let jobStatusJson = File.ReadAllText("test-job-status.json")
23-
let entity = JobStatusEntity(jobId, jobId, jobStatusJson, "Created")
23+
let entity = JobStatusEntity(jobId, jobId, jobStatusJson, "Created", System.DateTime.UtcNow, "http://some-url")
2424
Raft.Utilities.raftStorage <- Fixtures.createFakeRaftStorage (Some entity)
2525
Raft.Utilities.toolsSchemas <- Map.empty.Add("RESTler", None)
2626

src/APIService/ApiService/Controllers/Job.fs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,17 @@ type jobsController(telemetryClient : TelemetryClient, logger : ILogger<jobsCont
355355
| Some r -> return Some (r, results)
356356
}
357357

358+
let convertToJobStatus(overallJobStatus: JobStatusEntity) (results: JobStatusEntity seq) =
359+
results
360+
|> Seq.map (fun jobStatusEntity -> (Raft.Message.RaftEvent.deserializeEvent jobStatusEntity.JobStatus): Message.RaftEvent.RaftJobEvent<DTOs.JobStatus>)
361+
|> Seq.map (fun jobStatus ->
362+
if jobStatus.Message.AgentName = jobStatus.Message.JobId then
363+
{ jobStatus.Message with ResultsUrl = overallJobStatus.ResultsUrl }
364+
else
365+
jobStatus.Message
366+
)
367+
368+
358369
[<HttpPost>]
359370
/// <summary>
360371
/// Submit a job definition.
@@ -596,12 +607,8 @@ type jobsController(telemetryClient : TelemetryClient, logger : ILogger<jobsCont
596607
Details = [||]
597608
InnerError = {Message = ""}
598609
}} Microsoft.AspNetCore.Http.StatusCodes.Status404NotFound
599-
| Some (_, results) ->
600-
let decodedMessages =
601-
results
602-
|> Seq.map (fun jobStatusEntity -> (Raft.Message.RaftEvent.deserializeEvent jobStatusEntity.JobStatus): Message.RaftEvent.RaftJobEvent<DTOs.JobStatus>)
603-
|> Seq.map (fun jobStatus -> jobStatus.Message)
604-
610+
| Some (r, results) ->
611+
let decodedMessages = convertToJobStatus r results
605612
stopWatch.Stop()
606613
Central.Telemetry.TrackMetric (TelemetryValues.ApiRequest(method, float stopWatch.ElapsedMilliseconds), "milliseconds", this :> ControllerBase)
607614
return JsonResult(decodedMessages)
@@ -641,7 +648,6 @@ type jobsController(telemetryClient : TelemetryClient, logger : ILogger<jobsCont
641648
Constants.Timestamp, QueryComparisons.GreaterThanOrEqual,
642649
DateTimeOffset.Now.Subtract(defaultTimeSpan)))
643650

644-
645651
let! result = Utilities.raftStorage.GetJobStatusEntities query
646652

647653
let statuses : DTOs.JobStatus seq = result

src/APIService/ApiService/Controllers/Webhook.fs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,8 @@ type webhooksController(configuration : IConfiguration, telemetryClient : Teleme
368368
Metrics = None
369369
UtcEventTime = DateTime.UtcNow
370370
Details = Some (Map.empty.Add("Method", method))
371-
Metadata = None
371+
Metadata = Some (Map.empty.Add("BuildId", "123456"))
372+
ResultsUrl = Some(sprintf "http://results.file.share/%s" jobId)
372373
}
373374
log.Info "Setting JobStatus webhook in webhooks table" ["name", webhookName; "event", eventName; "jobId", sprintf "%A" jobId]
374375
let entity = Raft.StorageEntities.JobWebhookEntity(jobId, webhookName) :> TableEntity

src/APIService/ApiService/DTOs.fs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,4 +318,5 @@ module DTOs =
318318

319319
AgentName : string
320320

321+
ResultsUrl : string
321322
}

src/Agent/RESTlerAgent/AgentMain.fs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,7 @@ let main argv =
506506
Metrics = None
507507
UtcEventTime = System.DateTime.UtcNow
508508
Details = None
509+
ResultsUrl = None
509510
}: Raft.JobEvents.JobStatus)
510511

511512
printfn "Got job configuration message: %A" restlerPayload
@@ -569,6 +570,7 @@ let main argv =
569570
Metrics = summary
570571
UtcEventTime = System.DateTime.UtcNow
571572
Details = Some( details.Add("numberOfBugsFound", sprintf "%d" bugsListLen))
573+
ResultsUrl = None
572574
} : Raft.JobEvents.JobStatus)
573575
}
574576

@@ -841,6 +843,7 @@ let main argv =
841843
Metrics = None
842844
UtcEventTime = System.DateTime.UtcNow
843845
Details = Some (Map.ofSeq replaySummaryDetails)
846+
ResultsUrl = None
844847
} : Raft.JobEvents.JobStatus)
845848

846849
return replaySummaryDetails
@@ -924,6 +927,7 @@ let main argv =
924927
Metrics = summary
925928
UtcEventTime = System.DateTime.UtcNow
926929
Details = details
930+
ResultsUrl = None
927931
} : Raft.JobEvents.JobStatus)
928932

929933
let restlerTelemetry = Restler.Telemetry.getDataFromTestingSummary testingSummary
@@ -958,6 +962,7 @@ let main argv =
958962
Metrics = None
959963
UtcEventTime = System.DateTime.UtcNow
960964
Details = Some (Map.empty.Add("Error", ex.Message))
965+
ResultsUrl = None
961966
} : Raft.JobEvents.JobStatus)
962967

963968
do! System.Console.Error.FlushAsync().ToAsync

0 commit comments

Comments
 (0)