Skip to content
Open
Changes from 4 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
e78c981
add compute test file
bogdanfazakas Mar 20, 2025
4e42d6a
merge release v4.0
bogdanfazakas Mar 20, 2025
edfcc35
update compute commands
bogdanfazakas Mar 20, 2025
d96c841
update key
bogdanfazakas Mar 20, 2025
43875bd
merge fixes
bogdanfazakas Mar 21, 2025
238216c
small fixes
bogdanfazakas Mar 21, 2025
b99f35d
merge
bogdanfazakas Mar 21, 2025
261b489
add log
bogdanfazakas Mar 21, 2025
8ada08f
merge main
bogdanfazakas Mar 21, 2025
8035089
check ocean node issue
bogdanfazakas Mar 21, 2025
73424dc
try legacy peers
bogdanfazakas Mar 21, 2025
8bdc712
update node version
bogdanfazakas Mar 21, 2025
1c11caf
update get env test
bogdanfazakas Mar 21, 2025
55c7860
upgrade typescript-eslint
bogdanfazakas Mar 22, 2025
c6055b3
revert changes
bogdanfazakas Mar 23, 2025
569a1e6
update compute test
bogdanfazakas Mar 23, 2025
8770d2a
update check
bogdanfazakas Mar 24, 2025
f98519a
put back main
bogdanfazakas Mar 24, 2025
e7d4474
update regular expression pattern
bogdanfazakas Mar 24, 2025
757c3ff
final touch
bogdanfazakas Mar 24, 2025
10c91ee
cleanup
bogdanfazakas Mar 24, 2025
49e9e0a
merge main
bogdanfazakas Mar 24, 2025
1d8870f
merge main and fix conflicts
bogdanfazakas Apr 9, 2025
01b6c1a
add get results
bogdanfazakas Apr 15, 2025
98c1e0c
update wait job to finish test
bogdanfazakas Apr 15, 2025
f8c9320
update regex
bogdanfazakas Apr 15, 2025
25ca7ac
debug logs
bogdanfazakas Apr 16, 2025
65a55a3
debug logs
bogdanfazakas Apr 16, 2025
19f336b
update regex
bogdanfazakas Apr 16, 2025
341d235
update parse logic
bogdanfazakas Apr 16, 2025
33547eb
more enhacemnts
bogdanfazakas Apr 16, 2025
9c58977
use strip ansi
bogdanfazakas Apr 16, 2025
415d452
more regex
bogdanfazakas Apr 17, 2025
9059b1e
debug
bogdanfazakas Apr 17, 2025
ed940f4
cleanup
bogdanfazakas Apr 17, 2025
b46ba69
print ocean logs
bogdanfazakas Apr 17, 2025
9b7ecec
use node branch from barge
bogdanfazakas Apr 23, 2025
020c9bf
add more logs and details
bogdanfazakas Apr 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions test/compute.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
import { expect } from "chai";
import { exec } from "child_process";
import path from "path";
import fs from "fs";
import util from "util";

const execPromise = util.promisify(exec);

describe("Ocean CLI Free Compute Flow", function () {
this.timeout(300000);

const projectRoot = path.resolve(__dirname, "..");

let computeDatasetDid: string;
let algoDid: string;
let computeEnvId: string;
let jobId: string;

const runCommand = async (command: string): Promise<string> => {
console.log(`\n[CMD]: ${command}`);
try {
const { stdout } = await execPromise(command, { cwd: projectRoot });
console.log(`[OUTPUT]:\n${stdout}`);
return stdout;
} catch (error: any) {

Check warning on line 25 in test/compute.test.ts

View workflow job for this annotation

GitHub Actions / lint

Unexpected any. Specify a different type
console.error(`[ERROR]:\n${error.stderr || error.message}`);
throw error;
}
};

before(async () => {
process.env.PRIVATE_KEY =
"0x1d751ded5a32226054cd2e71261039b65afb9ee1c746d055dd699b1150a5befc";
process.env.RPC = "http://127.0.0.1:8545";
process.env.AQUARIUS_URL = "http://127.0.0.1:5000";
process.env.PROVIDER_URL = "http://127.0.0.1:8030";
});

it("should publish a compute dataset", async () => {
const metadataFile = path.resolve(
projectRoot,
"metadata/simpleComputeDataset.json"
);

if (!fs.existsSync(metadataFile)) {
throw new Error(`Metadata file not found: ${metadataFile}`);
}

const output = await runCommand(`npm run cli publish ${metadataFile}`);

const didMatch = output.match(/did:op:[a-f0-9]{64}/);
expect(didMatch, "No DID found in output").to.not.be.null;

computeDatasetDid = didMatch![0];
console.log(`Published Compute Dataset DID: ${computeDatasetDid}`);
});

it("should publish an algorithm", async () => {
const algoFile = path.resolve(projectRoot, "metadata/jsAlgo.json");

if (!fs.existsSync(algoFile)) {
throw new Error(`Algorithm metadata file not found: ${algoFile}`);
}

const output = await runCommand(`npm run cli publishAlgo ${algoFile}`);

const didMatch = output.match(/did:op:[a-f0-9]{64}/);
expect(didMatch, "No DID found in output").to.not.be.null;

algoDid = didMatch![0];
console.log(`Published Algorithm DID: ${algoDid}`);
});

it("should get compute environments", async () => {
const output = await runCommand(`npm run cli getComputeEnvironments`);

expect(output).to.contain("id");

const envMatch = output.match(/id: (0x[a-fA-F0-9]+)/);
if (!envMatch)
throw new Error("No environment ID found in environments output");

computeEnvId = envMatch[1];
console.log(`Fetched Compute Env ID: ${computeEnvId}`);
});

it("should start a free compute job", async () => {
const output = await runCommand(
`npm run cli startFreeCompute -- --datasets ${computeDatasetDid} --algo ${algoDid} --env ${computeEnvId}`
);

const jobIdMatch = output.match(
/Job started successfully with ID: ([a-f0-9-]+)/i
);
expect(jobIdMatch, "No Job ID found in output").to.not.be.null;

jobId = jobIdMatch![1];
console.log(`Started Free Compute Job ID: ${jobId}`);
});

it("should get job status", async () => {
const output = await runCommand(
`npm run cli getJobStatus -- --dataset ${computeDatasetDid} --job ${jobId}`
);

expect(output).to.contain(jobId);
expect(output.toLowerCase()).to.match(/status/);
console.log(`Job status retrieved for jobId: ${jobId}`);
});

it("should fetch streamable logs", async () => {
const output = await runCommand(
`npm run cli computeStreamableLogs -- --job ${jobId}`
);

expect(output).to.contain(jobId);
console.log(`Streamable logs retrieved for jobId: ${jobId}`);
});

it("should stop the compute job", async () => {
const output = await runCommand(
`npm run cli stopCompute -- --dataset ${computeDatasetDid} --job ${jobId}`
);

expect(output).to.contain("Compute job stopped successfully");
console.log(`Stopped compute job with ID: ${jobId}`);
});
});
Loading