Skip to content

Commit

Permalink
fix(odap-plugin): fix bug where two gateways are using the same database
Browse files Browse the repository at this point in the history
Signed-off-by: André Augusto <andre.augusto@tecnico.ulisboa.pt>
  • Loading branch information
AndreAugusto11 committed Nov 15, 2022
1 parent 6ff6aac commit 70b3391
Show file tree
Hide file tree
Showing 15 changed files with 57 additions and 10 deletions.
4 changes: 0 additions & 4 deletions packages/cactus-plugin-odap-hermes/knex/knex.js

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export class BesuOdapGateway extends PluginOdapGateway {
ipfsPath: options.ipfsPath,
clientHelper: options.clientHelper,
serverHelper: options.serverHelper,
knexConfig: options.knexConfig,
});

if (options.besuPath != undefined) this.defineBesuConnection(options);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export class FabricOdapGateway extends PluginOdapGateway {
ipfsPath: options.ipfsPath,
clientHelper: options.clientHelper,
serverHelper: options.serverHelper,
knexConfig: options.knexConfig,
});

if (options.fabricPath != undefined) this.defineFabricConnection(options);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ export interface IPluginOdapGatewayConstructorOptions {
ipfsPath?: string;
clientHelper: ClientGatewayHelper;
serverHelper: ServerGatewayHelper;
knexConfig?: Knex.Config;
}
export interface IOdapPluginKeyPair {
publicKey: Uint8Array;
Expand Down Expand Up @@ -185,16 +186,16 @@ export abstract class PluginOdapGateway

if (options.ipfsPath != undefined) this.defineIpfsConnection(options);

this.defineKnexConnection();
this.defineKnexConnection(options.knexConfig);
}

