From de5d4acbe53cec6136e47b355cce8052becdc22d Mon Sep 17 00:00:00 2001 From: bearni95 Date: Mon, 12 Apr 2021 13:05:55 +0200 Subject: [PATCH 01/10] fix: small change --- src/subscribe/api.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/subscribe/api.js b/src/subscribe/api.js index 394a0cae8..6e08e961e 100644 --- a/src/subscribe/api.js +++ b/src/subscribe/api.js @@ -113,8 +113,7 @@ function createResendRequest(resendOptions) { request = new ResendFromRequest({ ...commonOpts, fromMsgRef: new MessageRef(from.timestamp, from.sequenceNumber), - publisherId, - msgChainId, + publisherId }) } else if (from && to) { request = new ResendRangeRequest({ From 4787562faeb23e94000b8d4a7f752ff161ab29f4 Mon Sep 17 00:00:00 2001 From: bearni95 Date: Mon, 12 Apr 2021 13:05:55 +0200 Subject: [PATCH 02/10] fix: small change --- src/subscribe/api.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/subscribe/api.js b/src/subscribe/api.js index 394a0cae8..6e08e961e 100644 --- a/src/subscribe/api.js +++ b/src/subscribe/api.js @@ -113,8 +113,7 @@ function createResendRequest(resendOptions) { request = new ResendFromRequest({ ...commonOpts, fromMsgRef: new MessageRef(from.timestamp, from.sequenceNumber), - publisherId, - msgChainId, + publisherId }) } else if (from && to) { request = new ResendRangeRequest({ From 47149ba6be5d61a2dcd8e76c3ef99c37400228ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 May 2021 11:21:22 +0000 Subject: [PATCH 03/10] build(deps): bump hosted-git-info from 2.8.8 to 2.8.9 Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9) Signed-off-by: dependabot[bot] --- package-lock.json | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6e13c31f6..0aa6d1826 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7844,10 +7844,13 @@ } }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "html-encoding-sniffer": { "version": "2.0.1", @@ -10638,15 +10641,6 @@ "yargs-parser": "^20.2.3" }, "dependencies": { - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "normalize-package-data": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", @@ -11427,6 +11421,14 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + } } }, "normalize-path": { From 51698f48d452078b2533df002fd7837ca7c0e524 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 May 2021 10:50:50 +0000 Subject: [PATCH 04/10] build(deps): bump lodash from 4.17.19 to 4.17.21 in /examples/webpack Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.21) Signed-off-by: dependabot[bot] --- examples/webpack/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/webpack/package-lock.json b/examples/webpack/package-lock.json index e25882526..c67620197 100644 --- a/examples/webpack/package-lock.json +++ b/examples/webpack/package-lock.json @@ -3686,9 +3686,9 @@ } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.uniqueid": { From b3ae750c88aedb5ac0728072d817a075d4c63516 Mon Sep 17 00:00:00 2001 From: Eric Andrews Date: Fri, 30 Apr 2021 11:05:11 +0300 Subject: [PATCH 05/10] test: support for STREAMR_DOCKER_DEV_HOST env var --- test/integration/config.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/integration/config.js b/test/integration/config.js index 2976d262c..6ca6bf08a 100644 --- a/test/integration/config.js +++ b/test/integration/config.js @@ -8,8 +8,8 @@ module.exports = { auth: { privateKey: process.env.ETHEREUM_PRIVATE_KEY || '0xe5af7834455b7239881b85be89d905d6881dcb4751063897f12be1b0dd546bdb', }, - url: process.env.WEBSOCKET_URL || 'ws://localhost/api/v1/ws', - restUrl: process.env.REST_URL || 'http://localhost/api/v1', + url: process.env.WEBSOCKET_URL || `ws://${process.env.STREAMR_DOCKER_DEV_HOST || localhost}/api/v1/ws`, + restUrl: process.env.REST_URL || `http://${process.env.STREAMR_DOCKER_DEV_HOST || localhost}/api/v1`, streamrNodeAddress: '0xFCAd0B19bB29D4674531d6f115237E16AfCE377c', tokenAddress: process.env.TOKEN_ADDRESS || '0xbAA81A0179015bE47Ad439566374F2Bae098686F', tokenSidechainAddress: process.env.TOKEN_ADDRESS_SIDECHAIN || '0x73Be21733CC5D08e1a14Ea9a399fb27DB3BEf8fF', @@ -22,14 +22,14 @@ module.exports = { storageNode: { // "broker-node-storage-1" on Docker environment address: '0xde1112f631486CfC759A50196853011528bC5FA0', - url: 'http://10.200.10.1:8891' + url: `http://${process.env.STREAMR_DOCKER_DEV_HOST || 10.200.10.1}:8891` }, sidechain: { - url: process.env.SIDECHAIN_URL || 'http://10.200.10.1:8546', + url: process.env.SIDECHAIN_URL || `http://${process.env.STREAMR_DOCKER_DEV_HOST || 10.200.10.1}:8546`, timeout: toNumber(process.env.TEST_TIMEOUT), }, mainnet: { - url: process.env.ETHEREUM_SERVER_URL || 'http://10.200.10.1:8545', + url: process.env.ETHEREUM_SERVER_URL || `http://${process.env.STREAMR_DOCKER_DEV_HOST || 10.200.10.1}:8545`, timeout: toNumber(process.env.TEST_TIMEOUT), }, autoConnect: false, From ded10e97722c02998fe2d0c245aa9143a0820be0 Mon Sep 17 00:00:00 2001 From: Eric Andrews Date: Mon, 3 May 2021 11:06:41 +0300 Subject: [PATCH 06/10] test: fix quotes --- test/integration/config.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/integration/config.js b/test/integration/config.js index 6ca6bf08a..013a61877 100644 --- a/test/integration/config.js +++ b/test/integration/config.js @@ -8,8 +8,8 @@ module.exports = { auth: { privateKey: process.env.ETHEREUM_PRIVATE_KEY || '0xe5af7834455b7239881b85be89d905d6881dcb4751063897f12be1b0dd546bdb', }, - url: process.env.WEBSOCKET_URL || `ws://${process.env.STREAMR_DOCKER_DEV_HOST || localhost}/api/v1/ws`, - restUrl: process.env.REST_URL || `http://${process.env.STREAMR_DOCKER_DEV_HOST || localhost}/api/v1`, + url: process.env.WEBSOCKET_URL || `ws://${process.env.STREAMR_DOCKER_DEV_HOST || 'localhost'}/api/v1/ws`, + restUrl: process.env.REST_URL || `http://${process.env.STREAMR_DOCKER_DEV_HOST || 'localhost'}/api/v1`, streamrNodeAddress: '0xFCAd0B19bB29D4674531d6f115237E16AfCE377c', tokenAddress: process.env.TOKEN_ADDRESS || '0xbAA81A0179015bE47Ad439566374F2Bae098686F', tokenSidechainAddress: process.env.TOKEN_ADDRESS_SIDECHAIN || '0x73Be21733CC5D08e1a14Ea9a399fb27DB3BEf8fF', @@ -22,14 +22,14 @@ module.exports = { storageNode: { // "broker-node-storage-1" on Docker environment address: '0xde1112f631486CfC759A50196853011528bC5FA0', - url: `http://${process.env.STREAMR_DOCKER_DEV_HOST || 10.200.10.1}:8891` + url: `http://${process.env.STREAMR_DOCKER_DEV_HOST || '10.200.10.1'}:8891` }, sidechain: { - url: process.env.SIDECHAIN_URL || `http://${process.env.STREAMR_DOCKER_DEV_HOST || 10.200.10.1}:8546`, + url: process.env.SIDECHAIN_URL || `http://${process.env.STREAMR_DOCKER_DEV_HOST || '10.200.10.1'}:8546`, timeout: toNumber(process.env.TEST_TIMEOUT), }, mainnet: { - url: process.env.ETHEREUM_SERVER_URL || `http://${process.env.STREAMR_DOCKER_DEV_HOST || 10.200.10.1}:8545`, + url: process.env.ETHEREUM_SERVER_URL || `http://${process.env.STREAMR_DOCKER_DEV_HOST || '10.200.10.1'}:8545`, timeout: toNumber(process.env.TEST_TIMEOUT), }, autoConnect: false, From e5841a80ca15321f6720af8bd52dc7ab00972dc0 Mon Sep 17 00:00:00 2001 From: Teo Gebhard Date: Mon, 10 May 2021 20:41:06 +0300 Subject: [PATCH 07/10] NET-286: Storage node constants (#254) Added constants StorageNode.STREAMR_GERMANY and StorageNode.STREAMR_DOCKER_DEV. The values are instances of StorageNode class. The parameter of addToStorageNode, removeFromStorageNode and getStreamPartsByStorageNode can now be a StorageNode instance or a string. --- README.md | 4 ++++ src/Config.ts | 3 ++- src/rest/StreamEndpoints.ts | 4 +++- src/stream/StorageNode.ts | 3 +++ src/stream/index.ts | 7 +++++-- test/integration/Encryption.test.js | 3 ++- test/integration/GapFill.test.ts | 3 ++- test/integration/MultipleClients.test.js | 3 ++- test/integration/ResendReconnect.test.ts | 3 ++- test/integration/Resends.test.ts | 5 +++-- test/integration/Stream.test.ts | 3 ++- test/integration/StreamConnectionState.test.ts | 3 ++- test/integration/StreamEndpoints.test.ts | 17 +++++++++-------- test/integration/StreamrClient.test.ts | 3 ++- test/integration/StreamrClientResends.test.ts | 3 ++- test/integration/Subscriber.test.js | 3 ++- test/integration/SubscriberResends.test.ts | 9 +++++---- .../SubscriberResendsSequential.test.ts | 3 ++- test/integration/Subscription.test.ts | 3 ++- test/integration/config.js | 5 +++-- 20 files changed, 59 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 6ea63d4ca..05bbe5463 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,10 @@ const stream = await client.getOrCreateStream({ name: 'My awesome stream created via the API', }) console.log(`Stream ${stream.id} has been created!`) + +// Optional: to enable historical data resends, add the stream to a storage node +await stream.addToStorageNode(StorageNode.STREAMR_GERMANY) + // Do something with the stream, for example call stream.publish(message) ``` diff --git a/src/Config.ts b/src/Config.ts index 6d48b1430..1708c0216 100644 --- a/src/Config.ts +++ b/src/Config.ts @@ -13,6 +13,7 @@ import { BytesLike } from '@ethersproject/bytes' import { isAddress } from '@ethersproject/address' import has from 'lodash/has' import get from 'lodash/get' +import { StorageNode } from './stream/StorageNode' export type EthereumConfig = ExternalProvider|JsonRpcFetchFunc @@ -144,7 +145,7 @@ export const STREAM_CLIENT_DEFAULTS: StrictStreamrClientOptions = { templateSidechainAddress: '0xf1E9d6E254BeA3f0129018AcA1A50AEcb7D528be', }, storageNode: { - address: '0x31546eEA76F2B2b3C5cC06B1c93601dc35c9D916', + address: StorageNode.STREAMR_GERMANY.getAddress(), url: 'https://corea1.streamr.network:8001' }, cache: { diff --git a/src/rest/StreamEndpoints.ts b/src/rest/StreamEndpoints.ts index 6233fe3a8..ca237af00 100644 --- a/src/rest/StreamEndpoints.ts +++ b/src/rest/StreamEndpoints.ts @@ -15,6 +15,7 @@ import { EthereumAddress } from '../types' import { StreamrClient } from '../StreamrClient' // TODO change this import when streamr-client-protocol exports StreamMessage type or the enums types directly import { ContentType, EncryptionType, SignatureType, StreamMessageType } from 'streamr-client-protocol/dist/src/protocol/message_layer/StreamMessage' +import { StorageNode } from '../stream/StorageNode' const debug = debugFactory('StreamrClient') @@ -255,7 +256,8 @@ export class StreamEndpoints { return json } - async getStreamPartsByStorageNode(address: EthereumAddress) { + async getStreamPartsByStorageNode(node: StorageNode|EthereumAddress) { + const address = (node instanceof StorageNode) ? node.getAddress() : node type ItemType = { id: string, partitions: number} const json = await authFetch(getEndpointUrl(this.client.options.restUrl, 'storageNodes', address, 'streams'), this.client.session) let result: StreamPart[] = [] diff --git a/src/stream/StorageNode.ts b/src/stream/StorageNode.ts index f16b938f0..51ddacff4 100644 --- a/src/stream/StorageNode.ts +++ b/src/stream/StorageNode.ts @@ -2,6 +2,9 @@ import { EthereumAddress } from '../types' export class StorageNode { + static STREAMR_GERMANY = new StorageNode('0x31546eEA76F2B2b3C5cC06B1c93601dc35c9D916') + static STREAMR_DOCKER_DEV = new StorageNode('0xde1112f631486CfC759A50196853011528bC5FA0') + private _address: EthereumAddress constructor(address: EthereumAddress) { diff --git a/src/stream/index.ts b/src/stream/index.ts index 1ca1d5d2e..397b5dda2 100644 --- a/src/stream/index.ts +++ b/src/stream/index.ts @@ -5,6 +5,7 @@ import authFetch from '../rest/authFetch' import { StorageNode } from './StorageNode' import { StreamrClient } from '../StreamrClient' +import { EthereumAddress } from '../types' // TODO explicit types: e.g. we never provide both streamId and id, or both streamPartition and partition export type StreamPartDefinitionOptions = { streamId?: string, streamPartition?: number, id?: string, partition?: number, stream?: Stream|string } @@ -223,7 +224,8 @@ export class Stream { await this.update() } - async addToStorageNode(address: string, { timeout = 30000 }: { timeout: number } = { timeout: 30000 }) { + async addToStorageNode(node: StorageNode|EthereumAddress, { timeout = 30000 }: { timeout: number } = { timeout: 30000 }) { + const address = (node instanceof StorageNode) ? node.getAddress() : node // currently we support only one storage node // -> we can validate that the given address is that address // -> remove this comparison when we start to support multiple storage nodes @@ -258,7 +260,8 @@ export class Stream { throw new Error(`Unexpected response code ${response.status} when fetching stream storage status`) } - async removeFromStorageNode(address: string) { + async removeFromStorageNode(node: StorageNode|EthereumAddress) { + const address = (node instanceof StorageNode) ? node.getAddress() : node await authFetch( getEndpointUrl(this._client.options.restUrl, 'streams', this.id, 'storageNodes', address), this._client.session, diff --git a/test/integration/Encryption.test.js b/test/integration/Encryption.test.js index b0f741ccf..b98c106ad 100644 --- a/test/integration/Encryption.test.js +++ b/test/integration/Encryption.test.js @@ -6,6 +6,7 @@ import { Defer } from '../../src/utils' import { StreamrClient } from '../../src/StreamrClient' import { GroupKey } from '../../src/stream/Encryption' import Connection from '../../src/Connection' +import { StorageNode } from '../../src/stream/StorageNode' import config from './config' @@ -107,7 +108,7 @@ describe('decryption', () => { requireEncryptedData: true, }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) publishTestMessages = getPublishTestMessages(client, { stream diff --git a/test/integration/GapFill.test.ts b/test/integration/GapFill.test.ts index b4c8e31d4..da57a5d87 100644 --- a/test/integration/GapFill.test.ts +++ b/test/integration/GapFill.test.ts @@ -9,6 +9,7 @@ import { Stream } from '../../src/stream' import { Subscriber, Subscription } from '../../src/subscribe' import { MessageRef } from 'streamr-client-protocol/dist/src/protocol/message_layer' import { StreamrClientOptions } from '../../src' +import { StorageNode } from '../../src/stream/StorageNode' const MAX_MESSAGES = 10 @@ -47,7 +48,7 @@ describeRepeats('GapFill with resends', () => { requireSignedData: true, name: uid('stream') }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) client.debug('connecting before test <<') publishTestMessages = getPublishTestMessages(client, stream.id) diff --git a/test/integration/MultipleClients.test.js b/test/integration/MultipleClients.test.js index 0b111fe39..101f0f5b6 100644 --- a/test/integration/MultipleClients.test.js +++ b/test/integration/MultipleClients.test.js @@ -5,6 +5,7 @@ import { describeRepeats, uid, fakePrivateKey, getWaitForStorage, getPublishTest import { StreamrClient } from '../../src/StreamrClient' import { counterId, Defer, pLimitFn } from '../../src/utils' import Connection from '../../src/Connection' +import { StorageNode } from '../../src/stream/StorageNode' import config from './config' @@ -51,7 +52,7 @@ describeRepeats('PubSub with multiple clients', () => { stream = await mainClient.createStream({ name: uid('stream') }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) }) afterEach(async () => { diff --git a/test/integration/ResendReconnect.test.ts b/test/integration/ResendReconnect.test.ts index a3efd3700..3619da6c0 100644 --- a/test/integration/ResendReconnect.test.ts +++ b/test/integration/ResendReconnect.test.ts @@ -8,6 +8,7 @@ import config from './config' import { Stream } from '../../src/stream' import { Subscription } from '../../src' import { PublishRequest } from 'streamr-client-protocol/dist/src/protocol/control_layer' +import { StorageNode } from '../../src/stream/StorageNode' const createClient = (opts = {}) => new StreamrClient({ ...config.clientOptions, @@ -35,7 +36,7 @@ describe('resend/reconnect', () => { name: uid('resends') }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) }, 10000) beforeEach(async () => { diff --git a/test/integration/Resends.test.ts b/test/integration/Resends.test.ts index e55d58636..7cd71d3b7 100644 --- a/test/integration/Resends.test.ts +++ b/test/integration/Resends.test.ts @@ -7,6 +7,7 @@ import Connection from '../../src/Connection' import config from './config' import { Stream } from '../../src/stream' +import { StorageNode } from '../../src/stream/StorageNode' const MAX_MESSAGES = 10 const WAIT_FOR_STORAGE_TIMEOUT = 6000 @@ -76,7 +77,7 @@ describe('StreamrClient resends', () => { name: uid('resends') }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) }) beforeEach(async () => { @@ -337,7 +338,7 @@ describe('StreamrClient resends', () => { name: uid('resends') }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) publishTestMessages = getPublishTestMessages(client, { stream diff --git a/test/integration/Stream.test.ts b/test/integration/Stream.test.ts index 05daf5c6a..e4ee94909 100644 --- a/test/integration/Stream.test.ts +++ b/test/integration/Stream.test.ts @@ -1,6 +1,7 @@ import { StreamrClient } from '../../src/StreamrClient' import { Stream } from '../../src/stream' import { uid, fakePrivateKey, getPublishTestMessages } from '../utils' +import { StorageNode } from '../../src/stream/StorageNode' import config from './config' @@ -25,7 +26,7 @@ describe('Stream', () => { stream = await client.createStream({ name: uid('stream-integration-test') }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) }) afterEach(async () => { diff --git a/test/integration/StreamConnectionState.test.ts b/test/integration/StreamConnectionState.test.ts index 9d57553d7..265bf2013 100644 --- a/test/integration/StreamConnectionState.test.ts +++ b/test/integration/StreamConnectionState.test.ts @@ -9,6 +9,7 @@ import config from './config' import { Stream } from '../../src/stream' import { Subscriber, Subscription } from '../../src/subscribe' import { StreamrClientOptions } from '../../src' +import { StorageNode } from '../../src/stream/StorageNode' const MAX_MESSAGES = 5 @@ -50,7 +51,7 @@ describeRepeats('Connection State', () => { requireSignedData: true, name: uid('stream') }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) client.debug('connecting before test <<') publishTestMessages = getPublishTestMessages(client, stream.id) diff --git a/test/integration/StreamEndpoints.test.ts b/test/integration/StreamEndpoints.test.ts index eb9fda535..892526b98 100644 --- a/test/integration/StreamEndpoints.test.ts +++ b/test/integration/StreamEndpoints.test.ts @@ -1,6 +1,7 @@ import { ethers, Wallet } from 'ethers' import { NotFoundError, ValidationError } from '../../src/rest/authFetch' import { Stream, StreamOperation } from '../../src/stream' +import { StorageNode } from '../../src/stream/StorageNode' import { StreamrClient } from '../../src/StreamrClient' import { uid } from '../utils' @@ -231,26 +232,26 @@ function TestStreamEndpoints(getName: () => string) { describe('Storage node assignment', () => { it('add', async () => { - const storageNodeAddress = client.options.storageNode.address + const storageNode = StorageNode.STREAMR_DOCKER_DEV const stream = await client.createStream() - await stream.addToStorageNode(storageNodeAddress) + await stream.addToStorageNode(storageNode) const storageNodes = await stream.getStorageNodes() expect(storageNodes.length).toBe(1) - expect(storageNodes[0].getAddress()).toBe(storageNodeAddress) - const storedStreamParts = await client.getStreamPartsByStorageNode(storageNodeAddress) + expect(storageNodes[0].getAddress()).toBe(storageNode.getAddress()) + const storedStreamParts = await client.getStreamPartsByStorageNode(storageNode) expect(storedStreamParts.some( (sp) => (sp.getStreamId() === stream.id) && (sp.getStreamPartition() === 0) )).toBeTruthy() }) it('remove', async () => { - const storageNodeAddress = client.options.storageNode.address + const storageNode = StorageNode.STREAMR_DOCKER_DEV const stream = await client.createStream() - await stream.addToStorageNode(storageNodeAddress) - await stream.removeFromStorageNode(storageNodeAddress) + await stream.addToStorageNode(storageNode) + await stream.removeFromStorageNode(storageNode) const storageNodes = await stream.getStorageNodes() expect(storageNodes).toHaveLength(0) - const storedStreamParts = await client.getStreamPartsByStorageNode(storageNodeAddress) + const storedStreamParts = await client.getStreamPartsByStorageNode(storageNode) expect(storedStreamParts.some( (sp) => (sp.getStreamId() === stream.id) )).toBeFalsy() diff --git a/test/integration/StreamrClient.test.ts b/test/integration/StreamrClient.test.ts index 6d3542975..8e44d43b6 100644 --- a/test/integration/StreamrClient.test.ts +++ b/test/integration/StreamrClient.test.ts @@ -12,6 +12,7 @@ import Connection from '../../src/Connection' import config from './config' import { Stream } from '../../src/stream' import { Subscription } from '../../src' +import { StorageNode } from '../../src/stream/StorageNode' const { StreamMessage } = MessageLayer @@ -104,7 +105,7 @@ describeRepeats('StreamrClient', () => { requireSignedData, ...opts, }) - await s.addToStorageNode(config.clientOptions.storageNode.address) + await s.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) expect(s.id).toBeTruthy() expect(s.name).toEqual(name) diff --git a/test/integration/StreamrClientResends.test.ts b/test/integration/StreamrClientResends.test.ts index a36604905..5b3d5d7ca 100644 --- a/test/integration/StreamrClientResends.test.ts +++ b/test/integration/StreamrClientResends.test.ts @@ -6,6 +6,7 @@ import Connection from '../../src/Connection' import config from './config' import { Stream } from '../../src/stream' +import { StorageNode } from '../../src/stream/StorageNode' describeRepeats('StreamrClient Resend', () => { let expectErrors = 0 // check no errors by default @@ -76,7 +77,7 @@ describeRepeats('StreamrClient Resend', () => { requireSignedData, ...opts, }) - await s.addToStorageNode(config.clientOptions.storageNode.address) + await s.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) expect(s.id).toBeTruthy() expect(s.name).toEqual(name) diff --git a/test/integration/Subscriber.test.js b/test/integration/Subscriber.test.js index c45b0a38b..2c98f3786 100644 --- a/test/integration/Subscriber.test.js +++ b/test/integration/Subscriber.test.js @@ -5,6 +5,7 @@ import { uid, fakePrivateKey, describeRepeats, getPublishTestMessages, collect } import { StreamrClient } from '../../src/StreamrClient' import { Defer } from '../../src/utils' import Connection from '../../src/Connection' +import { StorageNode } from '../../src/stream/StorageNode' import config from './config' @@ -54,7 +55,7 @@ describeRepeats('Subscriber', () => { stream = await client.createStream({ name: uid('stream') }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) client.debug('connecting before test <<') publishTestMessages = getPublishTestMessages(client, { stream diff --git a/test/integration/SubscriberResends.test.ts b/test/integration/SubscriberResends.test.ts index 615218e29..611f47382 100644 --- a/test/integration/SubscriberResends.test.ts +++ b/test/integration/SubscriberResends.test.ts @@ -19,6 +19,7 @@ import { Defer } from '../../src/utils' import config from './config' import { Stream } from '../../src/stream' import { Subscriber } from '../../src/subscribe' +import { StorageNode } from '../../src/stream/StorageNode' const { ControlMessage } = ControlLayer @@ -78,7 +79,7 @@ describeRepeats('resends', () => { beforeAll(async () => { client.debug('addToStorageNode >>') - await stream.addToStorageNode(config.clientOptions.storageNode.address, { + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV, { timeout: WAIT_FOR_STORAGE_TIMEOUT * 2, }) client.debug('addToStorageNode <<') @@ -138,7 +139,7 @@ describeRepeats('resends', () => { emptyStream = await client.createStream({ name: uid('stream') }) - await emptyStream.addToStorageNode(config.clientOptions.storageNode.address) + await emptyStream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) await expect(async () => { await subscriber.resend({ streamId: emptyStream.id, @@ -151,7 +152,7 @@ describeRepeats('resends', () => { emptyStream = await client.createStream({ name: uid('stream') }) - await emptyStream.addToStorageNode(config.clientOptions.storageNode.address) + await emptyStream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) const sub = await subscriber.resend({ streamId: emptyStream.id, @@ -171,7 +172,7 @@ describeRepeats('resends', () => { emptyStream = await client.createStream({ name: uid('stream') }) - await emptyStream.addToStorageNode(config.clientOptions.storageNode.address) + await emptyStream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) const sub = await subscriber.resendSubscribe({ streamId: emptyStream.id, diff --git a/test/integration/SubscriberResendsSequential.test.ts b/test/integration/SubscriberResendsSequential.test.ts index 026a8099c..275cfa98d 100644 --- a/test/integration/SubscriberResendsSequential.test.ts +++ b/test/integration/SubscriberResendsSequential.test.ts @@ -15,6 +15,7 @@ import Connection from '../../src/Connection' import config from './config' import { Stream } from '../../src/stream' import { Subscriber } from '../../src/subscribe' +import { StorageNode } from '../../src/stream/StorageNode' /* eslint-disable no-await-in-loop */ @@ -66,7 +67,7 @@ describeRepeats('sequential resend subscribe', () => { stream = await client.createStream({ name: uid('stream') }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) publishTestMessages = getPublishTestMessages(client, { stream, diff --git a/test/integration/Subscription.test.ts b/test/integration/Subscription.test.ts index 298258f3e..a66e2ab1d 100644 --- a/test/integration/Subscription.test.ts +++ b/test/integration/Subscription.test.ts @@ -6,6 +6,7 @@ import { StreamrClient } from '../../src/StreamrClient' import config from './config' import { Stream } from '../../src/stream' import { Subscription } from '../../src/subscribe' +import { StorageNode } from '../../src/stream/StorageNode' const createClient = (opts = {}) => new StreamrClient({ ...config.clientOptions, @@ -72,7 +73,7 @@ describe('Subscription', () => { stream = await client.createStream({ name: uid('stream') }) - await stream.addToStorageNode(config.clientOptions.storageNode.address) + await stream.addToStorageNode(StorageNode.STREAMR_DOCKER_DEV) await client.connect() }) diff --git a/test/integration/config.js b/test/integration/config.js index 013a61877..177b5cfef 100644 --- a/test/integration/config.js +++ b/test/integration/config.js @@ -1,3 +1,5 @@ +const { StorageNode } = require('../../src/stream/StorageNode') + const toNumber = (value) => { return (value !== undefined) ? Number(value) : undefined } @@ -20,8 +22,7 @@ module.exports = { templateSidechainAddress: process.env.DU_TEMPLATE_SIDECHAIN || '0x36afc8c9283CC866b8EB6a61C6e6862a83cd6ee8', }, storageNode: { - // "broker-node-storage-1" on Docker environment - address: '0xde1112f631486CfC759A50196853011528bC5FA0', + address: StorageNode.STREAMR_DOCKER_DEV.getAddress(), url: `http://${process.env.STREAMR_DOCKER_DEV_HOST || '10.200.10.1'}:8891` }, sidechain: { From 409b2fbf850e1e35752c382e8d192fd2fa302d2f Mon Sep 17 00:00:00 2001 From: Tim Oxley Date: Mon, 10 May 2021 15:44:28 -0400 Subject: [PATCH 08/10] fix: hardcode storageNode address in config, can't require config from build tests. --- test/integration/config.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/integration/config.js b/test/integration/config.js index 177b5cfef..94e3e39c0 100644 --- a/test/integration/config.js +++ b/test/integration/config.js @@ -1,5 +1,3 @@ -const { StorageNode } = require('../../src/stream/StorageNode') - const toNumber = (value) => { return (value !== undefined) ? Number(value) : undefined } @@ -22,7 +20,7 @@ module.exports = { templateSidechainAddress: process.env.DU_TEMPLATE_SIDECHAIN || '0x36afc8c9283CC866b8EB6a61C6e6862a83cd6ee8', }, storageNode: { - address: StorageNode.STREAMR_DOCKER_DEV.getAddress(), + address: '0xde1112f631486CfC759A50196853011528bC5FA0', url: `http://${process.env.STREAMR_DOCKER_DEV_HOST || '10.200.10.1'}:8891` }, sidechain: { From fa8dc28131fb37912d8518ae7da62fc714850753 Mon Sep 17 00:00:00 2001 From: bearni95 Date: Mon, 17 May 2021 12:09:53 +0200 Subject: [PATCH 09/10] fix: safety commit --- src/subscribe/api.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/subscribe/api.js b/src/subscribe/api.js index 6e08e961e..089679537 100644 --- a/src/subscribe/api.js +++ b/src/subscribe/api.js @@ -8,7 +8,7 @@ import { waitForRequestResponse } from '../stream/utils' const { SubscribeRequest, UnsubscribeRequest, ResendLastRequest, ResendFromRequest, ResendRangeRequest, -} = ControlLayer +} = ControlcdLayer const { MessageRef } = MessageLayer @@ -88,8 +88,7 @@ function createResendRequest(resendOptions) { from, to, last, - publisherId, - msgChainId, + publisherId } = { ...options, ...options.resend From fae3429b0640d7e45f435fbe91fda8958c0f5d25 Mon Sep 17 00:00:00 2001 From: bearni95 Date: Mon, 17 May 2021 12:16:44 +0200 Subject: [PATCH 10/10] fix: test? --- src/subscribe/api.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/subscribe/api.js b/src/subscribe/api.js index 089679537..dbc09d122 100644 --- a/src/subscribe/api.js +++ b/src/subscribe/api.js @@ -8,7 +8,7 @@ import { waitForRequestResponse } from '../stream/utils' const { SubscribeRequest, UnsubscribeRequest, ResendLastRequest, ResendFromRequest, ResendRangeRequest, -} = ControlcdLayer +} = ControlLayer const { MessageRef } = MessageLayer @@ -88,7 +88,8 @@ function createResendRequest(resendOptions) { from, to, last, - publisherId + publisherId, + msgChainId } = { ...options, ...options.resend