1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

improve tests speed (#691)

This commit is contained in:
Alex Coseru 2021-03-30 01:13:17 +03:00 committed by GitHub
parent 178cf6c720
commit 15617f23cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 13 deletions

View File

@ -17,6 +17,7 @@ import { Cluster, Container, Server } from '../../src/ocean/Compute'
import { LoggerInstance } from '../../src/utils'
import { ComputeInput } from '../../src/ocean/interfaces/ComputeInput'
const web3 = new Web3('http://127.0.0.1:8545')
const fetch = require('cross-fetch')
function sleep(ms: number) {
return new Promise((resolve) => {
@ -24,6 +25,23 @@ function sleep(ms: number) {
})
}
async function waitForAqua(ocean, did) {
const apiPath = '/api/v1/aquarius/assets/ddo'
let tries = 0
do {
try {
const result = await fetch(ocean.metadataCache.url + apiPath + '/' + did)
if (result.ok) {
break
}
} catch (e) {
// do nothing
}
await sleep(1500)
tries++
} while (tries < 100)
}
/* How to handle a compute job
1. find your algorithm
2. find your primary compute dataset
@ -267,7 +285,7 @@ describe('Compute flow', () => {
assert(ddo.dataToken === tokenAddress, 'ddo.dataToken !== tokenAddress')
const storeTx = await ocean.onChainMetadata.publish(ddo.id, ddo, alice.getId())
assert(storeTx)
await sleep(aquaSleep)
await waitForAqua(ocean, ddo.id)
})
it('Alice publishes a 2nd dataset with a compute service that allows Raw Algo', async () => {
const price2 = '2' // in datatoken
@ -330,7 +348,7 @@ describe('Compute flow', () => {
alice.getId()
)
assert(storeTx)
await sleep(aquaSleep)
await waitForAqua(ocean, ddoAdditional1.id)
})
it('Alice publishes a 3rd dataset with a access service', async () => {
@ -358,7 +376,7 @@ describe('Compute flow', () => {
alice.getId()
)
assert(storeTx)
await sleep(aquaSleep)
await waitForAqua(ocean, ddoAdditional2.id)
})
it('should publish a dataset with a compute service object that does not allow rawAlgo', async () => {
@ -392,7 +410,7 @@ describe('Compute flow', () => {
alice.getId()
)
assert(storeTx)
await sleep(aquaSleep)
await waitForAqua(ocean, datasetNoRawAlgo.id)
})
it('should publish a dataset with a compute service object that allows only algo with did:op:1234', async () => {
@ -432,7 +450,7 @@ describe('Compute flow', () => {
alice.getId()
)
assert(storeTx)
await sleep(aquaSleep)
await waitForAqua(ocean, datasetWithTrustedAlgo.id)
})
it('should publish an algorithm', async () => {
@ -485,7 +503,7 @@ describe('Compute flow', () => {
alice.getId()
)
assert(storeTx)
await sleep(aquaSleep)
await waitForAqua(ocean, algorithmAsset.id)
})
it('should publish an algorithm using the 2nd provider', async () => {
@ -544,7 +562,7 @@ describe('Compute flow', () => {
alice.getId()
)
assert(storeTx)
await sleep(aquaSleep)
await waitForAqua(ocean, algorithmAssetRemoteProvider.id)
const checkDDO = await ocean.assets.resolve(algorithmAssetRemoteProvider.id)
const checkService = checkDDO.findServiceByType('access')
assert(
@ -1214,7 +1232,7 @@ describe('Compute flow', () => {
alice.getId()
)
assert(storeTx)
await sleep(aquaSleep)
await waitForAqua(ocean, datasetWithBogusProvider.id)
})
it('Bob should fail to start a compute job for a bogus provider with a raw Algo', async () => {
const output = {}

View File

@ -11,7 +11,7 @@ import { Ocean } from '../../src/ocean/Ocean'
import { ConfigHelper } from '../../src/utils/ConfigHelper'
import { TestContractHandler } from '../TestContractHandler'
import { LoggerInstance } from '../../src/utils'
const fetch = require('cross-fetch')
const web3 = new Web3('http://127.0.0.1:8545')
function sleep(ms: number) {
@ -19,7 +19,22 @@ function sleep(ms: number) {
setTimeout(resolve, ms)
})
}
async function waitForAqua(ocean, did) {
const apiPath = '/api/v1/aquarius/assets/ddo'
let tries = 0
do {
try {
const result = await fetch(ocean.metadataCache.url + apiPath + '/' + did)
if (result.ok) {
break
}
} catch (e) {
// do nothing
}
await sleep(1500)
tries++
} while (tries < 100)
}
use(spies)
describe('Marketplace flow', () => {
@ -176,7 +191,7 @@ describe('Marketplace flow', () => {
assert(ddo.dataToken === tokenAddress)
const storeTx = await ocean.onChainMetadata.publish(ddo.id, ddo, alice.getId())
assert(storeTx)
await sleep(1000)
await waitForAqua(ocean, ddo.id)
ddoWithBadUrl = await ocean.assets.create(
assetWithBadUrl,
alice,
@ -190,7 +205,7 @@ describe('Marketplace flow', () => {
alice.getId()
)
assert(storeTxWithBadUrl)
await sleep(1000)
await waitForAqua(ocean, ddoWithBadUrl.id)
})
it('Alice publishes an encrypted dataset', async () => {
@ -208,7 +223,7 @@ describe('Marketplace flow', () => {
true
)
assert(storeTx)
await sleep(aquaSleep)
await waitForAqua(ocean, ddoEncrypted.id)
})
it('Marketplace should resolve asset using DID', async () => {
await ocean.assets.resolve(ddo.id).then((newDDO) => {