Skip to content

Commit

Permalink
chore(core-manager): trigger processes from ark-core or ark-forger (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastijankuzner authored Jul 30, 2020
1 parent 184f500 commit f00e075
Show file tree
Hide file tree
Showing 11 changed files with 71 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import "jest-extended";

import { Action } from "@packages/core-manager/src/actions/info-current-delegate";
import { Identifiers } from "@packages/core-manager/src/ioc";
import * as Utils from "@packages/core-manager/src/utils";
import { Sandbox } from "@packages/core-test-framework";

import { TriggerResponses } from "../__fixtures__";
Expand All @@ -13,6 +14,9 @@ let mockCli;
let mockTrigger;

beforeEach(() => {
jest.spyOn(Utils, "getCoreOrForgerProcessName").mockReturnValue("ark-core");
jest.spyOn(Utils, "getOnlineProcesses").mockReturnValue([]);

mockTrigger = jest.fn().mockReturnValue({
stdout: TriggerResponses.forgetCurrentDelegateResponse,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import "jest-extended";

import { Action } from "@packages/core-manager/src/actions/info-last-forged-block";
import { Identifiers } from "@packages/core-manager/src/ioc";
import * as Utils from "@packages/core-manager/src/utils";
import { Sandbox } from "@packages/core-test-framework";

import { TriggerResponses } from "../__fixtures__";
Expand All @@ -13,6 +14,9 @@ let mockCli;
let mockTrigger;

beforeEach(() => {
jest.spyOn(Utils, "getCoreOrForgerProcessName").mockReturnValue("ark-core");
jest.spyOn(Utils, "getOnlineProcesses").mockReturnValue([]);

mockTrigger = jest.fn().mockReturnValue({
stdout: TriggerResponses.forgetLastForgedBlockResponse,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import "jest-extended";

import { Action } from "@packages/core-manager/src/actions/info-next-forging-slot";
import { Identifiers } from "@packages/core-manager/src/ioc";
import * as Utils from "@packages/core-manager/src/utils";
import { Sandbox } from "@packages/core-test-framework";

import { TriggerResponses } from "../__fixtures__";
Expand All @@ -13,6 +14,9 @@ let mockCli;
let mockTrigger;

beforeEach(() => {
jest.spyOn(Utils, "getCoreOrForgerProcessName").mockReturnValue("ark-core");
jest.spyOn(Utils, "getOnlineProcesses").mockReturnValue([]);

mockTrigger = jest.fn().mockReturnValue({
stdout: TriggerResponses.forgetNextForgingSlotResponse,
});
Expand Down
31 changes: 31 additions & 0 deletions __tests__/unit/core-manager/utils/process.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import "jest-extended";

import { getCoreOrForgerProcessName, getOnlineProcesses } from "@packages/core-manager/src/utils";

let processManager;
const processes = [{ name: "ark-core" }, { name: "ark-forger" }, { name: "ark-relay" }];

beforeEach(() => {
processManager = {
list: jest.fn().mockReturnValue(processes),
isOnline: jest.fn().mockReturnValue(true),
};
});

describe("getOnlineProcesses", () => {
it("should filter online processes", async () => {
expect(getOnlineProcesses(processManager)).toEqual(processes);
});
});

describe("getCoreOrForgerProcessName", () => {
it("should return ark-core", async () => {
expect(getCoreOrForgerProcessName(processes)).toEqual("ark-core");
});

it("should throw error if ark-core or ark-forger is not online process", async () => {
expect(() => {
getCoreOrForgerProcessName([]);
}).toThrowError("Process with name ark-forger or ark-core is not online");
});
});
6 changes: 4 additions & 2 deletions packages/core-manager/src/actions/info-current-delegate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Application, Container } from "@arkecosystem/core-kernel";

import { Actions } from "../contracts";
import { Identifiers } from "../ioc";
import { parseProcessActionResponse } from "../utils";
import { parseProcessActionResponse, getOnlineProcesses, getCoreOrForgerProcessName } from "../utils";

@Container.injectable()
export class Action implements Actions.Action {
Expand All @@ -21,7 +21,9 @@ export class Action implements Actions.Action {

const processManager = cli.get<Services.ProcessManager>(CliContainer.Identifiers.ProcessManager);

const response = processManager.trigger("ark-core", "forger.currentDelegate");
const processName = getCoreOrForgerProcessName(getOnlineProcesses(processManager));

const response = processManager.trigger(processName, "forger.currentDelegate");

const result = parseProcessActionResponse(response);

Expand Down
6 changes: 4 additions & 2 deletions packages/core-manager/src/actions/info-last-forged-block.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Application, Container } from "@arkecosystem/core-kernel";

import { Actions } from "../contracts";
import { Identifiers } from "../ioc";
import { parseProcessActionResponse } from "../utils";
import { getCoreOrForgerProcessName, getOnlineProcesses, parseProcessActionResponse } from "../utils";

@Container.injectable()
export class Action implements Actions.Action {
Expand All @@ -21,7 +21,9 @@ export class Action implements Actions.Action {

const processManager = cli.get<Services.ProcessManager>(CliContainer.Identifiers.ProcessManager);

const response = processManager.trigger("ark-core", "forger.lastForgedBlock");
const processName = getCoreOrForgerProcessName(getOnlineProcesses(processManager));

const response = processManager.trigger(processName, "forger.lastForgedBlock");

const result = parseProcessActionResponse(response);

Expand Down
6 changes: 4 additions & 2 deletions packages/core-manager/src/actions/info-next-forging-slot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Application, Container } from "@arkecosystem/core-kernel";

import { Actions } from "../contracts";
import { Identifiers } from "../ioc";
import { parseProcessActionResponse } from "../utils";
import { getCoreOrForgerProcessName, getOnlineProcesses, parseProcessActionResponse } from "../utils";

@Container.injectable()
export class Action implements Actions.Action {
Expand All @@ -21,7 +21,9 @@ export class Action implements Actions.Action {

const processManager = cli.get<Services.ProcessManager>(CliContainer.Identifiers.ProcessManager);

const response = processManager.trigger("ark-core", "forger.nextSlot");
const processName = getCoreOrForgerProcessName(getOnlineProcesses(processManager));

const response = processManager.trigger(processName, "forger.nextSlot");

const result = parseProcessActionResponse(response);

Expand Down
1 change: 1 addition & 0 deletions packages/core-manager/src/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export * from "./api-connection";
export * from "./http-client";
export * from "./process-actions";
export * from "./process";
15 changes: 15 additions & 0 deletions packages/core-manager/src/utils/process.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { Services } from "@arkecosystem/core-cli";

export const getOnlineProcesses = (processManager: Services.ProcessManager): { name: string }[] => {
return processManager.list().filter((x) => processManager.isOnline(x.name)) as [{ name: string }];
};

export const getCoreOrForgerProcessName = (processes: { name: string }[]) => {
const process = processes.find((x) => x.name === "ark-forger" || x.name === "ark-core");

if (!process) {
throw new Error("Process with name ark-forger or ark-core is not online");
}

return process.name;
};
2 changes: 0 additions & 2 deletions packages/core/src/commands/core-run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,6 @@ export class Command extends Commands.Command {
const flags: Contracts.AnyObject = { ...this.getFlags() };
flags.processType = "core";

// this.actions.abortRunningProcess(`${flags.token}-core`);

await Utils.buildApplication({
flags,
plugins: {
Expand Down
2 changes: 0 additions & 2 deletions packages/core/src/commands/forger-run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@ export class Command extends Commands.Command {
const flags: Contracts.AnyObject = { ...this.getFlags() };
flags.processType = "forger";

this.actions.abortRunningProcess(`${flags.token}-forger`);

await Utils.buildApplication({
flags,
plugins: {
Expand Down

0 comments on commit f00e075

Please sign in to comment.