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:
parent
178cf6c720
commit
15617f23cf
@ -17,6 +17,7 @@ import { Cluster, Container, Server } from '../../src/ocean/Compute'
|
|||||||
import { LoggerInstance } from '../../src/utils'
|
import { LoggerInstance } from '../../src/utils'
|
||||||
import { ComputeInput } from '../../src/ocean/interfaces/ComputeInput'
|
import { ComputeInput } from '../../src/ocean/interfaces/ComputeInput'
|
||||||
const web3 = new Web3('http://127.0.0.1:8545')
|
const web3 = new Web3('http://127.0.0.1:8545')
|
||||||
|
const fetch = require('cross-fetch')
|
||||||
|
|
||||||
function sleep(ms: number) {
|
function sleep(ms: number) {
|
||||||
return new Promise((resolve) => {
|
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
|
/* How to handle a compute job
|
||||||
1. find your algorithm
|
1. find your algorithm
|
||||||
2. find your primary compute dataset
|
2. find your primary compute dataset
|
||||||
@ -267,7 +285,7 @@ describe('Compute flow', () => {
|
|||||||
assert(ddo.dataToken === tokenAddress, 'ddo.dataToken !== tokenAddress')
|
assert(ddo.dataToken === tokenAddress, 'ddo.dataToken !== tokenAddress')
|
||||||
const storeTx = await ocean.onChainMetadata.publish(ddo.id, ddo, alice.getId())
|
const storeTx = await ocean.onChainMetadata.publish(ddo.id, ddo, alice.getId())
|
||||||
assert(storeTx)
|
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 () => {
|
it('Alice publishes a 2nd dataset with a compute service that allows Raw Algo', async () => {
|
||||||
const price2 = '2' // in datatoken
|
const price2 = '2' // in datatoken
|
||||||
@ -330,7 +348,7 @@ describe('Compute flow', () => {
|
|||||||
alice.getId()
|
alice.getId()
|
||||||
)
|
)
|
||||||
assert(storeTx)
|
assert(storeTx)
|
||||||
await sleep(aquaSleep)
|
await waitForAqua(ocean, ddoAdditional1.id)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Alice publishes a 3rd dataset with a access service', async () => {
|
it('Alice publishes a 3rd dataset with a access service', async () => {
|
||||||
@ -358,7 +376,7 @@ describe('Compute flow', () => {
|
|||||||
alice.getId()
|
alice.getId()
|
||||||
)
|
)
|
||||||
assert(storeTx)
|
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 () => {
|
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()
|
alice.getId()
|
||||||
)
|
)
|
||||||
assert(storeTx)
|
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 () => {
|
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()
|
alice.getId()
|
||||||
)
|
)
|
||||||
assert(storeTx)
|
assert(storeTx)
|
||||||
await sleep(aquaSleep)
|
await waitForAqua(ocean, datasetWithTrustedAlgo.id)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should publish an algorithm', async () => {
|
it('should publish an algorithm', async () => {
|
||||||
@ -485,7 +503,7 @@ describe('Compute flow', () => {
|
|||||||
alice.getId()
|
alice.getId()
|
||||||
)
|
)
|
||||||
assert(storeTx)
|
assert(storeTx)
|
||||||
await sleep(aquaSleep)
|
await waitForAqua(ocean, algorithmAsset.id)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should publish an algorithm using the 2nd provider', async () => {
|
it('should publish an algorithm using the 2nd provider', async () => {
|
||||||
@ -544,7 +562,7 @@ describe('Compute flow', () => {
|
|||||||
alice.getId()
|
alice.getId()
|
||||||
)
|
)
|
||||||
assert(storeTx)
|
assert(storeTx)
|
||||||
await sleep(aquaSleep)
|
await waitForAqua(ocean, algorithmAssetRemoteProvider.id)
|
||||||
const checkDDO = await ocean.assets.resolve(algorithmAssetRemoteProvider.id)
|
const checkDDO = await ocean.assets.resolve(algorithmAssetRemoteProvider.id)
|
||||||
const checkService = checkDDO.findServiceByType('access')
|
const checkService = checkDDO.findServiceByType('access')
|
||||||
assert(
|
assert(
|
||||||
@ -1214,7 +1232,7 @@ describe('Compute flow', () => {
|
|||||||
alice.getId()
|
alice.getId()
|
||||||
)
|
)
|
||||||
assert(storeTx)
|
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 () => {
|
it('Bob should fail to start a compute job for a bogus provider with a raw Algo', async () => {
|
||||||
const output = {}
|
const output = {}
|
||||||
|
@ -11,7 +11,7 @@ import { Ocean } from '../../src/ocean/Ocean'
|
|||||||
import { ConfigHelper } from '../../src/utils/ConfigHelper'
|
import { ConfigHelper } from '../../src/utils/ConfigHelper'
|
||||||
import { TestContractHandler } from '../TestContractHandler'
|
import { TestContractHandler } from '../TestContractHandler'
|
||||||
import { LoggerInstance } from '../../src/utils'
|
import { LoggerInstance } from '../../src/utils'
|
||||||
|
const fetch = require('cross-fetch')
|
||||||
const web3 = new Web3('http://127.0.0.1:8545')
|
const web3 = new Web3('http://127.0.0.1:8545')
|
||||||
|
|
||||||
function sleep(ms: number) {
|
function sleep(ms: number) {
|
||||||
@ -19,7 +19,22 @@ function sleep(ms: number) {
|
|||||||
setTimeout(resolve, ms)
|
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)
|
use(spies)
|
||||||
|
|
||||||
describe('Marketplace flow', () => {
|
describe('Marketplace flow', () => {
|
||||||
@ -176,7 +191,7 @@ describe('Marketplace flow', () => {
|
|||||||
assert(ddo.dataToken === tokenAddress)
|
assert(ddo.dataToken === tokenAddress)
|
||||||
const storeTx = await ocean.onChainMetadata.publish(ddo.id, ddo, alice.getId())
|
const storeTx = await ocean.onChainMetadata.publish(ddo.id, ddo, alice.getId())
|
||||||
assert(storeTx)
|
assert(storeTx)
|
||||||
await sleep(1000)
|
await waitForAqua(ocean, ddo.id)
|
||||||
ddoWithBadUrl = await ocean.assets.create(
|
ddoWithBadUrl = await ocean.assets.create(
|
||||||
assetWithBadUrl,
|
assetWithBadUrl,
|
||||||
alice,
|
alice,
|
||||||
@ -190,7 +205,7 @@ describe('Marketplace flow', () => {
|
|||||||
alice.getId()
|
alice.getId()
|
||||||
)
|
)
|
||||||
assert(storeTxWithBadUrl)
|
assert(storeTxWithBadUrl)
|
||||||
await sleep(1000)
|
await waitForAqua(ocean, ddoWithBadUrl.id)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Alice publishes an encrypted dataset', async () => {
|
it('Alice publishes an encrypted dataset', async () => {
|
||||||
@ -208,7 +223,7 @@ describe('Marketplace flow', () => {
|
|||||||
true
|
true
|
||||||
)
|
)
|
||||||
assert(storeTx)
|
assert(storeTx)
|
||||||
await sleep(aquaSleep)
|
await waitForAqua(ocean, ddoEncrypted.id)
|
||||||
})
|
})
|
||||||
it('Marketplace should resolve asset using DID', async () => {
|
it('Marketplace should resolve asset using DID', async () => {
|
||||||
await ocean.assets.resolve(ddo.id).then((newDDO) => {
|
await ocean.assets.resolve(ddo.id).then((newDDO) => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user