refactor project to use one singleton for blocks (memory optimization)

This commit is contained in:
Ben Wilson
2023-07-16 16:36:12 -04:00
parent c81b894b4c
commit 57b5b1ed53
8 changed files with 205 additions and 148 deletions
+8 -8
View File
@@ -14,7 +14,6 @@ import { ClientEntity } from '../ORM/client/client.entity';
import { ClientModule } from '../ORM/client/client.module';
import { ClientService } from '../ORM/client/client.service';
import { BitcoinRpcService as MockBitcoinRpcService } from '../services/bitcoin-rpc.service';
import { BlockTemplateService } from '../services/block-template.service';
import { NotificationService } from '../services/notification.service';
import { StratumV1JobsService } from '../services/stratum-v1-jobs.service';
import { IMiningInfo } from './bitcoin-rpc/IMiningInfo';
@@ -37,9 +36,9 @@ describe('StratumV1Client', () => {
let promiseSocket: PromiseSocket<any>;
let stratumV1JobsService: StratumV1JobsService = new StratumV1JobsService();
let stratumV1JobsService: StratumV1JobsService;
let bitcoinRpcService: MockBitcoinRpcService;
let blockTemplateService: BlockTemplateService;
let clientService: ClientService;
let clientStatisticsService: ClientStatisticsService;
let notificationService: NotificationService;
@@ -92,7 +91,7 @@ describe('StratumV1Client', () => {
beforeEach(async () => {
console.log('NEW TEST')
clientService = moduleRef.get<ClientService>(ClientService);
@@ -107,12 +106,11 @@ describe('StratumV1Client', () => {
configService = moduleRef.get<ConfigService>(ConfigService);
bitcoinRpcService = new MockBitcoinRpcService(null);
jest.spyOn(bitcoinRpcService, 'getBlockTemplate').mockReturnValue(Promise.resolve(MockRecording1.BLOCK_TEMPLATE));
bitcoinRpcService.newBlock$ = newBlockEmitter.asObservable();
blockTemplateService = new BlockTemplateService(bitcoinRpcService);
stratumV1JobsService = new StratumV1JobsService(bitcoinRpcService);
promiseSocket = new PromiseSocket();
jest.spyOn(promiseSocket.socket, 'on').mockImplementation((event: string, fn: (data: Buffer) => void) => {
@@ -125,7 +123,6 @@ describe('StratumV1Client', () => {
client = new StratumV1Client(
promiseSocket,
stratumV1JobsService,
blockTemplateService,
bitcoinRpcService,
clientService,
clientStatisticsService,
@@ -245,7 +242,7 @@ describe('StratumV1Client', () => {
expect(promiseSocket.write).lastCalledWith(`{"id":null,"method":"mining.notify","params":["3","171592f223740e92d223f6e68bff25279af7ac4f2246451e0000000200000000","02000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1903c943255c7075626c69632d706f6f6c5c","ffffffff037a90000000000000160014e6f22ca44dc800e9d049621a3b9a42c509f1c4bc3b0f250000000000160014e6f22ca44dc800e9d049621a3b9a42c509f1c4bc0000000000000000266a24aa21a9edbd3d1d916aa0b57326a2d88ebe1b68a1d7c48585f26d8335fe6a94b62755f64c00000000",["175335649d5e8746982969ec88f52e85ac9917106fba5468e699c8879ab974a1","d5644ab3e708c54cd68dc5aedc92b8d3037449687f92ec41ed6e37673d969d4a","5c9ec187517edc0698556cca5ce27e54c96acb014770599ed9df4d4937fbf2b0"],"20000000","192495f8","${MockRecording1.TIME}",false]}\n`);
expect(promiseSocket.write).lastCalledWith(`{"id":null,"method":"mining.notify","params":["1","171592f223740e92d223f6e68bff25279af7ac4f2246451e0000000200000000","02000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1903c943255c7075626c69632d706f6f6c5c","ffffffff037a90000000000000160014e6f22ca44dc800e9d049621a3b9a42c509f1c4bc3b0f250000000000160014e6f22ca44dc800e9d049621a3b9a42c509f1c4bc0000000000000000266a24aa21a9edbd3d1d916aa0b57326a2d88ebe1b68a1d7c48585f26d8335fe6a94b62755f64c00000000",["175335649d5e8746982969ec88f52e85ac9917106fba5468e699c8879ab974a1","d5644ab3e708c54cd68dc5aedc92b8d3037449687f92ec41ed6e37673d969d4a","5c9ec187517edc0698556cca5ce27e54c96acb014770599ed9df4d4937fbf2b0"],"20000000","192495f8","${MockRecording1.TIME}",false]}\n`);
socketEmitter(Buffer.from(MockRecording1.MINING_SUBMIT));
@@ -253,8 +250,11 @@ describe('StratumV1Client', () => {
jest.useRealTimers();
await new Promise((r) => setTimeout(r, 100));
expect(promiseSocket.write).lastCalledWith(`{\"id\":5,\"error\":null,\"result\":true}\n`);
});
});