diff --git a/dist/index.js b/dist/index.js index 0190c6d5..07bc4193 100644 Binary files a/dist/index.js and b/dist/index.js differ diff --git a/dist/index.js.map b/dist/index.js.map index 3911b7d8..2c2d23f0 100644 Binary files a/dist/index.js.map and b/dist/index.js.map differ diff --git a/src/model/cloud-runner/providers/k8s/kubernetes-task-runner.ts b/src/model/cloud-runner/providers/k8s/kubernetes-task-runner.ts index e9588591..b777c4d2 100644 --- a/src/model/cloud-runner/providers/k8s/kubernetes-task-runner.ts +++ b/src/model/cloud-runner/providers/k8s/kubernetes-task-runner.ts @@ -43,13 +43,13 @@ class KubernetesTaskRunner { CloudRunnerLogger.log(`Log Start found in logs`); } if (chunk.includes(`LOGHASH:`)) { - RemoteClientLogger.HandleLogChunkLine(chunk); + RemoteClientLogger.HandleLogHash(chunk); CloudRunnerLogger.log(`Loghash found`); } if (chunk.includes(`LOGS:`)) { // remove "LOGS: " and decode base64 remaining const unpacked = Buffer.from(chunk.split(`LOGS: `)[1], 'base64').toString('ascii'); - const result = RemoteClientLogger.HandleLogChunkLine(unpacked); + const result = RemoteClientLogger.HandleLogFull(unpacked); CloudRunnerLogger.log(`Logs found HandleLogChunkLineResult:${result}`); } } @@ -73,13 +73,19 @@ class KubernetesTaskRunner { const splitLogs = logs.split(`\n`); for (const chunk of splitLogs) { const message = CloudRunner.buildParameters.cloudRunnerDebug ? chunk : chunk.split(`Z `)[1]; + + // if line contains "LOGS: " then stop + if (message.includes(`LOGS:`)) { + CloudRunnerLogger.log(`LOGS: found`); + break; + } ({ shouldReadLogs, shouldCleanup, output } = FollowLogStreamService.handleIteration( message, shouldReadLogs, shouldCleanup, output, )); - const result = RemoteClientLogger.HandleLogChunkLine(message); + const result = RemoteClientLogger.HandleLog(message); if (result) { FollowLogStreamService.DidReceiveEndOfTransmission = true; } diff --git a/src/model/cloud-runner/remote-client/remote-client-logger.ts b/src/model/cloud-runner/remote-client/remote-client-logger.ts index b3bb5e2c..ce9f94ce 100644 --- a/src/model/cloud-runner/remote-client/remote-client-logger.ts +++ b/src/model/cloud-runner/remote-client/remote-client-logger.ts @@ -68,10 +68,9 @@ export class RemoteClientLogger { await new Promise((resolve) => setTimeout(resolve, 15000)); } } - public static HandleLogChunkLine(message: string): boolean { + public static HandleLog(message: string): boolean { if (message.includes('LOGHASH: ')) { - RemoteClientLogger.md5 = message.split(`LOGHASH: `)[1]; - CloudRunnerLogger.log(`LOGHASH: ${RemoteClientLogger.md5}`); + RemoteClientLogger.HandleLogHash(message); } else { if (RemoteClientLogger.value !== '') { RemoteClientLogger.value += `\n`; @@ -88,6 +87,24 @@ export class RemoteClientLogger { return false; } + public static HandleLogHash(message: string) { + if (message.includes('LOGHASH: ')) { + RemoteClientLogger.md5 = message.split(`LOGHASH: `)[1]; + CloudRunnerLogger.log(`LOGHASH: ${RemoteClientLogger.md5}`); + } else { + throw new Error(`LOGHASH: not found`); + } + } + public static HandleLogFull(message: string): boolean { + const hashedValue = md5(message); + if (RemoteClientLogger.md5 === hashedValue) { + CloudRunnerLogger.log(`LOG COMPLETE`); + + return true; + } + + return false; + } static value: string = ''; static md5: any; } diff --git a/src/model/cloud-runner/tests/e2e/cloud-runner-remote-client.test.ts b/src/model/cloud-runner/tests/e2e/cloud-runner-remote-client.test.ts index ba1f4051..e08e67d2 100644 --- a/src/model/cloud-runner/tests/e2e/cloud-runner-remote-client.test.ts +++ b/src/model/cloud-runner/tests/e2e/cloud-runner-remote-client.test.ts @@ -9,10 +9,10 @@ describe('Cloud Runner Remote Client', () => { const testLogStream = 'Test \n Log \n Stream'; const splitLogStream = testLogStream.split('\n'); - RemoteClientLogger.HandleLogChunkLine(`LOGHASH: ${md5(testLogStream)}`); + RemoteClientLogger.HandleLog(`LOGHASH: ${md5(testLogStream)}`); let completed = false; for (const element of splitLogStream) { - completed = RemoteClientLogger.HandleLogChunkLine(element); + completed = RemoteClientLogger.HandleLog(element); } expect(completed).toBeTruthy(); }, 1_000_000_000);