Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitpod.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM blockstack/stacks-blockchain:2.05.0.0.0-stretch as corenode
FROM blockstack/stacks-blockchain:2.05.0.3.0-stretch as corenode

FROM gitpod/workspace-postgres

Expand Down
2 changes: 1 addition & 1 deletion docker/stx-rosetta.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ARG STACKS_API_VERSION=v0.71.2
ARG STACKS_NODE_VERSION=2.05.0.0.0
ARG STACKS_NODE_VERSION=2.05.0.3.0
ARG STACKS_API_REPO=blockstack/stacks-blockchain-api
ARG STACKS_NODE_REPO=blockstack/stacks-blockchain
ARG PG_VERSION=12
Expand Down
5 changes: 1 addition & 4 deletions src/tests-bns/setup.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import { loadDotEnv } from '../helpers';
import { StacksCoreRpcClient } from '../core-rpc/client';

// ts-unused-exports:disable-next-line
export default async (): Promise<void> => {
export default (): void => {
console.log('Jest - setup..');
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = 'test';
}
loadDotEnv();
console.log('Waiting for RPC connection to core node..');
await new StacksCoreRpcClient().waitForConnection(60000);
console.log('Jest - setup done');
};
14 changes: 1 addition & 13 deletions src/tests-rosetta-cli-construction/setup.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,11 @@
import { loadDotEnv } from '../helpers';
import { StacksCoreRpcClient } from '../core-rpc/client';
import { PgWriteStore } from '../datastore/pg-write-store';

