From 61fa8bb18b3d942e23a1a5080cf7b783accd0bca Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 09:05:32 +0200 Subject: [PATCH 01/24] test: debug yagna status in CI tests --- .github/actions/prepare-tests/action.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/actions/prepare-tests/action.yml b/.github/actions/prepare-tests/action.yml index a05b565..add2b45 100644 --- a/.github/actions/prepare-tests/action.yml +++ b/.github/actions/prepare-tests/action.yml @@ -50,6 +50,11 @@ runs: run: | docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm i && npm run build" + - name: Check yagna status + shell: bash + run: | + docker exec -t docker-requestor-1 /bin/sh -c "yagna net status && yagna net sessions" + - name: Install Cypress if: ${{ inputs.type == 'cypress' }} shell: bash From 1b39af19217d9a189f5eb02d8bc7a7350463bbe5 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 11:27:54 +0200 Subject: [PATCH 02/24] test: added YA_NET_BROADCAST_SIZE env to requestor dockerfile --- tests/docker/docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml index 7262bb3..dff5789 100644 --- a/tests/docker/docker-compose.yml +++ b/tests/docker/docker-compose.yml @@ -61,6 +61,7 @@ services: - YAGNA_SUBNET=${YAGNA_SUBNET:-golemjstest} - YAGNA_APPKEY=try_golem - PAYMENT_NETWORK=${PAYMENT_NETWORK} + - YA_NET_BROADCAST_SIZE=30 healthcheck: test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' http://localhost:7465 | grep -q 401"] From ecb824384089c6911b32e2d328e34a5a0dbd3c03 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 11:56:15 +0200 Subject: [PATCH 03/24] test: fixed e2e tests --- tests/e2e/tasks.spec.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/e2e/tasks.spec.ts b/tests/e2e/tasks.spec.ts index 3d0e37c..510558f 100644 --- a/tests/e2e/tasks.spec.ts +++ b/tests/e2e/tasks.spec.ts @@ -46,7 +46,6 @@ describe("Task Executor", function () { const verifyAllExpectedEventsEmitted = () => { expect(emittedEventsNames).toContain("taskStarted"); - expect(emittedEventsNames).toContain("taskCompleted"); expect(emittedEventsNames).toContain("offerProposalReceived"); expect(emittedEventsNames).toContain("agreementApproved"); expect(emittedEventsNames).toContain("activityCreated"); @@ -290,7 +289,6 @@ describe("Task Executor", function () { }, task: { maxTaskRetries: 0, - setup: async (exe) => Promise.reject("Error"), }, }); @@ -302,7 +300,7 @@ describe("Task Executor", function () { let isRetry = false; executor.events.on("taskRetried", () => (isRetry = true)); try { - await executor.run(async (exe) => console.log((await exe.run("echo 'Hello World'")).stdout)); + await executor.run(async (exe) => Promise.reject("Error")); } catch (error) { await executor.shutdown(); } @@ -327,7 +325,6 @@ describe("Task Executor", function () { }, task: { maxTaskRetries: 7, - setup: async (exe) => Promise.reject("Error"), }, }); @@ -339,7 +336,7 @@ describe("Task Executor", function () { let isRetry = false; executor.events.on("taskRetried", () => (isRetry = true)); try { - await executor.run(async (exe) => console.log((await exe.run("echo 'Hello World'")).stdout), { maxRetries: 0 }); + await executor.run(async (exe) => Promise.reject("Error"), { maxRetries: 0 }); } catch (error) { await executor.shutdown(); } From a344b2fbd2b3551db20636716a906f3f909f39b3 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 12:12:05 +0200 Subject: [PATCH 04/24] test: set provider env docker --- tests/docker/docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml index dff5789..c1936c2 100644 --- a/tests/docker/docker-compose.yml +++ b/tests/docker/docker-compose.yml @@ -22,6 +22,7 @@ services: environment: - NODE_NAME=provider-1 - SUBNET=${YAGNA_SUBNET:-golemjstest} + - YA_NET_BROADCAST_SIZE=30 provider-2: build: context: . @@ -44,6 +45,7 @@ services: environment: - NODE_NAME=provider-2 - SUBNET=${YAGNA_SUBNET:-golemjstest} + - YA_NET_BROADCAST_SIZE=30 requestor: build: context: . From a49c97a90a493aa4e81ee5865924880049ba8728 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 12:18:53 +0200 Subject: [PATCH 05/24] test: increased requestor env docker --- tests/docker/docker-compose.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml index c1936c2..f7f221c 100644 --- a/tests/docker/docker-compose.yml +++ b/tests/docker/docker-compose.yml @@ -22,7 +22,6 @@ services: environment: - NODE_NAME=provider-1 - SUBNET=${YAGNA_SUBNET:-golemjstest} - - YA_NET_BROADCAST_SIZE=30 provider-2: build: context: . @@ -45,7 +44,6 @@ services: environment: - NODE_NAME=provider-2 - SUBNET=${YAGNA_SUBNET:-golemjstest} - - YA_NET_BROADCAST_SIZE=30 requestor: build: context: . @@ -63,7 +61,7 @@ services: - YAGNA_SUBNET=${YAGNA_SUBNET:-golemjstest} - YAGNA_APPKEY=try_golem - PAYMENT_NETWORK=${PAYMENT_NETWORK} - - YA_NET_BROADCAST_SIZE=30 + - YA_NET_BROADCAST_SIZE=50 healthcheck: test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' http://localhost:7465 | grep -q 401"] From 3a16aa3c565fb3f5f9718ba6dfe537a06972cd39 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 12:35:09 +0200 Subject: [PATCH 06/24] test: fixed example test --- .../examples/composing-tasks/alert-code.mjs | 10 +++++++--- tests/docker/docker-compose.yml | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/examples/docs-examples/examples/composing-tasks/alert-code.mjs b/examples/docs-examples/examples/composing-tasks/alert-code.mjs index a9a6e4d..2455d45 100644 --- a/examples/docs-examples/examples/composing-tasks/alert-code.mjs +++ b/examples/docs-examples/examples/composing-tasks/alert-code.mjs @@ -22,7 +22,7 @@ import { pinoPrettyLogger } from "@golem-sdk/pino-logger"; try { const result = await executor.run(async (exe) => { - const res = await exe + const stream = await exe .beginBatch() .uploadFile("./worker.mjs", "/golem/input/worker.mjs") .run("node /golem/input/worker.mjs > /golem/input/output.txt") @@ -30,10 +30,14 @@ import { pinoPrettyLogger } from "@golem-sdk/pino-logger"; .downloadFile("/golem/input/output.txt", "./output.txt") .endStream(); - res.subscribe((chunk) => { - if (chunk.index === 2) console.log(chunk.stdout); + return new Promise((resolve, reject) => { + stream.subscribe((chunk, error) => { + if (chunk.index === 2) resolve(chunk.stdout); + if (error) reject(error); + }); }); }); + console.log(result); } catch (err) { console.error("Task encountered an error:", err); } finally { diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml index f7f221c..dae165f 100644 --- a/tests/docker/docker-compose.yml +++ b/tests/docker/docker-compose.yml @@ -61,7 +61,7 @@ services: - YAGNA_SUBNET=${YAGNA_SUBNET:-golemjstest} - YAGNA_APPKEY=try_golem - PAYMENT_NETWORK=${PAYMENT_NETWORK} - - YA_NET_BROADCAST_SIZE=50 + - YA_NET_BROADCAST_SIZE=10 healthcheck: test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' http://localhost:7465 | grep -q 401"] From 10f8703b823b47b46095b395159a7c14f9fd3112 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 12:57:48 +0200 Subject: [PATCH 07/24] test: fixed e2e tests event assertions --- tests/docker/docker-compose.yml | 2 +- tests/e2e/tasks.spec.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml index dae165f..9b94458 100644 --- a/tests/docker/docker-compose.yml +++ b/tests/docker/docker-compose.yml @@ -61,7 +61,7 @@ services: - YAGNA_SUBNET=${YAGNA_SUBNET:-golemjstest} - YAGNA_APPKEY=try_golem - PAYMENT_NETWORK=${PAYMENT_NETWORK} - - YA_NET_BROADCAST_SIZE=10 + - YA_NET_BROADCAST_SIZE=100 healthcheck: test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' http://localhost:7465 | grep -q 401"] diff --git a/tests/e2e/tasks.spec.ts b/tests/e2e/tasks.spec.ts index 510558f..d9b9bef 100644 --- a/tests/e2e/tasks.spec.ts +++ b/tests/e2e/tasks.spec.ts @@ -51,7 +51,6 @@ describe("Task Executor", function () { expect(emittedEventsNames).toContain("activityCreated"); expect(emittedEventsNames).toContain("exeUnitInitialized"); expect(emittedEventsNames).toContain("scriptExecuted"); - expect(emittedEventsNames).toContain("debitNoteReceived"); expect(emittedEventsNames).toContain("invoiceAccepted"); }; From bad7418e7b167ea3b00b600c4977ae7305bb45c5 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 13:33:13 +0200 Subject: [PATCH 08/24] fix: added abort controller in task service --- .../running-parallel-tasks/index.mjs | 6 +---- src/service.ts | 27 ++++++++++++------- tests/e2e/tasks.spec.ts | 4 +-- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/examples/docs-examples/tutorials/running-parallel-tasks/index.mjs b/examples/docs-examples/tutorials/running-parallel-tasks/index.mjs index a0dd9a1..a9b1230 100644 --- a/examples/docs-examples/tutorials/running-parallel-tasks/index.mjs +++ b/examples/docs-examples/tutorials/running-parallel-tasks/index.mjs @@ -40,11 +40,7 @@ async function main(args) { const password = await executor.run(async (exe) => { const [, potfileResult] = await exe .beginBatch() - .run( - `hashcat -a 3 -m 400 '${args.hash}' '${args.mask}' --skip=${skip} --limit=${ - skip + step - } -o pass.potfile || true`, - ) + .run(`hashcat -a 3 -m 400 '${args.hash}' '${args.mask}' --skip=${skip} --limit=${step} -o pass.potfile || true`) .run("cat pass.potfile || true") .end(); if (!potfileResult.stdout) return false; diff --git a/src/service.ts b/src/service.ts index edb5d4e..6f467b4 100644 --- a/src/service.ts +++ b/src/service.ts @@ -1,6 +1,13 @@ import { Task, TaskState } from "./task"; import { TaskQueue } from "./queue"; -import { GolemInternalError, GolemTimeoutError, GolemWorkError, ResourceRentalPool, Logger } from "@golem-sdk/golem-js"; +import { + GolemInternalError, + GolemTimeoutError, + GolemWorkError, + ResourceRentalPool, + Logger, + anyAbortSignal, +} from "@golem-sdk/golem-js"; import { sleep } from "./utils"; import { EventEmitter } from "eventemitter3"; import { ExecutorEvents } from "./events"; @@ -15,7 +22,7 @@ export interface TaskServiceOptions { */ export class TaskService { private activeTasksCount = 0; - private isRunning = false; + private abortController = new AbortController(); /** To keep track of the stat */ private retryCountTotal = 0; @@ -29,10 +36,9 @@ export class TaskService { ) {} public async run() { - this.isRunning = true; this.logger.info("Task Service has started"); await this.resourceRentalPool.ready(); - while (this.isRunning) { + while (!this.abortController.signal.aborted) { if (this.activeTasksCount >= this.options.maxParallelTasks) { await sleep(0); continue; @@ -50,13 +56,14 @@ export class TaskService { } }); this.startTask(task).catch( - (error) => this.isRunning && this.logger.error(`Issue with starting a task on Golem`, error), + (error) => + !this.abortController.signal.aborted && this.logger.error(`Issue with starting a task on Golem`, error), ); } } async end() { - this.isRunning = false; + this.abortController.abort(); this.logger.info("Task Service has been stopped", { stats: { retryCountTotal: this.retryCountTotal, @@ -80,13 +87,15 @@ export class TaskService { abortController.abort(); } }); - const rental = await this.resourceRentalPool.acquire(abortController.signal); + const rental = await this.resourceRentalPool.acquire( + anyAbortSignal(this.abortController.signal, abortController.signal), + ); if (task.isFailed()) { throw new GolemInternalError(`Execution of task ${task.id} aborted due to error. ${task.getError()}`); } - const exe = await rental.getExeUnit(); + const exe = await rental.getExeUnit(abortController.signal); task.start(rental, exe); this.events.emit("taskStarted", task.getDetails()); this.logger.info(`Task started`, { @@ -110,7 +119,7 @@ export class TaskService { } private async retryTask(task: Task) { - if (!this.isRunning) return; + if (this.abortController.signal.aborted) return; task.cleanup(); await this.releaseTaskResources(task); const reason = task.getError()?.message; diff --git a/tests/e2e/tasks.spec.ts b/tests/e2e/tasks.spec.ts index d9b9bef..16478c5 100644 --- a/tests/e2e/tasks.spec.ts +++ b/tests/e2e/tasks.spec.ts @@ -41,7 +41,7 @@ describe("Task Executor", function () { golemEvents.activity.on("exeUnitInitialized", () => emittedEventsNames.add("exeUnitInitialized")); golemEvents.activity.on("scriptExecuted", () => emittedEventsNames.add("scriptExecuted")); golemEvents.payment.on("debitNoteReceived", () => emittedEventsNames.add("debitNoteReceived")); - golemEvents.payment.on("invoiceAccepted", () => emittedEventsNames.add("invoiceAccepted")); + golemEvents.payment.on("invoiceReceived", () => emittedEventsNames.add("invoiceReceived")); }; const verifyAllExpectedEventsEmitted = () => { @@ -51,7 +51,7 @@ describe("Task Executor", function () { expect(emittedEventsNames).toContain("activityCreated"); expect(emittedEventsNames).toContain("exeUnitInitialized"); expect(emittedEventsNames).toContain("scriptExecuted"); - expect(emittedEventsNames).toContain("invoiceAccepted"); + expect(emittedEventsNames).toContain("invoiceReceived"); }; beforeEach(() => { From 660f988a443d82c9061b12faf6a2d5d75c6aaf92 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 13:40:43 +0200 Subject: [PATCH 09/24] fix: added abort controller in task service --- src/service.spec.ts | 2 +- src/service.ts | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/service.spec.ts b/src/service.spec.ts index f233171..5d2a5bb 100644 --- a/src/service.spec.ts +++ b/src/service.spec.ts @@ -35,7 +35,7 @@ describe("Task Service", () => { when(resourceRentalPoolMock.acquire(_)).thenResolve(instance(resourceRentalMock)); when(resourceRentalMock.agreement).thenReturn(instance(agreementMock)); when(agreementMock.provider).thenReturn(testProvider); - when(resourceRentalMock.getExeUnit()).thenResolve(instance(exeUnitMock)); + when(resourceRentalMock.getExeUnit(_)).thenResolve(instance(exeUnitMock)); when(resourceRentalMock.stopAndFinalize()).thenResolve(); when(exeUnitMock.run(_)).thenCall(async () => { await sleep(100, true); diff --git a/src/service.ts b/src/service.ts index 6f467b4..32ac3ea 100644 --- a/src/service.ts +++ b/src/service.ts @@ -87,15 +87,14 @@ export class TaskService { abortController.abort(); } }); - const rental = await this.resourceRentalPool.acquire( - anyAbortSignal(this.abortController.signal, abortController.signal), - ); + const signal = anyAbortSignal(this.abortController.signal, abortController.signal); + const rental = await this.resourceRentalPool.acquire(signal); if (task.isFailed()) { throw new GolemInternalError(`Execution of task ${task.id} aborted due to error. ${task.getError()}`); } - const exe = await rental.getExeUnit(abortController.signal); + const exe = await rental.getExeUnit(signal); task.start(rental, exe); this.events.emit("taskStarted", task.getDetails()); this.logger.info(`Task started`, { From 9d8ad173d181a74938f82a5e2b859dede4c03add Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 14:12:26 +0200 Subject: [PATCH 10/24] test: split workflow to reusable parts --- .github/workflows/ci.yml | 2 + .github/workflows/cypress-tests.yml | 75 ++++++++++++++++++ .github/workflows/e2e-tests.yml | 63 +++++++++++++++ .github/workflows/examples-tests.yml | 56 ++++++++++++++ .github/workflows/regular-checks.yml | 48 ++++++++++++ .github/workflows/release.yml | 110 +-------------------------- tests/docker/docker-compose.yml | 4 +- 7 files changed, 251 insertions(+), 107 deletions(-) create mode 100644 .github/workflows/cypress-tests.yml create mode 100644 .github/workflows/e2e-tests.yml create mode 100644 .github/workflows/examples-tests.yml create mode 100644 .github/workflows/regular-checks.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1acf67e..79e5cc4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,8 @@ on: # Support, hotfix branches like: 1.0.x or 1.x - '([0-9]+)(\.([0-9]+))?\.x' + workflow_call: + # Allows triggering the workflow manually workflow_dispatch: diff --git a/.github/workflows/cypress-tests.yml b/.github/workflows/cypress-tests.yml new file mode 100644 index 0000000..41fb65a --- /dev/null +++ b/.github/workflows/cypress-tests.yml @@ -0,0 +1,75 @@ +name: cypress tests + +on: + workflow_call: + # Allows triggering the workflow manually + workflow_dispatch: + inputs: + payment_network: + description: "Payment network (holesky, goerli, mainnet, mumbai, polygon, rinkeby)" + required: false + default: "holesky" + provider_version: + description: "Provider version (e.g., v0.15.2 or pre-rel-v0.15.1)" + required: false + default: "v0.15.2" + requestor_version: + description: "Requestor version (e.g., v0.15.2 or pre-rel-v0.15.1)" + required: false + default: "v0.15.2" + provider_wasi_version: + description: "Provider WASI version (e.g., v0.2.2)" + required: false + default: "v0.2.2" + provider_vm_version: + description: "Provider VM version (e.g., v0.3.0)" + required: false + default: "v0.3.0" + +# We're going to interact with GH from the pipelines, so we need to get some permissions +permissions: + contents: read # for checkout + +env: + PROVIDER_VERSION: ${{ github.event.inputs.provider_version || 'v0.15.2' }} + REQUESTOR_VERSION: ${{ github.event.inputs.requestor_version || 'v0.15.2' }} + PROVIDER_WASI_VERSION: ${{ github.event.inputs.provider_wasi_version || 'v0.2.2' }} + PROVIDER_VM_VERSION: ${{ github.event.inputs.provider_vm_version || 'v0.3.0' }} + PAYMENT_NETWORK: ${{ github.event.inputs.payment_network || 'holesky' }} + +jobs: + run-cypress-tests: + name: Run Cypress tests + runs-on: goth2 + steps: + - uses: actions/checkout@v4 + + - name: Prepare providers and requestor + uses: ./.github/actions/prepare-tests + with: + type: "cypress" + + - name: Copy docs examples + run: docker exec -t docker-requestor-1 /bin/sh -c ' + cp /golem-sdk-task-executor/examples/docs-examples/examples/transferring-data/transfer-data-in-browser.html /golem-sdk-task-executor/examples/web/ && + cp /golem-sdk-task-executor/examples/docs-examples/examples/transferring-data/upload-json-in-browser.html /golem-sdk-task-executor/examples/web/ && + cp /golem-sdk-task-executor/examples/docs-examples/quickstarts/web-quickstart/index.html /golem-sdk-task-executor/examples/web/quickstart.html && + cp /golem-sdk-task-executor/examples/docs-examples/quickstarts/web-quickstart/requestor.mjs /golem-sdk-task-executor/examples/web/ && + cp /golem-sdk-task-executor/examples/docs-examples/tutorials/running-from-browser/index.html /golem-sdk-task-executor/examples/web/tutorial.html' + - name: Run web server + run: docker exec -t -d docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor/examples && npm run web" + + - name: Run test suite + run: docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm run test:cypress -- --browser chromium" + + - name: Upload test logs + uses: actions/upload-artifact@v4 + if: always() + with: + name: cypress-logs + path: .cypress + + - name: Cleanup test environment + uses: ./.github/actions/cleanup-tests + with: + type: "cypress" diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml new file mode 100644 index 0000000..1b46f0f --- /dev/null +++ b/.github/workflows/e2e-tests.yml @@ -0,0 +1,63 @@ +name: e2e tests + +on: + workflow_call: + # Allows triggering the workflow manually + workflow_dispatch: + inputs: + payment_network: + description: "Payment network (holesky, goerli, mainnet, mumbai, polygon, rinkeby)" + required: false + default: "holesky" + provider_version: + description: "Provider version (e.g., v0.15.2 or pre-rel-v0.15.1)" + required: false + default: "v0.15.2" + requestor_version: + description: "Requestor version (e.g., v0.15.2 or pre-rel-v0.15.1)" + required: false + default: "v0.15.2" + provider_wasi_version: + description: "Provider WASI version (e.g., v0.2.2)" + required: false + default: "v0.2.2" + provider_vm_version: + description: "Provider VM version (e.g., v0.3.0)" + required: false + default: "v0.3.0" + +# We're going to interact with GH from the pipelines, so we need to get some permissions +permissions: + contents: read # for checkout + +env: + PROVIDER_VERSION: ${{ github.event.inputs.provider_version || 'v0.15.2' }} + REQUESTOR_VERSION: ${{ github.event.inputs.requestor_version || 'v0.15.2' }} + PROVIDER_WASI_VERSION: ${{ github.event.inputs.provider_wasi_version || 'v0.2.2' }} + PROVIDER_VM_VERSION: ${{ github.event.inputs.provider_vm_version || 'v0.3.0' }} + PAYMENT_NETWORK: ${{ github.event.inputs.payment_network || 'holesky' }} + +jobs: + run-e2e-tests: + name: Run E2E tests + runs-on: goth2 + steps: + - uses: actions/checkout@v4 + + - name: Prepare providers and requestor + uses: ./.github/actions/prepare-tests + + - name: Start the E2E test + run: docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm run test:e2e" + + - name: Upload E2E reports + uses: actions/upload-artifact@v4 + if: always() + with: + name: e2e-test-report + path: reports/e2e-report.xml + + - name: Cleanup test environment + uses: ./.github/actions/cleanup-tests + with: + type: "e2e" diff --git a/.github/workflows/examples-tests.yml b/.github/workflows/examples-tests.yml new file mode 100644 index 0000000..d96c583 --- /dev/null +++ b/.github/workflows/examples-tests.yml @@ -0,0 +1,56 @@ +name: examples tests + +on: + workflow_call: + # Allows triggering the workflow manually + workflow_dispatch: + inputs: + payment_network: + description: "Payment network (holesky, goerli, mainnet, mumbai, polygon, rinkeby)" + required: false + default: "holesky" + provider_version: + description: "Provider version (e.g., v0.15.2 or pre-rel-v0.15.1)" + required: false + default: "v0.15.2" + requestor_version: + description: "Requestor version (e.g., v0.15.2 or pre-rel-v0.15.1)" + required: false + default: "v0.15.2" + provider_wasi_version: + description: "Provider WASI version (e.g., v0.2.2)" + required: false + default: "v0.2.2" + provider_vm_version: + description: "Provider VM version (e.g., v0.3.0)" + required: false + default: "v0.3.0" + +# We're going to interact with GH from the pipelines, so we need to get some permissions +permissions: + contents: read # for checkout + +env: + PROVIDER_VERSION: ${{ github.event.inputs.provider_version || 'v0.15.2' }} + REQUESTOR_VERSION: ${{ github.event.inputs.requestor_version || 'v0.15.2' }} + PROVIDER_WASI_VERSION: ${{ github.event.inputs.provider_wasi_version || 'v0.2.2' }} + PROVIDER_VM_VERSION: ${{ github.event.inputs.provider_vm_version || 'v0.3.0' }} + PAYMENT_NETWORK: ${{ github.event.inputs.payment_network || 'holesky' }} + +jobs: + run-examples-tests: + name: Run Examples tests + runs-on: goth2 + steps: + - uses: actions/checkout@v4 + + - name: Prepare providers and requestor + uses: ./.github/actions/prepare-tests + + - name: Run the Examples tests + run: docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm run test:examples -- --exitOnError" + + - name: Cleanup test environment + uses: ./.github/actions/cleanup-tests + with: + type: "examples" diff --git a/.github/workflows/regular-checks.yml b/.github/workflows/regular-checks.yml new file mode 100644 index 0000000..8af91b8 --- /dev/null +++ b/.github/workflows/regular-checks.yml @@ -0,0 +1,48 @@ +name: regular tests + +on: + workflow_call: + + workflow_dispatch: + +# We're going to interact with GH from the pipelines, so we need to get some permissions +permissions: + contents: read # for checkout + +jobs: + regular-checks: + name: Build and unit-test on supported platforms and NodeJS versions + strategy: + matrix: + # Make sure you're addressing it to the minor version, as sometimes macos was picking 20.9 while others 20.10 + # and that caused issues with rollup + node-version: [18.19.x, 20.10.x] + os: [ubuntu-latest, windows-latest, macos-latest] + + runs-on: ${{ matrix.os }} + timeout-minutes: 10 + + steps: + - uses: actions/checkout@v4 + + - name: Setup NodeJS ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + + - name: Perform regular checks + run: | + npm ci + npm run format:check + npm run lint + npm run test:unit + npm run build + npm install --prefix examples --legacy-peer-deps + npm run --prefix examples lint:ts + npm run test:import + - name: Upload unit test reports + uses: actions/upload-artifact@v4 + if: always() + with: + name: unit-test-report-${{matrix.os}}-node-${{matrix.node-version}} + path: reports/unit-report.xml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3e4c961..609e7eb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -48,121 +48,19 @@ env: jobs: regular-checks: - name: Build and unit-test on supported platforms and NodeJS versions - strategy: - matrix: - # Make sure you're addressing it to the minor version, as sometimes macos was picking 20.9 while others 20.10 - # and that caused issues with rollup - node-version: [18.19.x, 20.10.x] - os: [ubuntu-latest, windows-latest, macos-latest] - - runs-on: ${{ matrix.os }} - timeout-minutes: 10 - - steps: - - uses: actions/checkout@v4 - - - name: Setup NodeJS ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - - - name: Perform regular checks - run: | - npm ci - npm run format:check - npm run lint - npm run test:unit - npm run build - npm install --prefix examples --legacy-peer-deps - npm run --prefix examples lint:ts - npm run test:import - - name: Upload unit test reports - uses: actions/upload-artifact@v4 - if: always() - with: - name: unit-test-report-${{matrix.os}}-node-${{matrix.node-version}} - path: reports/unit-report.xml + uses: .github/workflows/regular-checks.yml run-e2e-tests: - name: Run E2E tests + uses: .github/workflows/e2e-tests.yml needs: regular-checks - runs-on: goth2 - steps: - - uses: actions/checkout@v4 - - - name: Prepare providers and requestor - uses: ./.github/actions/prepare-tests - - - name: Start the E2E test - run: docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm run test:e2e" - - - name: Upload E2E reports - uses: actions/upload-artifact@v4 - if: always() - with: - name: e2e-test-report - path: reports/e2e-report.xml - - - name: Cleanup test environment - uses: ./.github/actions/cleanup-tests - with: - type: "e2e" run-cypress-tests: - name: Run Cypress tests + uses: .github/workflows/cypress-tests.yml needs: regular-checks - runs-on: goth2 - steps: - - uses: actions/checkout@v4 - - - name: Prepare providers and requestor - uses: ./.github/actions/prepare-tests - with: - type: "cypress" - - - name: Copy docs examples - run: docker exec -t docker-requestor-1 /bin/sh -c ' - cp /golem-sdk-task-executor/examples/docs-examples/examples/transferring-data/transfer-data-in-browser.html /golem-sdk-task-executor/examples/web/ && - cp /golem-sdk-task-executor/examples/docs-examples/examples/transferring-data/upload-json-in-browser.html /golem-sdk-task-executor/examples/web/ && - cp /golem-sdk-task-executor/examples/docs-examples/quickstarts/web-quickstart/index.html /golem-sdk-task-executor/examples/web/quickstart.html && - cp /golem-sdk-task-executor/examples/docs-examples/quickstarts/web-quickstart/requestor.mjs /golem-sdk-task-executor/examples/web/ && - cp /golem-sdk-task-executor/examples/docs-examples/tutorials/running-from-browser/index.html /golem-sdk-task-executor/examples/web/tutorial.html' - - name: Run web server - run: docker exec -t -d docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor/examples && npm run web" - - - name: Run test suite - run: docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm run test:cypress -- --browser chromium" - - - name: Upload test logs - uses: actions/upload-artifact@v4 - if: always() - with: - name: cypress-logs - path: .cypress - - - name: Cleanup test environment - uses: ./.github/actions/cleanup-tests - with: - type: "cypress" run-examples-tests: - name: Run Examples tests + uses: .github/workflows/examples-tests.yml needs: regular-checks - runs-on: goth2 - steps: - - uses: actions/checkout@v4 - - - name: Prepare providers and requestor - uses: ./.github/actions/prepare-tests - - - name: Run the Examples tests - run: docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm run test:examples -- --exitOnError" - - - name: Cleanup test environment - uses: ./.github/actions/cleanup-tests - with: - type: "examples" release: name: Release the SDK to NPM and GitHub diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml index 9b94458..1441cc9 100644 --- a/tests/docker/docker-compose.yml +++ b/tests/docker/docker-compose.yml @@ -22,6 +22,7 @@ services: environment: - NODE_NAME=provider-1 - SUBNET=${YAGNA_SUBNET:-golemjstest} + - YA_NET_BROADCAST_SIZE=10 provider-2: build: context: . @@ -44,6 +45,7 @@ services: environment: - NODE_NAME=provider-2 - SUBNET=${YAGNA_SUBNET:-golemjstest} + - YA_NET_BROADCAST_SIZE=10 requestor: build: context: . @@ -61,7 +63,7 @@ services: - YAGNA_SUBNET=${YAGNA_SUBNET:-golemjstest} - YAGNA_APPKEY=try_golem - PAYMENT_NETWORK=${PAYMENT_NETWORK} - - YA_NET_BROADCAST_SIZE=100 + - YA_NET_BROADCAST_SIZE=10 healthcheck: test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' http://localhost:7465 | grep -q 401"] From 471d2476f800e0409c04deb6a83dda5ee5be92a0 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 14:15:27 +0200 Subject: [PATCH 11/24] test: split workflow to reusable parts --- .github/workflows/release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 609e7eb..0713623 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -48,18 +48,18 @@ env: jobs: regular-checks: - uses: .github/workflows/regular-checks.yml + uses: ./.github/workflows/regular-checks.yml run-e2e-tests: - uses: .github/workflows/e2e-tests.yml + uses: ./.github/workflows/e2e-tests.yml needs: regular-checks run-cypress-tests: - uses: .github/workflows/cypress-tests.yml + uses: ./.github/workflows/cypress-tests.yml needs: regular-checks run-examples-tests: - uses: .github/workflows/examples-tests.yml + uses: ./.github/workflows/examples-tests.yml needs: regular-checks release: From 1429e60e7d0710cbec5feb3f1a0c5d4a0000f850 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 15:44:33 +0200 Subject: [PATCH 12/24] test: improved e2e tests --- tests/e2e/tasks.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/tasks.spec.ts b/tests/e2e/tasks.spec.ts index 16478c5..9c3773e 100644 --- a/tests/e2e/tasks.spec.ts +++ b/tests/e2e/tasks.spec.ts @@ -51,7 +51,7 @@ describe("Task Executor", function () { expect(emittedEventsNames).toContain("activityCreated"); expect(emittedEventsNames).toContain("exeUnitInitialized"); expect(emittedEventsNames).toContain("scriptExecuted"); - expect(emittedEventsNames).toContain("invoiceReceived"); + expect([...emittedEventsNames].some((e) => e === "invoiceReceived" || e === "debitNoteReceived")).toBe(true); }; beforeEach(() => { From b1c99ee82a546196d868edc4516d799045d005e5 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 11 Jul 2024 15:53:49 +0200 Subject: [PATCH 13/24] test: debug ci --- tests/docker/docker-compose.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml index 1441cc9..01971b0 100644 --- a/tests/docker/docker-compose.yml +++ b/tests/docker/docker-compose.yml @@ -22,7 +22,6 @@ services: environment: - NODE_NAME=provider-1 - SUBNET=${YAGNA_SUBNET:-golemjstest} - - YA_NET_BROADCAST_SIZE=10 provider-2: build: context: . @@ -45,7 +44,6 @@ services: environment: - NODE_NAME=provider-2 - SUBNET=${YAGNA_SUBNET:-golemjstest} - - YA_NET_BROADCAST_SIZE=10 requestor: build: context: . @@ -63,7 +61,7 @@ services: - YAGNA_SUBNET=${YAGNA_SUBNET:-golemjstest} - YAGNA_APPKEY=try_golem - PAYMENT_NETWORK=${PAYMENT_NETWORK} - - YA_NET_BROADCAST_SIZE=10 + - YA_NET_BROADCAST_SIZE=20 healthcheck: test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' http://localhost:7465 | grep -q 401"] From e9b7d7537b067a82fccc65a319db56ee99d803e1 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Fri, 12 Jul 2024 10:10:32 +0200 Subject: [PATCH 14/24] test: fixed e2e test --- tests/e2e/tasks.spec.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tests/e2e/tasks.spec.ts b/tests/e2e/tasks.spec.ts index 9c3773e..f0f8d6a 100644 --- a/tests/e2e/tasks.spec.ts +++ b/tests/e2e/tasks.spec.ts @@ -45,13 +45,16 @@ describe("Task Executor", function () { }; const verifyAllExpectedEventsEmitted = () => { - expect(emittedEventsNames).toContain("taskStarted"); - expect(emittedEventsNames).toContain("offerProposalReceived"); - expect(emittedEventsNames).toContain("agreementApproved"); - expect(emittedEventsNames).toContain("activityCreated"); - expect(emittedEventsNames).toContain("exeUnitInitialized"); - expect(emittedEventsNames).toContain("scriptExecuted"); - expect([...emittedEventsNames].some((e) => e === "invoiceReceived" || e === "debitNoteReceived")).toBe(true); + expect(emittedEventsNames).toEqual( + expect.arrayContaining([ + "taskStarted", + "offerProposalReceived", + "agreementApproved", + "activityCreated", + "exeUnitInitialized", + "scriptExecuted", + ]), + ); }; beforeEach(() => { From a3bfc8ecbde3a26675c97b0a5265d449352aefca Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Fri, 12 Jul 2024 12:51:00 +0200 Subject: [PATCH 15/24] test: debug e2e test --- .github/actions/prepare-tests/action.yml | 2 +- tests/docker/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/prepare-tests/action.yml b/.github/actions/prepare-tests/action.yml index add2b45..4894647 100644 --- a/.github/actions/prepare-tests/action.yml +++ b/.github/actions/prepare-tests/action.yml @@ -53,7 +53,7 @@ runs: - name: Check yagna status shell: bash run: | - docker exec -t docker-requestor-1 /bin/sh -c "yagna net status && yagna net sessions" + docker exec -t docker-requestor-1 /bin/sh -c "yagna net ping && yagna net status && yagna net sessions" - name: Install Cypress if: ${{ inputs.type == 'cypress' }} diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml index 01971b0..dae165f 100644 --- a/tests/docker/docker-compose.yml +++ b/tests/docker/docker-compose.yml @@ -61,7 +61,7 @@ services: - YAGNA_SUBNET=${YAGNA_SUBNET:-golemjstest} - YAGNA_APPKEY=try_golem - PAYMENT_NETWORK=${PAYMENT_NETWORK} - - YA_NET_BROADCAST_SIZE=20 + - YA_NET_BROADCAST_SIZE=10 healthcheck: test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' http://localhost:7465 | grep -q 401"] From 533b9c94349349f5d589c7f01920597ff116243b Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Fri, 12 Jul 2024 13:12:40 +0200 Subject: [PATCH 16/24] test: debug e2e test --- tests/e2e/tasks.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/tasks.spec.ts b/tests/e2e/tasks.spec.ts index f0f8d6a..70042a3 100644 --- a/tests/e2e/tasks.spec.ts +++ b/tests/e2e/tasks.spec.ts @@ -45,7 +45,7 @@ describe("Task Executor", function () { }; const verifyAllExpectedEventsEmitted = () => { - expect(emittedEventsNames).toEqual( + expect([...emittedEventsNames]).toEqual( expect.arrayContaining([ "taskStarted", "offerProposalReceived", From 26e2ee0e15db56a16484200ff566eba18881f465 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Wed, 17 Jul 2024 12:27:32 +0200 Subject: [PATCH 17/24] build: bump golem-js --- examples/package.json | 2 +- package-lock.json | 58 +++++++++++++++++++++++++++++++++++++++++-- package.json | 4 +-- 3 files changed, 59 insertions(+), 5 deletions(-) diff --git a/examples/package.json b/examples/package.json index b66637a..5789c11 100644 --- a/examples/package.json +++ b/examples/package.json @@ -36,7 +36,7 @@ "dependencies": { "@golem-sdk/pino-logger": "^1.0.2", "@golem-sdk/task-executor": "file:..", - "@golem-sdk/golem-js": "v3.0.1", + "@golem-sdk/golem-js": "v3.1.0-beta.2", "commander": "^12.0.0", "express": "^4.18.2", "tsx": "^4.7.0" diff --git a/package-lock.json b/package-lock.json index 5e6f946..5ca7875 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,12 +12,12 @@ "examples" ], "dependencies": { + "@golem-sdk/golem-js": "v3.1.0-beta.2", "eventemitter3": "^5.0.1" }, "devDependencies": { "@commitlint/cli": "^19.0.3", "@commitlint/config-conventional": "^19.0.3", - "@golem-sdk/golem-js": "^3.0.1", "@johanblumenberg/ts-mockito": "^1.0.41", "@rollup/plugin-alias": "^5.1.0", "@rollup/plugin-commonjs": "^25.0.7", @@ -63,7 +63,7 @@ "version": "0.0.0", "license": "LGPL-3.0", "dependencies": { - "@golem-sdk/golem-js": "v3.0.1", + "@golem-sdk/golem-js": "v3.1.0-beta.2", "@golem-sdk/pino-logger": "^1.0.2", "@golem-sdk/task-executor": "file:..", "commander": "^12.0.0", @@ -1555,10 +1555,48 @@ "license": "MIT" }, "node_modules/@golem-sdk/golem-js": { + "version": "3.1.0-beta.2", + "resolved": "https://registry.npmjs.org/@golem-sdk/golem-js/-/golem-js-3.1.0-beta.2.tgz", + "integrity": "sha512-C+pnvcbotVKsp6ppnk6h5TR/7kozuO1d0eiXDsGAS1RsuiXx5rl07TSwji9nxzDQRYUYebeWdpdzlC7uvnuvnw==", + "license": "LGPL-3.0", + "workspaces": [ + "examples/" + ], + "dependencies": { + "@golem-sdk/pino-logger": "^1.1.0", + "async-lock": "^1.4.1", + "async-retry": "^1.3.3", + "axios": "^1.6.7", + "bottleneck": "^2.19.5", + "debug": "^4.3.4", + "decimal.js-light": "^2.5.1", + "eventemitter3": "^5.0.1", + "eventsource": "^2.0.2", + "flatbuffers": "^24.3.7", + "ip-num": "^1.5.1", + "js-sha3": "^0.9.3", + "rxjs": "^7.8.1", + "semver": "^7.5.4", + "tmp": "^0.2.2", + "uuid": "^10.0.0", + "ws": "^8.16.0", + "ya-ts-client": "^1.1.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-darwin-x64": "^4", + "@rollup/rollup-win32-arm64-msvc": "^4", + "@rollup/rollup-win32-x64-msvc": "^4" + } + }, + "node_modules/@golem-sdk/golem-js/node_modules/@golem-sdk/golem-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@golem-sdk/golem-js/-/golem-js-3.0.1.tgz", "integrity": "sha512-DcIrMIoV0pdcQUd0sMDavDYRjAv16cUO3c0UGAa4rXLP0XcWLCD0BEuwadrHtAK2YVO0Yk2OLIJjBxEIPBG6YQ==", "license": "LGPL-3.0", + "peer": true, "workspaces": [ "examples/" ], @@ -1590,6 +1628,22 @@ "@rollup/rollup-win32-x64-msvc": "^4" } }, + "node_modules/@golem-sdk/golem-js/node_modules/@golem-sdk/pino-logger": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@golem-sdk/pino-logger/-/pino-logger-1.1.0.tgz", + "integrity": "sha512-FxVqTnx7ToKPCABzfEHhwXT2x/B4PWez6y6AG9AeMjH9DA/itY8kclv0DUgWPPRTW4jr1Qrf6ovZYLhPZ5o3Dw==", + "license": "LGPL-3.0", + "dependencies": { + "pino": "^8.20.0", + "pino-pretty": "^11.0.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@golem-sdk/golem-js": "<4" + } + }, "node_modules/@golem-sdk/pino-logger": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@golem-sdk/pino-logger/-/pino-logger-1.0.3.tgz", diff --git a/package.json b/package.json index 254b772..9a6b75a 100644 --- a/package.json +++ b/package.json @@ -63,12 +63,12 @@ "node": ">=18.0.0" }, "dependencies": { - "eventemitter3": "^5.0.1" + "eventemitter3": "^5.0.1", + "@golem-sdk/golem-js": "v3.1.0-beta.2" }, "devDependencies": { "@commitlint/cli": "^19.0.3", "@commitlint/config-conventional": "^19.0.3", - "@golem-sdk/golem-js": "^3.0.1", "@johanblumenberg/ts-mockito": "^1.0.41", "@rollup/plugin-alias": "^5.1.0", "@rollup/plugin-commonjs": "^25.0.7", From 8a8d42aa5145bef2a67dbe3bc121a29b7994a8e1 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Wed, 17 Jul 2024 12:34:21 +0200 Subject: [PATCH 18/24] chore: fixed reputation example --- examples/reputation/basic.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/reputation/basic.ts b/examples/reputation/basic.ts index 7f05e61..6f3555f 100644 --- a/examples/reputation/basic.ts +++ b/examples/reputation/basic.ts @@ -40,7 +40,7 @@ import { pinoPrettyLogger } from "@golem-sdk/pino-logger"; maxEnvPerHourPrice: 0.5, }, offerProposalFilter: reputation.offerProposalFilter(), - offerProposalSelector: reputation.agreementSelector(), + offerProposalSelector: reputation.offerProposalSelector(), }, payment: { network: "polygon" }, }); From 62d62efdc508a77a328f5509f59d1585b6c182d5 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Wed, 17 Jul 2024 13:08:17 +0200 Subject: [PATCH 19/24] build: improved jobs names --- .github/workflows/release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0713623..e985e8f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,14 +51,17 @@ jobs: uses: ./.github/workflows/regular-checks.yml run-e2e-tests: + name: Run E2E tests uses: ./.github/workflows/e2e-tests.yml needs: regular-checks run-cypress-tests: + name: Run Cypress tests uses: ./.github/workflows/cypress-tests.yml needs: regular-checks run-examples-tests: + name: Run Examples tests uses: ./.github/workflows/examples-tests.yml needs: regular-checks From 7f3a404e43083f4dbd4602a257ec2c8a2e66bacf Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Wed, 17 Jul 2024 13:15:16 +0200 Subject: [PATCH 20/24] build: improved jobs names --- .github/workflows/cypress-tests.yml | 1 - .github/workflows/e2e-tests.yml | 1 - .github/workflows/examples-tests.yml | 1 - 3 files changed, 3 deletions(-) diff --git a/.github/workflows/cypress-tests.yml b/.github/workflows/cypress-tests.yml index 41fb65a..96ea0d9 100644 --- a/.github/workflows/cypress-tests.yml +++ b/.github/workflows/cypress-tests.yml @@ -39,7 +39,6 @@ env: jobs: run-cypress-tests: - name: Run Cypress tests runs-on: goth2 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 1b46f0f..e8a0b4d 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -39,7 +39,6 @@ env: jobs: run-e2e-tests: - name: Run E2E tests runs-on: goth2 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/examples-tests.yml b/.github/workflows/examples-tests.yml index d96c583..918ff52 100644 --- a/.github/workflows/examples-tests.yml +++ b/.github/workflows/examples-tests.yml @@ -39,7 +39,6 @@ env: jobs: run-examples-tests: - name: Run Examples tests runs-on: goth2 steps: - uses: actions/checkout@v4 From 0b305e92cdfa1c224fe0f82dceca455cfd959a38 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Wed, 17 Jul 2024 13:21:56 +0200 Subject: [PATCH 21/24] build: improved jobs names --- .github/workflows/cypress-tests.yml | 1 + .github/workflows/e2e-tests.yml | 1 + .github/workflows/examples-tests.yml | 1 + .github/workflows/release.yml | 6 +++--- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cypress-tests.yml b/.github/workflows/cypress-tests.yml index 96ea0d9..1009fb0 100644 --- a/.github/workflows/cypress-tests.yml +++ b/.github/workflows/cypress-tests.yml @@ -39,6 +39,7 @@ env: jobs: run-cypress-tests: + name: Run Cypress runs-on: goth2 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index e8a0b4d..21e96ee 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -39,6 +39,7 @@ env: jobs: run-e2e-tests: + name: Run E2E runs-on: goth2 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/examples-tests.yml b/.github/workflows/examples-tests.yml index 918ff52..e6e67e6 100644 --- a/.github/workflows/examples-tests.yml +++ b/.github/workflows/examples-tests.yml @@ -39,6 +39,7 @@ env: jobs: run-examples-tests: + name: Run Examples runs-on: goth2 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e985e8f..de75a44 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,17 +51,17 @@ jobs: uses: ./.github/workflows/regular-checks.yml run-e2e-tests: - name: Run E2E tests + name: Tests uses: ./.github/workflows/e2e-tests.yml needs: regular-checks run-cypress-tests: - name: Run Cypress tests + name: Tests uses: ./.github/workflows/cypress-tests.yml needs: regular-checks run-examples-tests: - name: Run Examples tests + name: Tests uses: ./.github/workflows/examples-tests.yml needs: regular-checks From fa510ea678c33bd98e02f26cf1ea79636558414e Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Wed, 17 Jul 2024 13:28:26 +0200 Subject: [PATCH 22/24] build: added scanning offers in CI --- .github/actions/prepare-tests/action.yml | 20 +++++++++++++++----- .github/workflows/regular-checks.yml | 2 +- .github/workflows/release.yml | 1 + 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/.github/actions/prepare-tests/action.yml b/.github/actions/prepare-tests/action.yml index 4894647..85fe167 100644 --- a/.github/actions/prepare-tests/action.yml +++ b/.github/actions/prepare-tests/action.yml @@ -50,13 +50,23 @@ runs: run: | docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && npm i && npm run build" - - name: Check yagna status - shell: bash - run: | - docker exec -t docker-requestor-1 /bin/sh -c "yagna net ping && yagna net status && yagna net sessions" - - name: Install Cypress if: ${{ inputs.type == 'cypress' }} shell: bash run: | docker exec -t docker-requestor-1 /bin/sh -c "cd /golem-sdk-task-executor && ./node_modules/.bin/cypress install" + + - name: Run a preliminary scan of offers + shell: bash + run: | + docker exec -t docker-requestor-1 /bin/sh -c "npm install --no-progress -g @prekucki/wait-for-n && wait-for-n --limit=6 --appkey=try_golem --subnet=$YAGNA_SUBNET" + + - name: List down sessions seen on that requestor + shell: bash + run: | + docker exec docker-requestor-1 /bin/sh -c "yagna net sessions" + + - name: Run a secondary scan of offers + shell: bash + run: | + docker exec -t docker-requestor-1 /bin/sh -c "npx --no-progress --yes @golem-sdk/cli market scan -k try_golem --subnet-tag $YAGNA_SUBNET --payment-network $PAYMENT_NETWORK" diff --git a/.github/workflows/regular-checks.yml b/.github/workflows/regular-checks.yml index 8af91b8..a01ab89 100644 --- a/.github/workflows/regular-checks.yml +++ b/.github/workflows/regular-checks.yml @@ -11,7 +11,7 @@ permissions: jobs: regular-checks: - name: Build and unit-test on supported platforms and NodeJS versions + name: Build and unit-test strategy: matrix: # Make sure you're addressing it to the minor version, as sometimes macos was picking 20.9 while others 20.10 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index de75a44..523d0ef 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -48,6 +48,7 @@ env: jobs: regular-checks: + name: Regular checks uses: ./.github/workflows/regular-checks.yml run-e2e-tests: From 0861474c90dd1f249b4d109fe8fac538a4f31903 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Wed, 17 Jul 2024 14:25:27 +0200 Subject: [PATCH 23/24] build: improved jobs names --- .github/workflows/cypress-tests.yml | 2 +- .github/workflows/e2e-tests.yml | 2 +- .github/workflows/examples-tests.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cypress-tests.yml b/.github/workflows/cypress-tests.yml index 1009fb0..a15cb2d 100644 --- a/.github/workflows/cypress-tests.yml +++ b/.github/workflows/cypress-tests.yml @@ -39,7 +39,7 @@ env: jobs: run-cypress-tests: - name: Run Cypress + name: Cypress runs-on: goth2 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 21e96ee..3de6b97 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -39,7 +39,7 @@ env: jobs: run-e2e-tests: - name: Run E2E + name: E2E runs-on: goth2 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/examples-tests.yml b/.github/workflows/examples-tests.yml index e6e67e6..19208fc 100644 --- a/.github/workflows/examples-tests.yml +++ b/.github/workflows/examples-tests.yml @@ -39,7 +39,7 @@ env: jobs: run-examples-tests: - name: Run Examples + name: Examples runs-on: goth2 steps: - uses: actions/checkout@v4 From eab1ee7d05b1e5daf1d3845a35c509de52766ff7 Mon Sep 17 00:00:00 2001 From: Marcin Gordel Date: Thu, 18 Jul 2024 10:47:33 +0200 Subject: [PATCH 24/24] build: bump golem-js to 3.1.0 --- examples/package.json | 2 +- package-lock.json | 47 +++++-------------------------------------- package.json | 2 +- 3 files changed, 7 insertions(+), 44 deletions(-) diff --git a/examples/package.json b/examples/package.json index 5789c11..177b842 100644 --- a/examples/package.json +++ b/examples/package.json @@ -36,7 +36,7 @@ "dependencies": { "@golem-sdk/pino-logger": "^1.0.2", "@golem-sdk/task-executor": "file:..", - "@golem-sdk/golem-js": "v3.1.0-beta.2", + "@golem-sdk/golem-js": "v3.1.0", "commander": "^12.0.0", "express": "^4.18.2", "tsx": "^4.7.0" diff --git a/package-lock.json b/package-lock.json index 5ca7875..e17fc3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "examples" ], "dependencies": { - "@golem-sdk/golem-js": "v3.1.0-beta.2", + "@golem-sdk/golem-js": "v3.1.0", "eventemitter3": "^5.0.1" }, "devDependencies": { @@ -63,7 +63,7 @@ "version": "0.0.0", "license": "LGPL-3.0", "dependencies": { - "@golem-sdk/golem-js": "v3.1.0-beta.2", + "@golem-sdk/golem-js": "v3.1.0", "@golem-sdk/pino-logger": "^1.0.2", "@golem-sdk/task-executor": "file:..", "commander": "^12.0.0", @@ -1555,9 +1555,9 @@ "license": "MIT" }, "node_modules/@golem-sdk/golem-js": { - "version": "3.1.0-beta.2", - "resolved": "https://registry.npmjs.org/@golem-sdk/golem-js/-/golem-js-3.1.0-beta.2.tgz", - "integrity": "sha512-C+pnvcbotVKsp6ppnk6h5TR/7kozuO1d0eiXDsGAS1RsuiXx5rl07TSwji9nxzDQRYUYebeWdpdzlC7uvnuvnw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@golem-sdk/golem-js/-/golem-js-3.1.0.tgz", + "integrity": "sha512-Ft58Q46yA1NawG5W9sW+t3zwbSzjRIOdwkkQLC/9AXa5HT+DVT8yVZz7caDXrBclFzs58jWKKlBTqlLQP6H91A==", "license": "LGPL-3.0", "workspaces": [ "examples/" @@ -1591,43 +1591,6 @@ "@rollup/rollup-win32-x64-msvc": "^4" } }, - "node_modules/@golem-sdk/golem-js/node_modules/@golem-sdk/golem-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@golem-sdk/golem-js/-/golem-js-3.0.1.tgz", - "integrity": "sha512-DcIrMIoV0pdcQUd0sMDavDYRjAv16cUO3c0UGAa4rXLP0XcWLCD0BEuwadrHtAK2YVO0Yk2OLIJjBxEIPBG6YQ==", - "license": "LGPL-3.0", - "peer": true, - "workspaces": [ - "examples/" - ], - "dependencies": { - "async-lock": "^1.4.1", - "async-retry": "^1.3.3", - "axios": "^1.6.7", - "bottleneck": "^2.19.5", - "debug": "^4.3.4", - "decimal.js-light": "^2.5.1", - "eventemitter3": "^5.0.1", - "eventsource": "^2.0.2", - "flatbuffers": "^24.3.7", - "ip-num": "^1.5.1", - "js-sha3": "^0.9.3", - "rxjs": "^7.8.1", - "semver": "^7.5.4", - "tmp": "^0.2.2", - "uuid": "^10.0.0", - "ws": "^8.16.0", - "ya-ts-client": "^1.1.3" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-darwin-x64": "^4", - "@rollup/rollup-win32-arm64-msvc": "^4", - "@rollup/rollup-win32-x64-msvc": "^4" - } - }, "node_modules/@golem-sdk/golem-js/node_modules/@golem-sdk/pino-logger": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@golem-sdk/pino-logger/-/pino-logger-1.1.0.tgz", diff --git a/package.json b/package.json index 9a6b75a..16865f1 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ }, "dependencies": { "eventemitter3": "^5.0.1", - "@golem-sdk/golem-js": "v3.1.0-beta.2" + "@golem-sdk/golem-js": "v3.1.0" }, "devDependencies": { "@commitlint/cli": "^19.0.3",