Browse Source

Fix storage/distribution initialization, add double-bucket config

Leszek Wiesner 3 years ago
parent
commit
b1dd8aceed

+ 4 - 6
tests/network-tests/src/Api.ts

@@ -1728,13 +1728,11 @@ export class Api {
   }
 
   public async getWorkerRoleAccounts(workerIds: WorkerId[], module: WorkingGroups): Promise<string[]> {
-    const entries: [StorageKey<[WorkerId]>, Worker][] = await this.api.query[module].workerById.entries<Worker>()
+    const workers = await this.api.query[module].workerById.multi<Worker>(workerIds)
 
-    return entries
-      .filter(([idKey]) => {
-        return workerIds.some((id) => id.eq(idKey.args[0]))
-      })
-      .map(([, worker]) => worker.role_account_id.toString())
+    return workers.map((worker) => {
+      return worker.role_account_id.toString()
+    })
   }
 
   public async getStake(id: StakeId): Promise<Stake> {

+ 34 - 1
tests/network-tests/src/flows/storagev2/initDistribution.ts

@@ -49,7 +49,7 @@ export const allStaticBags: CreateInterface<StaticBagId>[] = [
   { WorkingGroup: 'Storage' },
 ]
 
-export const defaultSingleBucketConfig: InitDistributionConfig = {
+export const singleBucketConfig: InitDistributionConfig = {
   families: [
     {
       metadata: { region: 'All' },
@@ -68,6 +68,39 @@ export const defaultSingleBucketConfig: InitDistributionConfig = {
   ],
 }
 
+export const doubleBucketConfig: InitDistributionConfig = {
+  families: [
+    {
+      metadata: { region: 'Region 1' },
+      dynamicBagPolicy: {
+        'Channel': 1,
+        'Member': 1,
+      },
+      buckets: [
+        {
+          metadata: { endpoint: process.env.DISTRIBUTOR_1_URL || 'http://localhost:3334' },
+          staticBags: allStaticBags,
+          operatorId: parseInt(process.env.DISTRIBUTOR_1_WORKER_ID || '0'),
+        },
+      ],
+    },
+    {
+      metadata: { region: 'Region 2' },
+      dynamicBagPolicy: {
+        'Channel': 1,
+        'Member': 1,
+      },
+      buckets: [
+        {
+          metadata: { endpoint: process.env.DISTRIBUTOR_2_URL || 'http://localhost:3336' },
+          staticBags: allStaticBags,
+          operatorId: parseInt(process.env.DISTRIBUTOR_2_WORKER_ID || '1'),
+        },
+      ],
+    },
+  ],
+}
+
 export default function createFlow({ families }: InitDistributionConfig) {
   return async function initDistribution({ api }: FlowProps): Promise<void> {
     const debug = extendDebug('flow:initDistribution')

+ 26 - 9
tests/network-tests/src/flows/storagev2/initStorage.ts

@@ -34,7 +34,7 @@ export const allStaticBags: CreateInterface<StaticBagId>[] = [
   { WorkingGroup: 'Storage' },
 ]
 
-export const defaultSingleBucketConfig: InitStorageConfig = {
+export const singleBucketConfig: InitStorageConfig = {
   dynamicBagPolicy: {
     'Channel': 1,
     'Member': 1,
@@ -50,6 +50,29 @@ export const defaultSingleBucketConfig: InitStorageConfig = {
   ],
 }
 
+export const doubleBucketConfig: InitStorageConfig = {
+  dynamicBagPolicy: {
+    'Channel': 2,
+    'Member': 2,
+  },
+  buckets: [
+    {
+      metadata: { endpoint: process.env.STORAGE_1_URL || 'http://localhost:3333' },
+      staticBags: allStaticBags,
+      operatorId: parseInt(process.env.STORAGE_1_WORKER_ID || '0'),
+      storageLimit: new BN(1_000_000_000_000),
+      objectsLimit: 1000000000,
+    },
+    {
+      metadata: { endpoint: process.env.STORAGE_2_URL || 'http://localhost:3335' },
+      staticBags: allStaticBags,
+      operatorId: parseInt(process.env.STORAGE_2_WORKER_ID || '1'),
+      storageLimit: new BN(1_000_000_000_000),
+      objectsLimit: 1000000000,
+    },
+  ],
+}
+
 export default function createFlow({ buckets, dynamicBagPolicy }: InitStorageConfig) {
   return async function initDistribution({ api }: FlowProps): Promise<void> {
     const debug = extendDebug('flow:initStorage')
@@ -82,7 +105,7 @@ export default function createFlow({ buckets, dynamicBagPolicy }: InitStorageCon
       )
     )
     const setMaxVoucherLimitsTx = api.tx.storage.updateStorageBucketsVoucherMaxLimits(maxStorageLimit, maxObjectsLimit)
-    const setBucketPerBagLimitTx = api.tx.storage.updateStorageBucketsPerBagLimit(buckets.length)
+    const setBucketPerBagLimitTx = api.tx.storage.updateStorageBucketsPerBagLimit(Math.max(5, buckets.length))
 
     await api.signAndSendMany(
       [...updateDynamicBagPolicyTxs, setMaxVoucherLimitsTx, setBucketPerBagLimitTx],
@@ -93,19 +116,13 @@ export default function createFlow({ buckets, dynamicBagPolicy }: InitStorageCon
     const createBucketTxs = buckets.map((b, i) =>
       api.tx.storage.createStorageBucket(operatorIds[i], true, b.storageLimit, b.objectsLimit)
     )
-    const createBucketResults = await api.signAndSendManyByMany(createBucketTxs, operatorKeys)
+    const createBucketResults = await api.signAndSendMany(createBucketTxs, storageLeaderKey)
     const bucketById = new Map<number, StorageBucketConfig>()
     createBucketResults.forEach((res, i) => {
       const bucketId = api.getEvent(res, 'storage', 'StorageBucketCreated').data[0]
       bucketById.set(bucketId.toNumber(), buckets[i])
     })
 
-    // Invite bucket operators
-    const bucketInviteTxs = Array.from(bucketById.keys()).map((bucketId, i) =>
-      api.tx.storage.inviteStorageBucketOperator(bucketId, operatorIds[i])
-    )
-    await api.signAndSendMany(bucketInviteTxs, storageLeaderKey)
-
     // Accept invitations
     const acceptInvitationTxs = Array.from(bucketById.keys()).map((bucketId, i) =>
       api.tx.storage.acceptStorageBucketInvitation(operatorIds[i], bucketId)