public defineKnexConnection(): void {
public defineKnexConnection(config: Knex.Config | undefined): void {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const config = require("../../../../knex/knexfile.ts")[
const configFile = require("../../../../knex/knexfile.ts")[
process.env.ENVIRONMENT || "development"
];

this.database = knex(config);
this.database = knex(config || configFile);
}

private defineIpfsConnection(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ import {
} from "../../../main/typescript/gateway/besu-odap-gateway";
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";

import { knexClientConnection, knexServerConnection } from "../knex.config";

/**
* Use this to debug issues with the fabric node SDK
* ```sh
Expand Down Expand Up @@ -577,6 +580,7 @@ beforeAll(async () => {
backupGatewaysAllowed: allowedGateways,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};

odapServerGatewayPluginOptions = {
Expand All @@ -591,6 +595,7 @@ beforeAll(async () => {
besuKeychainId: besuKeychainId,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexServerConnection,
};

pluginSourceGateway = new FabricOdapGateway(odapClientGatewayPluginOptions);
Expand Down Expand Up @@ -810,6 +815,7 @@ test("client gateway crashes after lock fabric asset", async () => {
fabricContractName: fabricContractName,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};

pluginSourceGateway = new FabricOdapGateway(odapClientGatewayPluginOptions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ import {
} from "../../../main/typescript/gateway/besu-odap-gateway";
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";

import { knexClientConnection, knexServerConnection } from "../knex.config";

/**
* Use this to debug issues with the fabric node SDK
* ```sh
Expand Down Expand Up @@ -567,6 +570,7 @@ beforeAll(async () => {
fabricContractName: fabricContractName,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexServerConnection,
};

odapServerGatewayPluginOptions = {
Expand All @@ -581,6 +585,7 @@ beforeAll(async () => {
besuKeychainId: besuKeychainId,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};

pluginSourceGateway = new FabricOdapGateway(odapClientGatewayPluginOptions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ import {
} from "../../../main/typescript/gateway/fabric-odap-gateway";
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";

import { knexClientConnection, knexServerConnection } from "../knex.config";

/**
* Use this to debug issues with the fabric node SDK
* ```sh
Expand Down Expand Up @@ -568,6 +571,7 @@ beforeAll(async () => {
fabricContractName: fabricContractName,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexServerConnection,
};

odapServerGatewayPluginOptions = {
Expand All @@ -582,6 +586,7 @@ beforeAll(async () => {
besuKeychainId: besuKeychainId,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};

pluginSourceGateway = new FabricOdapGateway(odapClientGatewayPluginOptions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ import { FabricOdapGateway } from "../../../main/typescript/gateway/fabric-odap-
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";

import { knexClientConnection, knexServerConnection } from "../knex.config";

const MAX_RETRIES = 5;
const MAX_TIMEOUT = 5000;

Expand Down Expand Up @@ -116,6 +118,7 @@ beforeAll(async () => {
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexServerConnection,
};

serverExpressApp = express();
Expand Down Expand Up @@ -155,6 +158,7 @@ beforeAll(async () => {
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};

clientExpressApp = express();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ import {
} from "../../../main/typescript/gateway/fabric-odap-gateway";
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";

import { knexClientConnection, knexServerConnection } from "../knex.config";

/**
* Use this to debug issues with the fabric node SDK
* ```sh
Expand Down Expand Up @@ -568,6 +571,7 @@ beforeEach(async () => {
fabricContractName: fabricContractName,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};

odapServerGatewayPluginOptions = {
Expand All @@ -582,6 +586,7 @@ beforeEach(async () => {
besuKeychainId: besuKeychainId,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexServerConnection,
};

pluginSourceGateway = new FabricOdapGateway(odapClientGatewayPluginOptions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ import {
import { ClientGatewayHelper } from "../../../main/typescript/gateway/client/client-helper";
import { ServerGatewayHelper } from "../../../main/typescript/gateway/server/server-helper";

import { knexClientConnection } from "../knex.config";

const MAX_RETRIES = 5;
const MAX_TIMEOUT = 5000;

Expand Down Expand Up @@ -155,6 +157,7 @@ beforeAll(async () => {
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};

clientExpressApp = express();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ import {
import { ClientGatewayHelper } from "../../../../main/typescript/gateway/client/client-helper";
import { ServerGatewayHelper } from "../../../../main/typescript/gateway/server/server-helper";

import { knexClientConnection, knexServerConnection } from "../../knex.config";

const logLevel: LogLevelDesc = "TRACE";

let sourceGatewayConstructor: IFabricOdapGatewayConstructorOptions;
Expand Down Expand Up @@ -107,6 +109,7 @@ beforeAll(async () => {
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};
recipientGatewayConstructor = {
name: "plugin-odap-gateway#recipientGateway",
Expand All @@ -115,6 +118,7 @@ beforeAll(async () => {
ipfsPath: ipfsApiHost,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexServerConnection,
};
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ import { FabricOdapGateway } from "../../../../main/typescript/gateway/fabric-od
import { ClientGatewayHelper } from "../../../../main/typescript/gateway/client/client-helper";
import { ServerGatewayHelper } from "../../../../main/typescript/gateway/server/server-helper";

import { knexClientConnection, knexServerConnection } from "../../knex.config";

const logLevel: LogLevelDesc = "TRACE";

let pluginSourceGateway: PluginOdapGateway;
Expand Down Expand Up @@ -92,6 +94,7 @@ beforeEach(async () => {
ipfsPath: ipfsApiHost,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};
const recipientGatewayConstructor = {
name: "plugin-odap-gateway#recipientGateway",
Expand All @@ -100,6 +103,7 @@ beforeEach(async () => {
ipfsPath: ipfsApiHost,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexServerConnection,
};

pluginSourceGateway = new FabricOdapGateway(sourceGatewayConstructor);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ import { FabricOdapGateway } from "../../../../main/typescript/gateway/fabric-od
import { ClientGatewayHelper } from "../../../../main/typescript/gateway/client/client-helper";
import { ServerGatewayHelper } from "../../../../main/typescript/gateway/server/server-helper";

import { knexClientConnection, knexServerConnection } from "../../knex.config";

const logLevel: LogLevelDesc = "TRACE";

let pluginSourceGateway: PluginOdapGateway;
Expand Down Expand Up @@ -92,13 +94,15 @@ beforeEach(async () => {
ipfsPath: ipfsApiHost,
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};
const recipientGatewayConstructor = {
name: "plugin-odap-gateway#recipientGateway",
dltIDs: ["DLT1"],
instanceId: uuidV4(),
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexServerConnection,
};

pluginSourceGateway = new FabricOdapGateway(sourceGatewayConstructor);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ import { FabricOdapGateway } from "../../../../main/typescript/gateway/fabric-od
import { ClientGatewayHelper } from "../../../../main/typescript/gateway/client/client-helper";
import { ServerGatewayHelper } from "../../../../main/typescript/gateway/server/server-helper";

import { knexClientConnection, knexServerConnection } from "../../knex.config";

const logLevel: LogLevelDesc = "TRACE";

const MAX_RETRIES = 5;
Expand Down Expand Up @@ -104,6 +106,7 @@ beforeEach(async () => {
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};
const recipientGatewayConstructor = {
name: "plugin-odap-gateway#recipientGateway",
Expand All @@ -113,6 +116,7 @@ beforeEach(async () => {
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexServerConnection,
};

pluginSourceGateway = new FabricOdapGateway(sourceGatewayConstructor);
Expand Down Expand Up @@ -201,9 +205,8 @@ test("check valid built of recover update message", async () => {
data: JSON.stringify(sessionData),
};

new Promise((resolve) => setTimeout(resolve, 1000));
const firstTimestamp = Date.now().toString();
new Promise((resolve) => setTimeout(resolve, 1000));
await new Promise((resolve) => setTimeout(resolve, 5000));

await pluginSourceGateway.storeOdapLog(odapLog1);

Expand Down Expand Up @@ -260,6 +263,7 @@ test("check valid built of recover update message", async () => {
throw new Error("Test Failed");
}

console.log(recoverUpdateMessage.recoveredLogs);
expect(recoverUpdateMessage.recoveredLogs.length).toBe(3);

await checkValidRecoverUpdateMessage(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ import { FabricOdapGateway } from "../../../../main/typescript/gateway/fabric-od
import { ClientGatewayHelper } from "../../../../main/typescript/gateway/client/client-helper";
import { ServerGatewayHelper } from "../../../../main/typescript/gateway/server/server-helper";

import { knexClientConnection, knexServerConnection } from "../../knex.config";

const logLevel: LogLevelDesc = "TRACE";

let sourceGatewayConstructor: IPluginOdapGatewayConstructorOptions;
Expand Down Expand Up @@ -94,6 +96,7 @@ beforeAll(async () => {
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexClientConnection,
};
recipientGatewayConstructor = {
name: "plugin-odap-gateway#recipientGateway",
Expand All @@ -103,6 +106,7 @@ beforeAll(async () => {
keyPair: Secp256k1Keys.generateKeyPairsBuffer(),
clientHelper: new ClientGatewayHelper(),
serverHelper: new ServerGatewayHelper(),
knexConfig: knexServerConnection,
};
});

Expand Down

0 comments on commit 70b3391

Please sign in to comment.