Skip to content

Commit

Permalink
Stop functionality added to running validator (#142)
Browse files Browse the repository at this point in the history
* stop functionality added to running validator

* linting error fixed by remove unnecessary indentation

* stop button moved from the bottom to top

* lint fixed

Co-authored-by: Samman Adhikari <sammanadh@pop-os.localdomain>
  • Loading branch information
sammanadh and Samman Adhikari committed Jun 22, 2022
1 parent 2f3f6de commit 171342b
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 5 deletions.
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,8 @@
},
"[typescriptreact]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"[typescript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
}
}
5 changes: 4 additions & 1 deletion src/main/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import log from 'electron-log';
import MenuBuilder from './menu';
import { resolveHtmlPath } from './util';
import { logger, initLogging } from './logger';
import { runValidator, validatorLogs } from './validator';
import { runValidator, stopValidator, validatorLogs } from './validator';
import { initConfigPromises } from './ipc/config';
import { initAccountPromises } from './ipc/accounts';
import fetchAnchorIdl from './anchor';
Expand Down Expand Up @@ -43,6 +43,9 @@ ipcMain.on(
case 'run-validator':
await runValidator();
break;
case 'stop-validator':
await stopValidator();
break;
case 'validator-logs':
res = await validatorLogs(msg);
break;
Expand Down
3 changes: 3 additions & 0 deletions src/main/preload.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ contextBridge.exposeInMainWorld('electron', {
runValidator() {
send('run-validator', {});
},
stopValidator() {
send('stop-validator', {});
},
validatorState(msg) {
send('validator-state', msg);
},
Expand Down
24 changes: 23 additions & 1 deletion src/main/validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,28 @@ const runValidator = async () => {
await execAsync(`${DOCKER_PATH} start solana-test-validator`);
};

const stopValidator = async () => {
try {
const { stdout } = await execAsync(
`${DOCKER_PATH} inspect solana-test-validator`
);
const inspectOutput = JSON.parse(stdout)[0];
const running = inspectOutput.State.Running;
if (running) {
// eslint-disable-next-line no-console
console.log(
await execAsync(`${DOCKER_PATH} logs --tail 100 solana-test-validator`)
);
logger.error('Stoping solana-test-validator...');
// eslint-disable-next-line no-console
console.log(await execAsync(`${DOCKER_PATH} stop solana-test-validator`));
throw new Error('Container stopped.');
}
} catch (err) {
logger.error(err);
}
};

const validatorLogs = async (msg: ValidatorLogsRequest) => {
const { filter, net } = msg;
const MAX_TAIL_LINES = 10000;
Expand Down Expand Up @@ -111,4 +133,4 @@ const validatorLogs = async (msg: ValidatorLogsRequest) => {
return '';
};

export { runValidator, validatorLogs };
export { runValidator, stopValidator, validatorLogs };
15 changes: 12 additions & 3 deletions src/renderer/nav/Validator.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,15 @@ const Validator = () => {
</div>
) : (
<>
<Button
onClick={() => {
window.electron.ipcRenderer.stopValidator();
}}
className="mt-2 mb-4"
variant="dark"
>
Stop
</Button>
<InputGroup size="sm">
<FormControl
ref={filterRef}
Expand All @@ -86,11 +95,11 @@ const Validator = () => {
}, 300)}
/>
</InputGroup>
<pre className="mt-2 pre-scrollable">
<code>{validatorLogs}</code>
</pre>
</>
)}
<pre className="mt-2 pre-scrollable">
<code>{validatorLogs}</code>
</pre>
</div>
);
};
Expand Down

0 comments on commit 171342b

Please sign in to comment.