mirror of
https://github.com/oceanprotocol/ocean.js.git
synced 2024-11-26 20:39:05 +01:00
Merge branch 'main' into feature/metadatacache
This commit is contained in:
commit
a55da41ac7
@ -782,6 +782,7 @@ export class OceanPool extends Pool {
|
|||||||
fromBlock: 0,
|
fromBlock: 0,
|
||||||
toBlock: 'latest'
|
toBlock: 'latest'
|
||||||
})
|
})
|
||||||
|
events.sort((a, b) => (a.blockNumber > b.blockNumber ? 1 : -1))
|
||||||
for (let i = 0; i < events.length; i++) {
|
for (let i = 0; i < events.length; i++) {
|
||||||
const constituents = await super.getCurrentTokens(events[i].returnValues[0])
|
const constituents = await super.getCurrentTokens(events[i].returnValues[0])
|
||||||
if (constituents.includes(dtAddress)) result.push(events[i].returnValues[0])
|
if (constituents.includes(dtAddress)) result.push(events[i].returnValues[0])
|
||||||
|
@ -1,13 +1,7 @@
|
|||||||
import { SearchQuery, QueryResult } from '../metadatacache/MetadataCache'
|
import { SearchQuery, QueryResult } from '../metadatacache/MetadataCache'
|
||||||
import { DDO } from '../ddo/DDO'
|
import { DDO } from '../ddo/DDO'
|
||||||
import { Metadata } from '../ddo/interfaces/Metadata'
|
import { Metadata } from '../ddo/interfaces/Metadata'
|
||||||
import {
|
import { Service, ServiceAccess, ServiceComputePrivacy } from '../ddo/interfaces/Service'
|
||||||
Service,
|
|
||||||
ServiceAccess,
|
|
||||||
ServiceComputePrivacy,
|
|
||||||
ServiceCommon
|
|
||||||
} from '../ddo/interfaces/Service'
|
|
||||||
|
|
||||||
import { EditableMetadata } from '../ddo/interfaces/EditableMetadata'
|
import { EditableMetadata } from '../ddo/interfaces/EditableMetadata'
|
||||||
import Account from './Account'
|
import Account from './Account'
|
||||||
import DID from './DID'
|
import DID from './DID'
|
||||||
@ -17,6 +11,7 @@ import { WebServiceConnector } from './utils/WebServiceConnector'
|
|||||||
import BigNumber from 'bignumber.js'
|
import BigNumber from 'bignumber.js'
|
||||||
import { Provider } from '../provider/Provider'
|
import { Provider } from '../provider/Provider'
|
||||||
import { isAddress } from 'web3-utils'
|
import { isAddress } from 'web3-utils'
|
||||||
|
import { MetadataMain } from '../ddo/interfaces'
|
||||||
|
|
||||||
export enum CreateProgressStep {
|
export enum CreateProgressStep {
|
||||||
CreatingDataToken,
|
CreatingDataToken,
|
||||||
@ -124,7 +119,8 @@ export class Assets extends Instantiable {
|
|||||||
|
|
||||||
this.logger.log('Encrypting files')
|
this.logger.log('Encrypting files')
|
||||||
observer.next(CreateProgressStep.EncryptingFiles)
|
observer.next(CreateProgressStep.EncryptingFiles)
|
||||||
let provider
|
let provider: Provider
|
||||||
|
|
||||||
if (providerUri) {
|
if (providerUri) {
|
||||||
provider = new Provider(this.instanceConfig)
|
provider = new Provider(this.instanceConfig)
|
||||||
provider.setBaseUrl(providerUri)
|
provider.setBaseUrl(providerUri)
|
||||||
@ -175,7 +171,7 @@ export class Assets extends Instantiable {
|
|||||||
index,
|
index,
|
||||||
url: undefined
|
url: undefined
|
||||||
}))
|
}))
|
||||||
} as any
|
} as MetadataMain
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
...services
|
...services
|
||||||
@ -375,12 +371,10 @@ export class Assets extends Instantiable {
|
|||||||
} as SearchQuery)
|
} as SearchQuery)
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getServiceByType(
|
public async getServiceByType(did: string, serviceType: string): Promise<Service> {
|
||||||
did: string,
|
let service: Service
|
||||||
serviceType: string
|
const services: Service[] = (await this.resolve(did)).service
|
||||||
): Promise<ServiceCommon> {
|
|
||||||
const services: ServiceCommon[] = (await this.resolve(did)).service
|
|
||||||
let service
|
|
||||||
services.forEach((serv) => {
|
services.forEach((serv) => {
|
||||||
if (serv.type.toString() === serviceType) {
|
if (serv.type.toString() === serviceType) {
|
||||||
service = serv
|
service = serv
|
||||||
@ -389,12 +383,10 @@ export class Assets extends Instantiable {
|
|||||||
return service
|
return service
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getServiceByIndex(
|
public async getServiceByIndex(did: string, serviceIndex: number): Promise<Service> {
|
||||||
did: string,
|
let service: Service
|
||||||
serviceIndex: number
|
const services: Service[] = (await this.resolve(did)).service
|
||||||
): Promise<ServiceCommon> {
|
|
||||||
const services: ServiceCommon[] = (await this.resolve(did)).service
|
|
||||||
let service
|
|
||||||
services.forEach((serv) => {
|
services.forEach((serv) => {
|
||||||
if (serv.index === serviceIndex) {
|
if (serv.index === serviceIndex) {
|
||||||
service = serv
|
service = serv
|
||||||
@ -441,8 +433,7 @@ export class Assets extends Instantiable {
|
|||||||
* @param {String} serviceType
|
* @param {String} serviceType
|
||||||
* @param {String} consumerAddress
|
* @param {String} consumerAddress
|
||||||
* @param {Number} serviceIndex
|
* @param {Number} serviceIndex
|
||||||
* @param {String} mpFeePercent will be converted to Wei
|
* @param {String} serviceEndpoint
|
||||||
* @param {String} mpAddress mp fee collector address
|
|
||||||
* @return {Promise<any>} Order details
|
* @return {Promise<any>} Order details
|
||||||
*/
|
*/
|
||||||
public async initialize(
|
public async initialize(
|
||||||
@ -466,7 +457,7 @@ export class Assets extends Instantiable {
|
|||||||
* @param {String} serviceType
|
* @param {String} serviceType
|
||||||
* @param {String} payerAddress
|
* @param {String} payerAddress
|
||||||
* @param {Number} serviceIndex
|
* @param {Number} serviceIndex
|
||||||
* @param {String} mpAddress mp fee collector address
|
* @param {String} mpAddress Marketplace fee collector address
|
||||||
* @param {String} consumerAddress Optionally, if the consumer is another address than payer
|
* @param {String} consumerAddress Optionally, if the consumer is another address than payer
|
||||||
* @return {Promise<String>} transactionHash of the payment
|
* @return {Promise<String>} transactionHash of the payment
|
||||||
*/
|
*/
|
||||||
@ -478,7 +469,8 @@ export class Assets extends Instantiable {
|
|||||||
mpAddress?: string,
|
mpAddress?: string,
|
||||||
consumerAddress?: string
|
consumerAddress?: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
let service
|
let service: Service
|
||||||
|
|
||||||
if (!consumerAddress) consumerAddress = payerAddress
|
if (!consumerAddress) consumerAddress = payerAddress
|
||||||
if (serviceIndex === -1) {
|
if (serviceIndex === -1) {
|
||||||
service = await this.getServiceByType(did, serviceType)
|
service = await this.getServiceByType(did, serviceType)
|
||||||
|
@ -183,7 +183,8 @@ export class Compute extends Instantiable {
|
|||||||
did?: string,
|
did?: string,
|
||||||
jobId?: string
|
jobId?: string
|
||||||
): Promise<ComputeJob[]> {
|
): Promise<ComputeJob[]> {
|
||||||
let provider
|
let provider: Provider
|
||||||
|
|
||||||
if (did) {
|
if (did) {
|
||||||
const ddo = await this.ocean.assets.resolve(did)
|
const ddo = await this.ocean.assets.resolve(did)
|
||||||
const service = ddo.findServiceByType('compute')
|
const service = ddo.findServiceByType('compute')
|
||||||
|
@ -7,6 +7,7 @@ import { Output } from '../ocean/interfaces/ComputeOutput'
|
|||||||
import { MetadataAlgorithm } from '../ddo/interfaces/MetadataAlgorithm'
|
import { MetadataAlgorithm } from '../ddo/interfaces/MetadataAlgorithm'
|
||||||
import { Versions } from '../ocean/Versions'
|
import { Versions } from '../ocean/Versions'
|
||||||
import { Response } from 'node-fetch'
|
import { Response } from 'node-fetch'
|
||||||
|
import { DDO } from '../ddo/DDO'
|
||||||
|
|
||||||
const apiPath = '/api/v1/services'
|
const apiPath = '/api/v1/services'
|
||||||
|
|
||||||
@ -19,7 +20,8 @@ const apiPath = '/api/v1/services'
|
|||||||
export class Provider extends Instantiable {
|
export class Provider extends Instantiable {
|
||||||
public nonce: string
|
public nonce: string
|
||||||
private baseUrl: string
|
private baseUrl: string
|
||||||
public get url() {
|
|
||||||
|
public get url(): string {
|
||||||
return this.baseUrl
|
return this.baseUrl
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +103,8 @@ export class Provider extends Instantiable {
|
|||||||
serviceType: string,
|
serviceType: string,
|
||||||
consumerAddress: string
|
consumerAddress: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
let DDO
|
let DDO: DDO
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DDO = await this.ocean.assets.resolve(did)
|
DDO = await this.ocean.assets.resolve(did)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -3,50 +3,50 @@ import { TestContractHandler } from '../TestContractHandler'
|
|||||||
import { DataTokens } from '../../src/datatokens/Datatokens'
|
import { DataTokens } from '../../src/datatokens/Datatokens'
|
||||||
import { Ocean } from '../../src/ocean/Ocean'
|
import { Ocean } from '../../src/ocean/Ocean'
|
||||||
import { ConfigHelper } from '../../src/utils/ConfigHelper'
|
import { ConfigHelper } from '../../src/utils/ConfigHelper'
|
||||||
|
|
||||||
import { assert } from 'chai'
|
import { assert } from 'chai'
|
||||||
import { ServiceCommon, ServiceComputePrivacy } from '../../src/ddo/interfaces/Service'
|
import { Service, ServiceComputePrivacy } from '../../src/ddo/interfaces/Service'
|
||||||
import Web3 from 'web3'
|
import Web3 from 'web3'
|
||||||
import factory from '@oceanprotocol/contracts/artifacts/DTFactory.json'
|
import factory from '@oceanprotocol/contracts/artifacts/DTFactory.json'
|
||||||
import datatokensTemplate from '@oceanprotocol/contracts/artifacts/DataTokenTemplate.json'
|
import datatokensTemplate from '@oceanprotocol/contracts/artifacts/DataTokenTemplate.json'
|
||||||
|
import { Account, DDO, Metadata } from '../../src/lib'
|
||||||
|
import { Cluster, Container, Server } from '../../src/ocean/Compute'
|
||||||
const web3 = new Web3('http://127.0.0.1:8545')
|
const web3 = new Web3('http://127.0.0.1:8545')
|
||||||
|
|
||||||
function sleep(ms) {
|
function sleep(ms: number) {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
setTimeout(resolve, ms)
|
setTimeout(resolve, ms)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Compute flow', () => {
|
describe('Compute flow', () => {
|
||||||
let owner
|
let owner: Account
|
||||||
let bob
|
let bob: Account
|
||||||
let ddo
|
let ddo: DDO
|
||||||
let alice
|
let alice: Account
|
||||||
let asset
|
let asset: Metadata
|
||||||
let datasetNoRawAlgo
|
let datasetNoRawAlgo: DDO
|
||||||
let datasetWithTrustedAlgo
|
let datasetWithTrustedAlgo: DDO
|
||||||
let algorithmAsset
|
let algorithmAsset: DDO
|
||||||
let contracts
|
let contracts: TestContractHandler
|
||||||
let datatoken: DataTokens
|
let datatoken: DataTokens
|
||||||
let tokenAddress
|
let tokenAddress: string
|
||||||
let tokenAddressNoRawAlgo
|
let tokenAddressNoRawAlgo: string
|
||||||
let tokenAddressWithTrustedAlgo
|
let tokenAddressWithTrustedAlgo: string
|
||||||
let tokenAddressAlgorithm
|
let tokenAddressAlgorithm: string
|
||||||
let price: string
|
let price: string
|
||||||
let ocean
|
let ocean: Ocean
|
||||||
let computeService: ServiceCommon
|
let computeService: Service
|
||||||
let data
|
let data: { t: number; url: string }
|
||||||
let blob
|
let blob: string
|
||||||
let jobId
|
let jobId: string
|
||||||
|
|
||||||
let cluster
|
let cluster: Cluster
|
||||||
let servers
|
let servers: Server[]
|
||||||
let containers
|
let containers: Container[]
|
||||||
let provider
|
let providerAttributes: any
|
||||||
|
|
||||||
const dateCreated = new Date(Date.now()).toISOString().split('.')[0] + 'Z' // remove milliseconds
|
const dateCreated = new Date(Date.now()).toISOString().split('.')[0] + 'Z' // remove milliseconds
|
||||||
|
|
||||||
const marketplaceAllowance = '20'
|
|
||||||
const tokenAmount = '100'
|
const tokenAmount = '100'
|
||||||
|
|
||||||
const timeout = 86400
|
const timeout = 86400
|
||||||
@ -170,7 +170,7 @@ describe('Compute flow', () => {
|
|||||||
'sha256:cb57ecfa6ebbefd8ffc7f75c0f00e57a7fa739578a429b6f72a0df19315deadc'
|
'sha256:cb57ecfa6ebbefd8ffc7f75c0f00e57a7fa739578a429b6f72a0df19315deadc'
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
provider = ocean.compute.createProviderAttributes(
|
providerAttributes = ocean.compute.createProviderAttributes(
|
||||||
'Azure',
|
'Azure',
|
||||||
'Compute service with 16gb ram for each node.',
|
'Compute service with 16gb ram for each node.',
|
||||||
cluster,
|
cluster,
|
||||||
@ -186,7 +186,7 @@ describe('Compute flow', () => {
|
|||||||
alice,
|
alice,
|
||||||
price,
|
price,
|
||||||
dateCreated,
|
dateCreated,
|
||||||
provider,
|
providerAttributes,
|
||||||
origComputePrivacy as ServiceComputePrivacy
|
origComputePrivacy as ServiceComputePrivacy
|
||||||
)
|
)
|
||||||
ddo = await ocean.assets.create(asset, alice, [computeService], tokenAddress)
|
ddo = await ocean.assets.create(asset, alice, [computeService], tokenAddress)
|
||||||
@ -205,7 +205,7 @@ describe('Compute flow', () => {
|
|||||||
alice,
|
alice,
|
||||||
'1000',
|
'1000',
|
||||||
dateCreated,
|
dateCreated,
|
||||||
provider,
|
providerAttributes,
|
||||||
origComputePrivacy as ServiceComputePrivacy
|
origComputePrivacy as ServiceComputePrivacy
|
||||||
)
|
)
|
||||||
datasetNoRawAlgo = await ocean.assets.create(
|
datasetNoRawAlgo = await ocean.assets.create(
|
||||||
@ -229,7 +229,7 @@ describe('Compute flow', () => {
|
|||||||
alice,
|
alice,
|
||||||
'1000',
|
'1000',
|
||||||
dateCreated,
|
dateCreated,
|
||||||
provider,
|
providerAttributes,
|
||||||
origComputePrivacy as ServiceComputePrivacy
|
origComputePrivacy as ServiceComputePrivacy
|
||||||
)
|
)
|
||||||
datasetWithTrustedAlgo = await ocean.assets.create(
|
datasetWithTrustedAlgo = await ocean.assets.create(
|
||||||
@ -243,7 +243,7 @@ describe('Compute flow', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
it('should publish an algorithm', async () => {
|
it('should publish an algorithm', async () => {
|
||||||
const algoAsset = {
|
const algoAsset: Metadata = {
|
||||||
main: {
|
main: {
|
||||||
type: 'algorithm',
|
type: 'algorithm',
|
||||||
name: 'Test Algo',
|
name: 'Test Algo',
|
||||||
@ -344,7 +344,7 @@ describe('Compute flow', () => {
|
|||||||
undefined,
|
undefined,
|
||||||
algorithmMeta,
|
algorithmMeta,
|
||||||
output,
|
output,
|
||||||
computeService.index,
|
`${computeService.index}`,
|
||||||
computeService.type
|
computeService.type
|
||||||
)
|
)
|
||||||
jobId = response.jobId
|
jobId = response.jobId
|
||||||
@ -365,7 +365,8 @@ describe('Compute flow', () => {
|
|||||||
assert(jobId != null)
|
assert(jobId != null)
|
||||||
await ocean.compute.stop(bob, ddo.id, jobId)
|
await ocean.compute.stop(bob, ddo.id, jobId)
|
||||||
const response = await ocean.compute.status(bob, ddo.id, jobId)
|
const response = await ocean.compute.status(bob, ddo.id, jobId)
|
||||||
assert(response[0].stopreq === 1)
|
// TODO: typings say that `stopreq` does not exist
|
||||||
|
assert((response[0] as any).stopreq === 1)
|
||||||
})
|
})
|
||||||
it('should not allow order the compute service with raw algo for dataset that does not allow raw algo', async () => {
|
it('should not allow order the compute service with raw algo for dataset that does not allow raw algo', async () => {
|
||||||
const service1 = datasetNoRawAlgo.findServiceByType('compute')
|
const service1 = datasetNoRawAlgo.findServiceByType('compute')
|
||||||
@ -416,7 +417,7 @@ describe('Compute flow', () => {
|
|||||||
algorithmAsset.id,
|
algorithmAsset.id,
|
||||||
undefined,
|
undefined,
|
||||||
output,
|
output,
|
||||||
computeService.index,
|
`${computeService.index}`,
|
||||||
computeService.type,
|
computeService.type,
|
||||||
orderalgo,
|
orderalgo,
|
||||||
algorithmAsset.dataToken
|
algorithmAsset.dataToken
|
||||||
|
@ -5,7 +5,7 @@ import spies from 'chai-spies'
|
|||||||
import Web3 from 'web3'
|
import Web3 from 'web3'
|
||||||
import { AbiItem } from 'web3-utils/types'
|
import { AbiItem } from 'web3-utils/types'
|
||||||
import { DataTokens } from '../../src/datatokens/Datatokens'
|
import { DataTokens } from '../../src/datatokens/Datatokens'
|
||||||
import { Account, EditableMetadata, ServiceAccess, ServiceCommon } from '../../src/lib'
|
import { Account, EditableMetadata, Service, ServiceAccess } from '../../src/lib'
|
||||||
import { Ocean } from '../../src/ocean/Ocean'
|
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'
|
||||||
@ -33,7 +33,7 @@ describe('Marketplace flow', () => {
|
|||||||
let service1: ServiceAccess
|
let service1: ServiceAccess
|
||||||
let price: string
|
let price: string
|
||||||
let ocean: Ocean
|
let ocean: Ocean
|
||||||
let accessService: ServiceCommon
|
let accessService: Service
|
||||||
let data
|
let data
|
||||||
let blob
|
let blob
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user