export interface GlobalServices {
db: PgWriteStore;
}
// ts-unused-exports:disable-next-line
export default async (): Promise<void> => {
export default (): void => {
console.log('Jest - setup..');
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = 'test';
}
loadDotEnv();
const db = await PgWriteStore.connect({ skipMigrations: true, usageName: 'tests' });
console.log('Waiting for RPC connection to core node..');
await new StacksCoreRpcClient().waitForConnection(60000);
const globalServices: GlobalServices = {
db: db,
};
Object.assign(global, globalServices);
console.log('Jest - setup done');
};
5 changes: 1 addition & 4 deletions src/tests-rosetta-cli-construction/teardown.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
import type { GlobalServices } from './setup';
// ts-unused-exports:disable-next-line
export default async (): Promise<void> => {
export default (): void => {
console.log('Jest - teardown..');
const globalServices = (global as unknown) as GlobalServices;
await globalServices.db.close();
console.log('Jest - teardown done');
};
14 changes: 1 addition & 13 deletions src/tests-rosetta-cli-data/setup.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,11 @@
import { loadDotEnv } from '../helpers';
import { StacksCoreRpcClient } from '../core-rpc/client';
import { PgWriteStore } from '../datastore/pg-write-store';

export interface GlobalServices {
db: PgWriteStore;
}
// ts-unused-exports:disable-next-line
export default async (): Promise<void> => {
export default (): void => {
console.log('Jest - setup..');
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = 'test';
}
loadDotEnv();
const db = await PgWriteStore.connect({ skipMigrations: true, usageName: 'tests' });
console.log('Waiting for RPC connection to core node..');
await new StacksCoreRpcClient().waitForConnection(60000);
const globalServices: GlobalServices = {
db: db,
};
Object.assign(global, globalServices);
console.log('Jest - setup done');
};
5 changes: 1 addition & 4 deletions src/tests-rosetta-cli-data/teardown.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
import type { GlobalServices } from './setup';
// ts-unused-exports:disable-next-line
export default async (): Promise<void> => {
export default (): void => {
console.log('Jest - teardown..');
const globalServices = (global as unknown) as GlobalServices;
await globalServices.db.close();
console.log('Jest - teardown done');
};
25 changes: 25 additions & 0 deletions src/tests-rosetta/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import { PgWriteStore } from '../datastore/pg-write-store';
import { cycleMigrations, runMigrations } from '../datastore/migrations';
import { PgSqlClient } from '../datastore/connection';
import { bufferToHexPrefixString } from '../helpers';
import * as nock from 'nock';

describe('Rosetta API', () => {
let db: PgWriteStore;
Expand Down Expand Up @@ -129,6 +130,30 @@ describe('Rosetta API', () => {

const block = blockData.block, genesisBlock = genesisData.block;

nock('http://127.0.0.1:20443')
.get('/v2/neighbors')
.reply(200, {
sample: [],
inbound: [],
outbound: []
});
nock('http://127.0.0.1:20443')
.get('/v2/info')
.reply(200, {
burn_block_height: block.burn_block_height,
burn_consensus: block.burn_block_hash,
exit_at_block_height: null,
network_id: 1,
parent_network_id: 1,
peer_version: 1,
server_version: 1,
stable_burn_block_height: block.burn_block_height,
stable_burn_consensus: block.burn_block_hash,
stacks_tip: block.block_hash,
stacks_tip_burn_block: block.burn_block_height,
stacks_tip_height: block.block_height,
unanchored_tip: ''
});
Comment on lines +133 to +156
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This and a few other test fixes look familiar -- similar changes were required in the stacks-2.1 branch:

It looks like some of the issues were caused by the bump from only stacks-blockchain:2.05.0.0.0 (as opposed to stacks-blockchain:next / 2.1).

In the API's stacks-2.1 branch, a larger refactor was done to fix these. Stubbing out these responses could potentially hide bugs if the stacks-node behavior diverges from these stubbed behaviors. However, we can probably address that later once we have to merge the stacks-2.1 branch. In the meantime, seems okay to merge.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the note, I'll keep that in mind.

I did this mock only to skip the stacks node dependency on this test. Integration tests were already done in construction.ts so and adding a new event server here created problems given that the stacks node block height did not restart at 1 (it stayed at the previous height created by other tests).

const query1 = await supertest(api.address)
.post(`/rosetta/v1/network/status`)
.send({ network_identifier: { blockchain: 'stacks', network: 'testnet' } });
Expand Down
5 changes: 1 addition & 4 deletions src/tests-rosetta/setup.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import { loadDotEnv } from '../helpers';
import { StacksCoreRpcClient } from '../core-rpc/client';

// ts-unused-exports:disable-next-line
export default async (): Promise<void> => {
export default (): void => {
console.log('Jest - setup..');
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = 'test';
}
loadDotEnv();
console.log('Waiting for RPC connection to core node..');
await new StacksCoreRpcClient().waitForConnection(60000);
console.log('Jest - setup done');
};
20 changes: 20 additions & 0 deletions src/tests/core-rpc-tests.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
import { Server } from 'net';
import { PgWriteStore } from '../datastore/pg-write-store';
import { startEventServer } from '../event-stream/event-server';
import { StacksCoreRpcClient } from '../core-rpc/client';
import { ChainID } from '@stacks/transactions';

describe('core RPC tests', () => {
let client: StacksCoreRpcClient;
let db: PgWriteStore;
let eventServer: Server;

beforeAll(async () => {
db = await PgWriteStore.connect({ usageName: 'tests' });
eventServer = await startEventServer({
datastore: db,
chainId: ChainID.Testnet,
httpLogLevel: 'silly',
});
});

beforeEach(() => {
client = new StacksCoreRpcClient();
Expand Down Expand Up @@ -34,4 +49,9 @@ describe('core RPC tests', () => {
const fee = await client.getEstimatedTransferFee();
expect(fee).toBeTruthy();
});

afterAll(async () => {
eventServer.close();
await db.close();
});
});
5 changes: 1 addition & 4 deletions src/tests/setup.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import { loadDotEnv } from '../helpers';
import { StacksCoreRpcClient } from '../core-rpc/client';

// ts-unused-exports:disable-next-line
export default async (): Promise<void> => {
export default (): void => {
console.log('Jest - setup..');
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = 'test';
}
loadDotEnv();
process.env.PG_DATABASE = 'postgres';
console.log('Waiting for RPC connection to core node..');
await new StacksCoreRpcClient().waitForConnection(60000);
console.log('Jest - setup done');
};
2 changes: 1 addition & 1 deletion stacks-blockchain/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM blockstack/stacks-blockchain:2.05.0.0.0-stretch as build
FROM blockstack/stacks-blockchain:2.05.0.3.0-stretch as build

FROM debian:stretch

Expand Down