From 392d0b495bb52f0e81e7698339bf662694fb8ed1 Mon Sep 17 00:00:00 2001 From: Seweryn Kras Date: Thu, 13 Jun 2024 16:30:07 +0200 Subject: [PATCH] feat: unify inconsistent `getProviderInfo()` and `get provider()` --- examples/advanced/step-by-step.ts | 2 +- src/activity/activity.module.ts | 4 ++-- src/activity/activity.ts | 4 ++-- src/activity/exe-script-executor.test.ts | 2 +- src/activity/exe-script-executor.ts | 6 +++--- src/activity/work/batch.spec.ts | 12 ++++++------ src/activity/work/batch.ts | 8 ++++---- src/activity/work/process.ts | 4 ++-- src/activity/work/work.ts | 18 +++++++++--------- src/golem-network/golem-network.ts | 2 +- src/lease-process/lease-process-pool.ts | 2 +- src/market/agreement/agreement.ts | 2 +- src/market/market.module.ts | 4 ++-- src/market/proposal/offer-proposal.ts | 5 +---- src/payment/agreement_payment_process.spec.ts | 4 ++-- src/payment/agreement_payment_process.ts | 2 +- .../yagna/adapters/activity-api-adapter.ts | 8 ++++---- .../yagna/adapters/market-api-adapter.ts | 2 +- tests/unit/agreement.test.ts | 8 ++++---- tests/unit/work.test.ts | 2 +- 20 files changed, 49 insertions(+), 52 deletions(-) diff --git a/examples/advanced/step-by-step.ts b/examples/advanced/step-by-step.ts index a20192432..c45d6ff16 100644 --- a/examples/advanced/step-by-step.ts +++ b/examples/advanced/step-by-step.ts @@ -104,7 +104,7 @@ import { filter, map, switchMap, take } from "rxjs"; // To keep this example simple, we will not retry and just crash if the signing fails const draftProposal = draftProposals[0]!; const agreement = await glm.market.proposeAgreement(draftProposal); - console.log("Agreement signed with provider", agreement.getProviderInfo().name); + console.log("Agreement signed with provider", agreement.provider.name); // Provider is ready to start the computation // Let's setup payment first diff --git a/src/activity/activity.module.ts b/src/activity/activity.module.ts index 4f03e69ab..2dc43a630 100644 --- a/src/activity/activity.module.ts +++ b/src/activity/activity.module.ts @@ -195,7 +195,7 @@ export class ActivityModuleImpl implements ActivityModule { async createActivity(agreement: Agreement): Promise { this.logger.info("Creating activity", { agreementId: agreement.id, - provider: agreement.getProviderInfo(), + provider: agreement.provider, }); try { const activity = await this.activityApi.createActivity(agreement); @@ -211,7 +211,7 @@ export class ActivityModuleImpl implements ActivityModule { this.logger.info("Destroying activity", { activityId: activity.id, agreementId: activity.agreement.id, - provider: activity.agreement.getProviderInfo(), + provider: activity.agreement.provider, }); try { const updated = await this.activityApi.destroyActivity(activity); diff --git a/src/activity/activity.ts b/src/activity/activity.ts index 162c8543e..d9bdc601c 100644 --- a/src/activity/activity.ts +++ b/src/activity/activity.ts @@ -42,8 +42,8 @@ export class Activity { protected readonly usage: ActivityUsageInfo, ) {} - public getProviderInfo(): ProviderInfo { - return this.agreement.getProviderInfo(); + public get provider(): ProviderInfo { + return this.agreement.provider; } public getState() { diff --git a/src/activity/exe-script-executor.test.ts b/src/activity/exe-script-executor.test.ts index 73cd93550..fb8fbdb67 100644 --- a/src/activity/exe-script-executor.test.ts +++ b/src/activity/exe-script-executor.test.ts @@ -24,7 +24,7 @@ describe("ExeScriptExecutor", () => { reset(mockStorageProvider); reset(mockActivityModule); resetAllMocks(); - when(mockActivity.getProviderInfo()).thenReturn({ + when(mockactivity.provider).thenReturn({ id: "test-provider-id", name: "test-provider-name", walletAddress: "0xProviderWallet", diff --git a/src/activity/exe-script-executor.ts b/src/activity/exe-script-executor.ts index dfead36a8..ff9c00005 100644 --- a/src/activity/exe-script-executor.ts +++ b/src/activity/exe-script-executor.ts @@ -88,7 +88,7 @@ export class ExeScriptExecutor { WorkErrorCode.ScriptExecutionFailed, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, error, ); } @@ -181,7 +181,7 @@ export class ExeScriptExecutor { WorkErrorCode.ActivityResultsFetchingFailed, agreement, activity, - activity.getProviderInfo(), + activity.provider, error, ), ); @@ -235,7 +235,7 @@ export class ExeScriptExecutor { WorkErrorCode.ActivityResultsFetchingFailed, activity.agreement, activity, - activity.getProviderInfo(), + activity.provider, ); } if (error) { diff --git a/src/activity/work/batch.spec.ts b/src/activity/work/batch.spec.ts index f82db017f..cb8cdb476 100644 --- a/src/activity/work/batch.spec.ts +++ b/src/activity/work/batch.spec.ts @@ -34,8 +34,8 @@ describe("Batch", () => { walletAddress: "0xTestProvider", }; - when(mockAgreement.getProviderInfo()).thenReturn(providerInfo); - when(mockActivity.getProviderInfo()).thenReturn(providerInfo); + when(mockagreement.provider).thenReturn(providerInfo); + when(mockactivity.provider).thenReturn(providerInfo); when(mockActivity.agreement).thenReturn(instance(mockAgreement)); activity = instance(mockActivity); @@ -161,7 +161,7 @@ describe("Batch", () => { WorkErrorCode.ScriptExecutionFailed, activity.agreement, activity, - activity.getProviderInfo(), + activity.provider, new Error("FAILURE"), ), ); @@ -179,7 +179,7 @@ describe("Batch", () => { WorkErrorCode.ScriptExecutionFailed, activity.agreement, activity, - activity.getProviderInfo(), + activity.provider, new Error("ERROR"), ), ); @@ -197,7 +197,7 @@ describe("Batch", () => { WorkErrorCode.ScriptExecutionFailed, activity.agreement, activity, - activity.getProviderInfo(), + activity.provider, new Error("FAILURE"), ), ); @@ -284,7 +284,7 @@ describe("Batch", () => { WorkErrorCode.ScriptExecutionFailed, activity.agreement, activity, - activity.getProviderInfo(), + activity.provider, new Error("ERROR"), ), ); diff --git a/src/activity/work/batch.ts b/src/activity/work/batch.ts index 0a6e5ff46..d99801ff5 100644 --- a/src/activity/work/batch.ts +++ b/src/activity/work/batch.ts @@ -107,7 +107,7 @@ export class Batch { WorkErrorCode.ScriptExecutionFailed, this.executor.activity.agreement, this.executor.activity, - this.executor.activity.agreement.getProviderInfo(), + this.executor.activity.agreement.provider, error, ); this.logger.debug("Error in batch script execution"); @@ -130,7 +130,7 @@ export class Batch { WorkErrorCode.ScriptExecutionFailed, this.executor.activity.agreement, this.executor.activity, - this.executor.activity.agreement.getProviderInfo(), + this.executor.activity.agreement.provider, error, ); } @@ -153,7 +153,7 @@ export class Batch { WorkErrorCode.ScriptExecutionFailed, this.executor.activity.agreement, this.executor.activity, - this.executor.activity.agreement.getProviderInfo(), + this.executor.activity.agreement.provider, error, ); } @@ -169,7 +169,7 @@ export class Batch { WorkErrorCode.ScriptExecutionFailed, activity.agreement, activity, - activity.getProviderInfo(), + activity.provider, ) : null; if (error) { diff --git a/src/activity/work/process.ts b/src/activity/work/process.ts index b6dec6ef0..7f9577eae 100644 --- a/src/activity/work/process.ts +++ b/src/activity/work/process.ts @@ -53,7 +53,7 @@ export class RemoteProcess { WorkErrorCode.ActivityResultsFetchingFailed, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, new GolemTimeoutError(`The waiting time (${timeoutInMs} ms) for the final result has been exceeded`), ), ); @@ -72,7 +72,7 @@ export class RemoteProcess { WorkErrorCode.ActivityResultsFetchingFailed, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, ), ); this.activityModule diff --git a/src/activity/work/work.ts b/src/activity/work/work.ts index 2f18b8705..feece78b4 100644 --- a/src/activity/work/work.ts +++ b/src/activity/work/work.ts @@ -77,7 +77,7 @@ export class WorkContext { this.activityStateCheckingInterval = options?.activityStateCheckingInterval || DEFAULTS.activityStateCheckInterval; this.logger = options?.logger ?? defaultLogger("work"); - this.provider = activity.getProviderInfo(); + this.provider = activity.provider; this.storageProvider = options?.storageProvider ?? new NullStorageProvider(); this.networkNode = options?.networkNode; @@ -121,7 +121,7 @@ export class WorkContext { WorkErrorCode.ActivityDeploymentFailed, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, e, ); }); @@ -144,7 +144,7 @@ export class WorkContext { WorkErrorCode.ActivityDeploymentFailed, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, ); } })(), @@ -158,7 +158,7 @@ export class WorkContext { WorkErrorCode.ActivityDeploymentFailed, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, error, ); }) @@ -175,7 +175,7 @@ export class WorkContext { WorkErrorCode.ActivityDeploymentFailed, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, ); } @@ -263,7 +263,7 @@ export class WorkContext { WorkErrorCode.ScriptExecutionFailed, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, e, ); }); @@ -342,7 +342,7 @@ export class WorkContext { WorkErrorCode.NetworkSetupMissing, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, ); return this.networkNode.getWebsocketUri(port); @@ -355,7 +355,7 @@ export class WorkContext { WorkErrorCode.NetworkSetupMissing, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, ); return this.networkNode.ip; } @@ -394,7 +394,7 @@ export class WorkContext { WorkErrorCode.ScriptInitializationFailed, this.activity.agreement, this.activity, - this.activity.getProviderInfo(), + this.activity.provider, e, ); }); diff --git a/src/golem-network/golem-network.ts b/src/golem-network/golem-network.ts index 3f0b93c99..e333f29e2 100644 --- a/src/golem-network/golem-network.ts +++ b/src/golem-network/golem-network.ts @@ -359,7 +359,7 @@ export class GolemNetwork { }); const networkNode = order.network - ? await this.network.createNetworkNode(order.network, agreement.getProviderInfo().id) + ? await this.network.createNetworkNode(order.network, agreement.provider.id) : undefined; const lease = this.lease.createLease(agreement, allocation, { diff --git a/src/lease-process/lease-process-pool.ts b/src/lease-process/lease-process-pool.ts index 299774cdf..6100368cf 100644 --- a/src/lease-process/lease-process-pool.ts +++ b/src/lease-process/lease-process-pool.ts @@ -105,7 +105,7 @@ export class LeaseProcessPool { try { const agreement = await this.marketModule.signAgreementFromPool(this.proposalPool, this.agreementOptions); const networkNode = this.network - ? await this.networkModule.createNetworkNode(this.network, agreement.getProviderInfo().id) + ? await this.networkModule.createNetworkNode(this.network, agreement.provider.id) : undefined; const leaseProcess = this.leaseModule.createLease(agreement, this.allocation, { networkNode, diff --git a/src/market/agreement/agreement.ts b/src/market/agreement/agreement.ts index 2efb53421..8e171ab20 100644 --- a/src/market/agreement/agreement.ts +++ b/src/market/agreement/agreement.ts @@ -51,7 +51,7 @@ export class Agreement { return this.model.state; } - getProviderInfo(): ProviderInfo { + get provider(): ProviderInfo { return { id: this.model.offer.providerId, name: this.model.offer.properties["golem.node.id.name"], diff --git a/src/market/market.module.ts b/src/market/market.module.ts index 5c8d67846..9d895454f 100644 --- a/src/market/market.module.ts +++ b/src/market/market.module.ts @@ -389,7 +389,7 @@ export class MarketModuleImpl implements MarketModule { this.logger.info("Proposed and got approval for agreement", { agreementId: agreement.id, - provider: agreement.getProviderInfo(), + provider: agreement.provider, }); return agreement; @@ -400,7 +400,7 @@ export class MarketModuleImpl implements MarketModule { this.logger.info("Terminated agreement", { agreementId: agreement.id, - provider: agreement.getProviderInfo(), + provider: agreement.provider, reason, }); diff --git a/src/market/proposal/offer-proposal.ts b/src/market/proposal/offer-proposal.ts index 9fce9e381..a6abf12c5 100644 --- a/src/market/proposal/offer-proposal.ts +++ b/src/market/proposal/offer-proposal.ts @@ -40,7 +40,6 @@ export type ProposalDTO = Partial<{ */ export class OfferProposal extends MarketProposal { public readonly issuer = "Provider"; - public provider: ProviderInfo; constructor( model: MarketApi.ProposalDTO, @@ -48,8 +47,6 @@ export class OfferProposal extends MarketProposal { ) { super(model); - this.provider = this.getProviderInfo(); - this.validate(); } @@ -107,7 +104,7 @@ export class OfferProposal extends MarketProposal { return this.pricing.start + this.pricing.cpuSec * threadsNo + this.pricing.envSec; } - public getProviderInfo(): ProviderInfo { + public get provider(): ProviderInfo { return { id: this.model.issuerId, name: this.properties["golem.node.id.name"], diff --git a/src/payment/agreement_payment_process.spec.ts b/src/payment/agreement_payment_process.spec.ts index 15b9bcede..9d6f70079 100644 --- a/src/payment/agreement_payment_process.spec.ts +++ b/src/payment/agreement_payment_process.spec.ts @@ -30,7 +30,7 @@ beforeEach(() => { walletAddress: "0x1234", }; - when(agreementMock.getProviderInfo()).thenReturn(testProviderInfo); + when(agreementMock.provider).thenReturn(testProviderInfo); when(invoiceMock.provider).thenReturn(testProviderInfo); when(mockPaymentModule.observeInvoices()).thenReturn(new Subject()); when(mockPaymentModule.observeDebitNotes()).thenReturn(new Subject()); @@ -170,7 +170,7 @@ describe("AgreementPaymentProcess", () => { "Agreement agreement-id is already covered with an invoice: invoice-id", PaymentErrorCode.AgreementAlreadyPaid, allocation, - agreement.getProviderInfo(), + agreement.provider, ), ); expect(process.isFinished()).toEqual(true); diff --git a/src/payment/agreement_payment_process.ts b/src/payment/agreement_payment_process.ts index 8aeef8b30..0af0cce7e 100644 --- a/src/payment/agreement_payment_process.ts +++ b/src/payment/agreement_payment_process.ts @@ -256,7 +256,7 @@ export class AgreementPaymentProcess { invoiceId: invoice.id, agreementId: invoice.agreementId, amount: invoice.amount, - provider: this.agreement.getProviderInfo(), + provider: this.agreement.provider, }); } catch (error) { const message = getMessageFromApiError(error); diff --git a/src/shared/yagna/adapters/activity-api-adapter.ts b/src/shared/yagna/adapters/activity-api-adapter.ts index 8c5000876..e0daae6b1 100644 --- a/src/shared/yagna/adapters/activity-api-adapter.ts +++ b/src/shared/yagna/adapters/activity-api-adapter.ts @@ -39,7 +39,7 @@ export class ActivityApiAdapter implements IActivityApi { WorkErrorCode.ActivityCreationFailed, agreement, undefined, - agreement.getProviderInfo(), + agreement.provider, ); } } @@ -55,7 +55,7 @@ export class ActivityApiAdapter implements IActivityApi { WorkErrorCode.ActivityDestroyingFailed, activity.agreement, activity, - activity.agreement.getProviderInfo(), + activity.agreement.provider, ); } } @@ -74,7 +74,7 @@ export class ActivityApiAdapter implements IActivityApi { WorkErrorCode.ScriptExecutionFailed, activity.agreement, activity, - activity.agreement.getProviderInfo(), + activity.agreement.provider, ); } } @@ -95,7 +95,7 @@ export class ActivityApiAdapter implements IActivityApi { WorkErrorCode.ActivityResultsFetchingFailed, activity.agreement, activity, - activity.getProviderInfo(), + activity.provider, error, ); } diff --git a/src/shared/yagna/adapters/market-api-adapter.ts b/src/shared/yagna/adapters/market-api-adapter.ts index 0dd5c8cf4..a9999c2be 100644 --- a/src/shared/yagna/adapters/market-api-adapter.ts +++ b/src/shared/yagna/adapters/market-api-adapter.ts @@ -277,7 +277,7 @@ export class MarketApiAdapter implements IMarketApi { ); } - this.logger.info("Established agreement", { agreementId: agreement.id, provider: agreement.getProviderInfo() }); + this.logger.info("Established agreement", { agreementId: agreement.id, provider: agreement.provider }); return confirmed; } diff --git a/tests/unit/agreement.test.ts b/tests/unit/agreement.test.ts index ff9736ab0..ba484ad91 100644 --- a/tests/unit/agreement.test.ts +++ b/tests/unit/agreement.test.ts @@ -38,12 +38,12 @@ const demand = new Demand( ); describe("Agreement", () => { - describe("getProviderInfo()", () => { + describe("get provider()", () => { it("should be a instance ProviderInfo with provider details", () => { const agreement = new Agreement(agreementData.agreementId, agreementData, demand); - expect(agreement.getProviderInfo().id).toEqual("provider-id"); - expect(agreement.getProviderInfo().name).toEqual("provider-name"); - expect(agreement.getProviderInfo().walletAddress).toEqual("0xProviderWallet"); + expect(agreement.provider.id).toEqual("provider-id"); + expect(agreement.provider.name).toEqual("provider-name"); + expect(agreement.provider.walletAddress).toEqual("0xProviderWallet"); }); }); diff --git a/tests/unit/work.test.ts b/tests/unit/work.test.ts index 85689d8ba..a31b2c620 100644 --- a/tests/unit/work.test.ts +++ b/tests/unit/work.test.ts @@ -41,7 +41,7 @@ describe("Work Context", () => { reset(mockStorageProvider); reset(mockAgreement); reset(mockActivityModule); - when(mockActivity.getProviderInfo()).thenReturn({ + when(mockActivity.provider).thenReturn({ id: "test-provider-id", name: "test-provider-name", walletAddress: "0xProviderWallet",