1
0
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:
Alex Coseru 2020-10-13 16:03:19 +03:00 committed by GitHub
commit a55da41ac7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 62 additions and 64 deletions

View File

@ -782,6 +782,7 @@ export class OceanPool extends Pool {
fromBlock: 0,
toBlock: 'latest'
})
events.sort((a, b) => (a.blockNumber > b.blockNumber ? 1 : -1))
for (let i = 0; i < events.length; i++) {
const constituents = await super.getCurrentTokens(events[i].returnValues[0])
if (constituents.includes(dtAddress)) result.push(events[i].returnValues[0])

View File

@ -1,13 +1,7 @@
import { SearchQuery, QueryResult } from '../metadatacache/MetadataCache'
import { DDO } from '../ddo/DDO'
import { Metadata } from '../ddo/interfaces/Metadata'
import {
Service,
ServiceAccess,
ServiceComputePrivacy,
ServiceCommon
} from '../ddo/interfaces/Service'
import { Service, ServiceAccess, ServiceComputePrivacy } from '../ddo/interfaces/Service'
import { EditableMetadata } from '../ddo/interfaces/EditableMetadata'
import Account from './Account'
import DID from './DID'
@ -17,6 +11,7 @@ import { WebServiceConnector } from './utils/WebServiceConnector'
import BigNumber from 'bignumber.js'
import { Provider } from '../provider/Provider'
import { isAddress } from 'web3-utils'
import { MetadataMain } from '../ddo/interfaces'
export enum CreateProgressStep {
CreatingDataToken,
@ -124,7 +119,8 @@ export class Assets extends Instantiable {
this.logger.log('Encrypting files')
observer.next(CreateProgressStep.EncryptingFiles)
let provider
let provider: Provider
if (providerUri) {
provider = new Provider(this.instanceConfig)
provider.setBaseUrl(providerUri)
@ -175,7 +171,7 @@ export class Assets extends Instantiable {
index,
url: undefined
}))
} as any
} as MetadataMain
}
},
...services
@ -375,12 +371,10 @@ export class Assets extends Instantiable {
} as SearchQuery)
}
public async getServiceByType(
did: string,
serviceType: string
): Promise<ServiceCommon> {
const services: ServiceCommon[] = (await this.resolve(did)).service
let service
public async getServiceByType(did: string, serviceType: string): Promise<Service> {
let service: Service
const services: Service[] = (await this.resolve(did)).service
services.forEach((serv) => {
if (serv.type.toString() === serviceType) {
service = serv
@ -389,12 +383,10 @@ export class Assets extends Instantiable {
return service
}
public async getServiceByIndex(
did: string,
serviceIndex: number
): Promise<ServiceCommon> {
const services: ServiceCommon[] = (await this.resolve(did)).service
let service
public async getServiceByIndex(did: string, serviceIndex: number): Promise<Service> {
let service: Service
const services: Service[] = (await this.resolve(did)).service
services.forEach((serv) => {
if (serv.index === serviceIndex) {
service = serv
@ -441,8 +433,7 @@ export class Assets extends Instantiable {
* @param {String} serviceType
* @param {String} consumerAddress
* @param {Number} serviceIndex
* @param {String} mpFeePercent will be converted to Wei
* @param {String} mpAddress mp fee collector address
* @param {String} serviceEndpoint
* @return {Promise<any>} Order details
*/
public async initialize(
@ -466,7 +457,7 @@ export class Assets extends Instantiable {
* @param {String} serviceType
* @param {String} payerAddress
* @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
* @return {Promise<String>} transactionHash of the payment
*/
@ -478,7 +469,8 @@ export class Assets extends Instantiable {
mpAddress?: string,
consumerAddress?: string
): Promise<string> {
let service
let service: Service
if (!consumerAddress) consumerAddress = payerAddress
if (serviceIndex === -1) {
service = await this.getServiceByType(did, serviceType)

View File

@ -183,7 +183,8 @@ export class Compute extends Instantiable {
did?: string,
jobId?: string
): Promise<ComputeJob[]> {
let provider
let provider: Provider
if (did) {
const ddo = await this.ocean.assets.resolve(did)
const service = ddo.findServiceByType('compute')

View File

@ -7,6 +7,7 @@ import { Output } from '../ocean/interfaces/ComputeOutput'
import { MetadataAlgorithm } from '../ddo/interfaces/MetadataAlgorithm'
import { Versions } from '../ocean/Versions'
import { Response } from 'node-fetch'
import { DDO } from '../ddo/DDO'
const apiPath = '/api/v1/services'
@ -19,7 +20,8 @@ const apiPath = '/api/v1/services'
export class Provider extends Instantiable {
public nonce: string
private baseUrl: string
public get url() {
public get url(): string {
return this.baseUrl
}
@ -101,7 +103,8 @@ export class Provider extends Instantiable {
serviceType: string,
consumerAddress: string
): Promise<string> {
let DDO
let DDO: DDO
try {
DDO = await this.ocean.assets.resolve(did)
} catch (e) {

View File

@ -3,50 +3,50 @@ import { TestContractHandler } from '../TestContractHandler'
import { DataTokens } from '../../src/datatokens/Datatokens'
import { Ocean } from '../../src/ocean/Ocean'
import { ConfigHelper } from '../../src/utils/ConfigHelper'
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 factory from '@oceanprotocol/contracts/artifacts/DTFactory.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')
function sleep(ms) {
function sleep(ms: number) {
return new Promise((resolve) => {
setTimeout(resolve, ms)
})
}
describe('Compute flow', () => {
let owner
let bob
let ddo
let alice
let asset
let datasetNoRawAlgo
let datasetWithTrustedAlgo
let algorithmAsset
let contracts
let owner: Account
let bob: Account
let ddo: DDO
let alice: Account
let asset: Metadata
let datasetNoRawAlgo: DDO
let datasetWithTrustedAlgo: DDO
let algorithmAsset: DDO
let contracts: TestContractHandler
let datatoken: DataTokens
let tokenAddress
let tokenAddressNoRawAlgo
let tokenAddressWithTrustedAlgo
let tokenAddressAlgorithm
let tokenAddress: string
let tokenAddressNoRawAlgo: string
let tokenAddressWithTrustedAlgo: string
let tokenAddressAlgorithm: string
let price: string
let ocean
let computeService: ServiceCommon
let data
let blob
let jobId
let ocean: Ocean
let computeService: Service
let data: { t: number; url: string }
let blob: string
let jobId: string
let cluster
let servers
let containers
let provider
let cluster: Cluster
let servers: Server[]
let containers: Container[]
let providerAttributes: any
const dateCreated = new Date(Date.now()).toISOString().split('.')[0] + 'Z' // remove milliseconds
const marketplaceAllowance = '20'
const tokenAmount = '100'
const timeout = 86400
@ -170,7 +170,7 @@ describe('Compute flow', () => {
'sha256:cb57ecfa6ebbefd8ffc7f75c0f00e57a7fa739578a429b6f72a0df19315deadc'
)
]
provider = ocean.compute.createProviderAttributes(
providerAttributes = ocean.compute.createProviderAttributes(
'Azure',
'Compute service with 16gb ram for each node.',
cluster,
@ -186,7 +186,7 @@ describe('Compute flow', () => {
alice,
price,
dateCreated,
provider,
providerAttributes,
origComputePrivacy as ServiceComputePrivacy
)
ddo = await ocean.assets.create(asset, alice, [computeService], tokenAddress)
@ -205,7 +205,7 @@ describe('Compute flow', () => {
alice,
'1000',
dateCreated,
provider,
providerAttributes,
origComputePrivacy as ServiceComputePrivacy
)
datasetNoRawAlgo = await ocean.assets.create(
@ -229,7 +229,7 @@ describe('Compute flow', () => {
alice,
'1000',
dateCreated,
provider,
providerAttributes,
origComputePrivacy as ServiceComputePrivacy
)
datasetWithTrustedAlgo = await ocean.assets.create(
@ -243,7 +243,7 @@ describe('Compute flow', () => {
})
it('should publish an algorithm', async () => {
const algoAsset = {
const algoAsset: Metadata = {
main: {
type: 'algorithm',
name: 'Test Algo',
@ -344,7 +344,7 @@ describe('Compute flow', () => {
undefined,
algorithmMeta,
output,
computeService.index,
`${computeService.index}`,
computeService.type
)
jobId = response.jobId
@ -365,7 +365,8 @@ describe('Compute flow', () => {
assert(jobId != null)
await ocean.compute.stop(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 () => {
const service1 = datasetNoRawAlgo.findServiceByType('compute')
@ -416,7 +417,7 @@ describe('Compute flow', () => {
algorithmAsset.id,
undefined,
output,
computeService.index,
`${computeService.index}`,
computeService.type,
orderalgo,
algorithmAsset.dataToken

View File

@ -5,7 +5,7 @@ import spies from 'chai-spies'
import Web3 from 'web3'
import { AbiItem } from 'web3-utils/types'
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 { ConfigHelper } from '../../src/utils/ConfigHelper'
import { TestContractHandler } from '../TestContractHandler'
@ -33,7 +33,7 @@ describe('Marketplace flow', () => {
let service1: ServiceAccess
let price: string
let ocean: Ocean
let accessService: ServiceCommon
let accessService: Service
let data
let blob