mirror of https://github.com/hyperledger/besu
spike: add benchmark (#2716)
Signed-off-by: Taccat Isid <taccatisid@protonmail.com> Co-authored-by: Sally MacFarlane <sally.macfarlane@consensys.net>pull/2815/head
parent
2aeae39560
commit
ce28aae8b1
@ -0,0 +1 @@ |
|||||||
|
0xa67bee5d6fb43acd42e307eb67547ab5006ad2fbb9567829e9b4b2ef3580acea |
@ -0,0 +1,69 @@ |
|||||||
|
# |
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
# |
||||||
|
|
||||||
|
--- |
||||||
|
test: |
||||||
|
name: Simple Storage |
||||||
|
description: Test private transactions |
||||||
|
workers: |
||||||
|
type: local |
||||||
|
number: 1 |
||||||
|
rounds: |
||||||
|
- label: warm-up (ignore results) |
||||||
|
txDuration: 10 |
||||||
|
rateControl: |
||||||
|
type: fixed-load |
||||||
|
opts: |
||||||
|
startingTps: 200 |
||||||
|
transactionLoad: 200 |
||||||
|
workload: |
||||||
|
module: /config/store.js |
||||||
|
arguments: |
||||||
|
contract: private_storage_offchain |
||||||
|
private: legacy_group |
||||||
|
- label: legacy private transaction (run 1) |
||||||
|
txDuration: 10 |
||||||
|
rateControl: |
||||||
|
type: fixed-load |
||||||
|
opts: |
||||||
|
startingTps: 200 |
||||||
|
transactionLoad: 200 |
||||||
|
workload: |
||||||
|
module: /config/store.js |
||||||
|
arguments: |
||||||
|
contract: private_storage_offchain |
||||||
|
private: legacy_group |
||||||
|
- label: public transaction (run 2) |
||||||
|
txDuration: 10 |
||||||
|
rateControl: |
||||||
|
type: fixed-load |
||||||
|
opts: |
||||||
|
startingTps: 200 |
||||||
|
transactionLoad: 200 |
||||||
|
workload: |
||||||
|
module: /config/store.js |
||||||
|
arguments: |
||||||
|
contract: public_storage |
||||||
|
- label: legacy private transaction (run 2) |
||||||
|
txDuration: 10 |
||||||
|
rateControl: |
||||||
|
type: fixed-load |
||||||
|
opts: |
||||||
|
startingTps: 200 |
||||||
|
transactionLoad: 200 |
||||||
|
workload: |
||||||
|
module: /config/store.js |
||||||
|
arguments: |
||||||
|
contract: private_storage_offchain |
||||||
|
private: legacy_group |
@ -0,0 +1,80 @@ |
|||||||
|
# |
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
# |
||||||
|
|
||||||
|
--- |
||||||
|
test: |
||||||
|
name: Simple Storage |
||||||
|
description: Test private transactions |
||||||
|
workers: |
||||||
|
type: local |
||||||
|
number: 1 |
||||||
|
rounds: |
||||||
|
- label: warm-up (ignore results) |
||||||
|
txDuration: 10 |
||||||
|
rateControl: |
||||||
|
type: fixed-load |
||||||
|
opts: |
||||||
|
startingTps: 200 |
||||||
|
transactionLoad: 200 |
||||||
|
workload: |
||||||
|
module: /config/store.js |
||||||
|
arguments: |
||||||
|
contract: private_storage_onchain |
||||||
|
private: onchain_group |
||||||
|
- label: public transaction (run 1) |
||||||
|
txDuration: 10 |
||||||
|
rateControl: |
||||||
|
type: fixed-load |
||||||
|
opts: |
||||||
|
startingTps: 200 |
||||||
|
transactionLoad: 200 |
||||||
|
workload: |
||||||
|
module: /config/store.js |
||||||
|
arguments: |
||||||
|
contract: public_storage |
||||||
|
- label: onchain private transaction (run 1) |
||||||
|
txDuration: 10 |
||||||
|
rateControl: |
||||||
|
type: fixed-load |
||||||
|
opts: |
||||||
|
startingTps: 200 |
||||||
|
transactionLoad: 200 |
||||||
|
workload: |
||||||
|
module: /config/store.js |
||||||
|
arguments: |
||||||
|
contract: private_storage_onchain |
||||||
|
private: onchain_group |
||||||
|
- label: public transaction (run 2) |
||||||
|
txDuration: 10 |
||||||
|
rateControl: |
||||||
|
type: fixed-load |
||||||
|
opts: |
||||||
|
startingTps: 200 |
||||||
|
transactionLoad: 200 |
||||||
|
workload: |
||||||
|
module: /config/store.js |
||||||
|
arguments: |
||||||
|
contract: public_storage |
||||||
|
- label: onchain private transaction (run 2) |
||||||
|
txDuration: 10 |
||||||
|
rateControl: |
||||||
|
type: fixed-load |
||||||
|
opts: |
||||||
|
startingTps: 200 |
||||||
|
transactionLoad: 200 |
||||||
|
workload: |
||||||
|
module: /config/store.js |
||||||
|
arguments: |
||||||
|
contract: private_storage_onchain |
||||||
|
private: onchain_group |
@ -0,0 +1,35 @@ |
|||||||
|
{ |
||||||
|
"caliper": { |
||||||
|
"blockchain": "ethereum" |
||||||
|
}, |
||||||
|
"ethereum": { |
||||||
|
"url": "ws://besu:8546", |
||||||
|
"contractDeployerAddress": "0xD1cf9D73a91DE6630c2bb068Ba5fDdF9F0DEac09", |
||||||
|
"contractDeployerAddressPrivateKey": "0x797c13f7235c627f6bd013dc17fff4c12213ab49abcf091f77c83f16db10e90b", |
||||||
|
"fromAddressSeed": "0x3f841bf589fdf83a521e55d51afddc34fa65351161eead24f064855fc29c9580", |
||||||
|
"transactionConfirmationBlocks": 1, |
||||||
|
"chainId": 48122, |
||||||
|
"privacy": { |
||||||
|
"legacy_group": { |
||||||
|
"groupType": "legacy", |
||||||
|
"privateFrom": "GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY=", |
||||||
|
"privateFor": ["GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY="] |
||||||
|
} |
||||||
|
}, |
||||||
|
"contracts": { |
||||||
|
"public_storage": { |
||||||
|
"path": "/config/storage.json", |
||||||
|
"gas": { |
||||||
|
"update": 30000 |
||||||
|
} |
||||||
|
}, |
||||||
|
"private_storage_offchain": { |
||||||
|
"path": "/config/storage.json", |
||||||
|
"gas": { |
||||||
|
"update": 30000 |
||||||
|
}, |
||||||
|
"private": "legacy_group" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
{ |
||||||
|
"caliper": { |
||||||
|
"blockchain": "ethereum" |
||||||
|
}, |
||||||
|
"ethereum": { |
||||||
|
"url": "ws://besu:8546", |
||||||
|
"contractDeployerAddress": "0xD1cf9D73a91DE6630c2bb068Ba5fDdF9F0DEac09", |
||||||
|
"contractDeployerAddressPrivateKey": "0x797c13f7235c627f6bd013dc17fff4c12213ab49abcf091f77c83f16db10e90b", |
||||||
|
"fromAddressSeed": "0x3f841bf589fdf83a521e55d51afddc34fa65351161eead24f064855fc29c9580", |
||||||
|
"transactionConfirmationBlocks": 1, |
||||||
|
"chainId": 48122, |
||||||
|
"privacy": { |
||||||
|
"onchain_group": { |
||||||
|
"groupType": "onchain", |
||||||
|
"privateFrom": "GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY=", |
||||||
|
"privateKey": "uTJGpd4ZEEtDPFSZM0+GT11xn5NFIr2KGP2Q4SdVPRM=" |
||||||
|
} |
||||||
|
}, |
||||||
|
"contracts": { |
||||||
|
"public_storage": { |
||||||
|
"path": "/config/storage.json", |
||||||
|
"gas": { |
||||||
|
"update": 30000 |
||||||
|
} |
||||||
|
}, |
||||||
|
"private_storage_onchain": { |
||||||
|
"path": "/config/storage.json", |
||||||
|
"gas": { |
||||||
|
"update": 30000 |
||||||
|
}, |
||||||
|
"private": "onchain_group" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
# |
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
# |
||||||
|
|
||||||
|
caliper: |
||||||
|
report: |
||||||
|
path: 'report-offchain.html' |
||||||
|
benchconfig: caliper-benchconfig.yaml |
||||||
|
networkconfig: caliper-networkconfig.json |
||||||
|
txupdatetime: 500 |
||||||
|
workspace: ./ |
||||||
|
logging: |
||||||
|
targets: |
||||||
|
console: |
||||||
|
target: console |
||||||
|
enabled: true |
||||||
|
options: |
||||||
|
level: info |
||||||
|
file: |
||||||
|
target: file |
||||||
|
enabled: false |
@ -0,0 +1,49 @@ |
|||||||
|
# |
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
# |
||||||
|
|
||||||
|
caliper: |
||||||
|
report: |
||||||
|
path: 'report-onchain.html' |
||||||
|
benchconfig: caliper-benchconfig.yaml |
||||||
|
networkconfig: caliper-networkconfig.json |
||||||
|
txupdatetime: 500 |
||||||
|
workspace: ./ |
||||||
|
logging: |
||||||
|
template: '%timestamp%%level%%module%%message%%metadata%' |
||||||
|
formats: |
||||||
|
timestamp: 'YYYY.MM.DD-HH:mm:ss.SSS ZZ' |
||||||
|
label: false |
||||||
|
json: false |
||||||
|
pad: true |
||||||
|
align: false |
||||||
|
attributeformat: |
||||||
|
level: ' %attribute%' |
||||||
|
module: ' [%attribute%] ' |
||||||
|
metadata: ' (%attribute%)' |
||||||
|
colorize: |
||||||
|
all: true |
||||||
|
colors: |
||||||
|
info: green |
||||||
|
error: red |
||||||
|
warn: yellow |
||||||
|
debug: grey |
||||||
|
targets: |
||||||
|
console: |
||||||
|
target: console |
||||||
|
enabled: true |
||||||
|
options: |
||||||
|
level: info |
||||||
|
file: |
||||||
|
target: file |
||||||
|
enabled: false |
@ -0,0 +1,75 @@ |
|||||||
|
{ |
||||||
|
"config": { |
||||||
|
"chainId": 48122, |
||||||
|
"berlinblock": 0, |
||||||
|
"clique": { |
||||||
|
"blockperiodseconds": 1, |
||||||
|
"epoch": 30000 |
||||||
|
} |
||||||
|
}, |
||||||
|
"nonce": "0x0", |
||||||
|
"timestamp": "0x5ca916c6", |
||||||
|
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000c0A8e4D217eB85b812aeb1226fAb6F588943C2C20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"gasLimit": "0x47b760", |
||||||
|
"difficulty": "0x1", |
||||||
|
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"coinbase": "0xc0A8e4D217eB85b812aeb1226fAb6F588943C2C2", |
||||||
|
"number": "0x0", |
||||||
|
"gasUsed": "0x0", |
||||||
|
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"alloc": { |
||||||
|
"0xc0A8e4D217eB85b812aeb1226fAb6F588943C2C2": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000" |
||||||
|
}, |
||||||
|
"0xD1cf9D73a91DE6630c2bb068Ba5fDdF9F0DEac09": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"privatekey": "0x797c13f7235c627f6bd013dc17fff4c12213ab49abcf091f77c83f16db10e90b", |
||||||
|
"derivation": "m/44'/60'/0'/0/0" |
||||||
|
}, |
||||||
|
"0xd826E703658FA2CE8D1018D42E637C08d9846A17": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"privatekey": "0x4be84b298ccb944e96befc4f03b943ec13709f6a8e5b5d8595c486dfa88fd254", |
||||||
|
"derivation": "m/44'/60'/1'/0/0" |
||||||
|
}, |
||||||
|
"0x247DdfA00415710E0416f8c103b5E6428782C916": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"privatekey": "0xaa682edca26f3e17889d69276e6c6a4fcf1594af97e48f4dc3ac6dbb29e7924b", |
||||||
|
"derivation": "m/44'/60'/2'/0/0" |
||||||
|
}, |
||||||
|
"0x500a8704F86C0d9126Dfb949fDC4dc248c228fB4": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"privatekey": "0x45d09c64e4973b16422b31d5e4a1fbf57ae8fd25037566af8bc1d046022d754b", |
||||||
|
"derivation": "m/44'/60'/3'/0/0" |
||||||
|
}, |
||||||
|
"0x32d9ad8F398995fFF658E74430749d65E0ee6702": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"privatekey": "0x2f51f2d881e0a6f7f249139a2afe8da084424616d08aa0ce9fb1c960b49f022f", |
||||||
|
"derivation": "m/44'/60'/4'/0/0" |
||||||
|
}, |
||||||
|
"0xd32d3f6dA1664C4ee7acae64fEC3661cEa6ee448": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"privatekey": "0x87abeb4c0230ca6fdf42f7d2cb2baa510856e42f039ab7670b13845e45dc3245", |
||||||
|
"derivation": "m/44'/60'/5'/0/0" |
||||||
|
}, |
||||||
|
"0x5F6C5F2431CE84f2Fa84deB6B27A1764DB6feB1a": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"privatekey": "0x5f0ad910e681553c9407582f620d9560541fa8b8c4d03e9e2e3caed5eea6a220", |
||||||
|
"derivation": "m/44'/60'/6'/0/0" |
||||||
|
}, |
||||||
|
"0x9fCDe74bf5465D5C32a09f158047803a061B3C1B": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"privatekey": "0x76930906e95c96a9be735b0f182184424f450feca5ea71bf743a8c47ea6e2635", |
||||||
|
"derivation": "m/44'/60'/7'/0/0" |
||||||
|
}, |
||||||
|
"0xb582703c0a0e2b598f9362A5e5c17Ab6865b0342": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"privatekey": "0x32e90654e141cb4f92dd9fccef100778c112636b20b9017a9ae56be9a8c2c648", |
||||||
|
"derivation": "m/44'/60'/8'/0/0" |
||||||
|
}, |
||||||
|
"0x179740E29B1E7b2C61F6004b8d5caD575D6eaa88": { |
||||||
|
"balance": "0x200000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"privatekey": "0x028bf0ee2807cf9a8d22db99f12aea783a2e6b4897c9ddb7557e33291c7d35c5", |
||||||
|
"derivation": "m/44'/60'/9'/0/0" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
{ |
||||||
|
"name": "storage", |
||||||
|
"abi": [ |
||||||
|
{ |
||||||
|
"constant": false, |
||||||
|
"inputs": [ |
||||||
|
{ |
||||||
|
"internalType": "uint256", |
||||||
|
"name": "_value", |
||||||
|
"type": "uint256" |
||||||
|
} |
||||||
|
], |
||||||
|
"name": "update", |
||||||
|
"outputs": [], |
||||||
|
"payable": false, |
||||||
|
"stateMutability": "nonpayable", |
||||||
|
"type": "function" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"constant": true, |
||||||
|
"inputs": [], |
||||||
|
"name": "value", |
||||||
|
"outputs": [ |
||||||
|
{ |
||||||
|
"internalType": "uint256", |
||||||
|
"name": "", |
||||||
|
"type": "uint256" |
||||||
|
} |
||||||
|
], |
||||||
|
"payable": false, |
||||||
|
"stateMutability": "view", |
||||||
|
"type": "function" |
||||||
|
} |
||||||
|
], |
||||||
|
"bytecode": "0x608060405234801561001057600080fd5b5060c38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80633fa4f24514603757806382ab890a146053575b600080fd5b603d607e565b6040518082815260200191505060405180910390f35b607c60048036036020811015606757600080fd5b81019080803590602001909291905050506084565b005b60005481565b806000819055505056fea265627a7a72315820e8496d56b71870b96edb4d71a4fd8101b771c4c269eb0d8ee8c27c6085fa76fc64736f6c63430005110032", |
||||||
|
"gas": 3000000 |
||||||
|
} |
@ -0,0 +1,109 @@ |
|||||||
|
/* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
'use strict'; |
||||||
|
|
||||||
|
const { WorkloadModuleBase } = require('@hyperledger/caliper-core'); |
||||||
|
const Web3 = require('web3'); |
||||||
|
|
||||||
|
class StoreWorkload extends WorkloadModuleBase { |
||||||
|
|
||||||
|
/** |
||||||
|
* Initializes the parameters of the workload. |
||||||
|
*/ |
||||||
|
constructor() { |
||||||
|
super(); |
||||||
|
this.txIndex = -1; |
||||||
|
this.private = false; |
||||||
|
this.contract = {}; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Generates simple workload. |
||||||
|
* @returns {{verb: String, args: Object[]}[]} Array of workload argument objects. |
||||||
|
*/ |
||||||
|
_generateWorkload() { |
||||||
|
let web3 = new Web3(this.nodeUrl); |
||||||
|
|
||||||
|
let workload = []; |
||||||
|
for(let i= 0; i < this.roundArguments.txnPerBatch; i++) { |
||||||
|
this.txIndex++; |
||||||
|
|
||||||
|
let value = i; |
||||||
|
|
||||||
|
let args = { |
||||||
|
contract: this.roundArguments.contract, |
||||||
|
verb: 'update', |
||||||
|
args: [value], |
||||||
|
readOnly: false, |
||||||
|
} |
||||||
|
|
||||||
|
if (this.isPrivate) { |
||||||
|
args.privacy = this.privacyOpts; |
||||||
|
args.privacy.sender = web3.eth.accounts.create(); |
||||||
|
args.privacy.sender.nonce = 0; |
||||||
|
} |
||||||
|
|
||||||
|
workload.push(args); |
||||||
|
} |
||||||
|
|
||||||
|
return workload; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Initialize the workload module with the given parameters. |
||||||
|
* @param {number} workerIndex The 0-based index of the worker instantiating the workload module. |
||||||
|
* @param {number} totalWorkers The total number of workers participating in the round. |
||||||
|
* @param {number} roundIndex The 0-based index of the currently executing round. |
||||||
|
* @param {Object} roundArguments The user-provided arguments for the round from the benchmark configuration file. |
||||||
|
* @param {BlockchainConnector} sutAdapter The adapter of the underlying SUT. |
||||||
|
* @param {Object} sutContext The custom context object provided by the SUT adapter. |
||||||
|
* @async |
||||||
|
*/ |
||||||
|
async initializeWorkloadModule(workerIndex, totalWorkers, roundIndex, roundArguments, sutAdapter, sutContext) { |
||||||
|
await super.initializeWorkloadModule(workerIndex, totalWorkers, roundIndex, roundArguments, sutAdapter, sutContext); |
||||||
|
|
||||||
|
if (!this.roundArguments.contract) { |
||||||
|
throw new Error('store - argument "contract" missing'); |
||||||
|
} |
||||||
|
|
||||||
|
this.nodeUrl = sutContext.url; |
||||||
|
|
||||||
|
if(this.roundArguments.private) { |
||||||
|
this.isPrivate = true; |
||||||
|
this.privacyOpts = sutContext.privacy[this.roundArguments.private]; |
||||||
|
this.privacyOpts['id'] = this.roundArguments.private; |
||||||
|
} else { |
||||||
|
this.isPrivate = false; |
||||||
|
} |
||||||
|
|
||||||
|
if(!this.roundArguments.txnPerBatch) { |
||||||
|
this.roundArguments.txnPerBatch = 1; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Assemble TXs for opening new accounts. |
||||||
|
*/ |
||||||
|
async submitTransaction() { |
||||||
|
let args = this._generateWorkload(); |
||||||
|
await this.sutAdapter.sendRequests(args); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function createWorkloadModule() { |
||||||
|
return new StoreWorkload(); |
||||||
|
} |
||||||
|
|
||||||
|
module.exports.createWorkloadModule = createWorkloadModule; |
@ -0,0 +1,48 @@ |
|||||||
|
{ |
||||||
|
"mode": "orion", |
||||||
|
"useWhiteList": false, |
||||||
|
"jdbc": { |
||||||
|
"username": "sa", |
||||||
|
"password": "", |
||||||
|
"url": "jdbc:h2:/data/tm/db;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=0", |
||||||
|
"autoCreateTables": true |
||||||
|
}, |
||||||
|
"serverConfigs": [ |
||||||
|
{ |
||||||
|
"app": "ThirdParty", |
||||||
|
"serverAddress": "http://tessera:9080", |
||||||
|
"communicationType": "REST" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"app": "Q2T", |
||||||
|
"serverAddress": "http://tessera:9101", |
||||||
|
"sslConfig": { |
||||||
|
"tls": "OFF" |
||||||
|
}, |
||||||
|
"communicationType": "REST" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"app": "P2P", |
||||||
|
"serverAddress": "http://tessera:9000", |
||||||
|
"sslConfig": { |
||||||
|
"tls": "OFF" |
||||||
|
}, |
||||||
|
"communicationType": "REST" |
||||||
|
} |
||||||
|
], |
||||||
|
"peer": [ |
||||||
|
{ |
||||||
|
"url": "http://tessera:9000" |
||||||
|
} |
||||||
|
], |
||||||
|
"keys": { |
||||||
|
"passwords": [], |
||||||
|
"keyData": [ |
||||||
|
{ |
||||||
|
"config": {"data":{"bytes":"uTJGpd4ZEEtDPFSZM0+GT11xn5NFIr2KGP2Q4SdVPRM="},"type":"unlocked"}, |
||||||
|
"publicKey": "GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY=" |
||||||
|
} |
||||||
|
] |
||||||
|
}, |
||||||
|
"alwaysSendTo": [] |
||||||
|
} |
@ -0,0 +1,109 @@ |
|||||||
|
version: '2' |
||||||
|
|
||||||
|
x-besu: |
||||||
|
&besu |
||||||
|
container_name: besu |
||||||
|
image: "hyperledger/besu:develop" |
||||||
|
cpuset: 4-5 |
||||||
|
environment: |
||||||
|
- NODE_INGRESS_CONTRACT_ADDRESS=0x0000000000000000000000000000000000009999 |
||||||
|
- ACCOUNT_INGRESS_CONTRACT_ADDRESS=0x0000000000000000000000000000000000008888 |
||||||
|
- BESU_NODE_PERM_ACCOUNT=D1cf9D73a91DE6630c2bb068Ba5fDdF9F0DEac09 |
||||||
|
- BESU_NODE_PERM_KEY=797c13f7235c627f6bd013dc17fff4c12213ab49abcf091f77c83f16db10e90b |
||||||
|
- CHAIN_ID=48122 |
||||||
|
volumes: |
||||||
|
- ./config:/config:ro |
||||||
|
|
||||||
|
x-caliper: |
||||||
|
&caliper |
||||||
|
container_name: caliper |
||||||
|
# TODO: this image is build using the custom branch |
||||||
|
# https://github.com/taccatisid/caliper/tree/besu-performance-benchmark-container. Once |
||||||
|
# all the changes of this branch are merged into the caliper main |
||||||
|
# branch, we should use the official caliper image here. |
||||||
|
image: "taccatisid/caliper" |
||||||
|
cpuset: 0-3 |
||||||
|
entrypoint: caliper launch manager |
||||||
|
volumes: |
||||||
|
- ./config:/config:ro |
||||||
|
- ./caliper-benchmarks:/hyperledger/caliper/workspace |
||||||
|
|
||||||
|
services: |
||||||
|
caliper-offchain: |
||||||
|
<< : *caliper |
||||||
|
environment: |
||||||
|
- CALIPER_PROJECTCONFIG=/config/caliper-offchain.yaml |
||||||
|
- CALIPER_BIND_SUT=besu:latest |
||||||
|
- CALIPER_BENCHCONFIG=/config/caliper-benchconfig-offchain.yaml |
||||||
|
- CALIPER_NETWORKCONFIG=/config/caliper-networkconfig-offchain.json |
||||||
|
depends_on: |
||||||
|
besu-offchain: |
||||||
|
condition: service_started |
||||||
|
tessera: |
||||||
|
condition: service_healthy |
||||||
|
|
||||||
|
caliper-onchain: |
||||||
|
<< : *caliper |
||||||
|
environment: |
||||||
|
- CALIPER_PROJECTCONFIG=/config/caliper-onchain.yaml |
||||||
|
- CALIPER_BIND_SUT=besu:latest |
||||||
|
- CALIPER_BENCHCONFIG=/config/caliper-benchconfig-onchain.yaml |
||||||
|
- CALIPER_NETWORKCONFIG=/config/caliper-networkconfig-onchain.json |
||||||
|
depends_on: |
||||||
|
besu-onchain: |
||||||
|
condition: service_started |
||||||
|
tessera: |
||||||
|
condition: service_healthy |
||||||
|
|
||||||
|
besu-offchain: |
||||||
|
<< : *besu |
||||||
|
entrypoint: |
||||||
|
- /opt/besu/bin/besu |
||||||
|
- --genesis-file=/config/genesis.json |
||||||
|
- --node-private-key-file=/config/besu-keystore/key |
||||||
|
- --min-gas-price=0 |
||||||
|
- --revert-reason-enabled |
||||||
|
- --rpc-ws-enabled |
||||||
|
- --rpc-ws-apis=admin,eth,miner,web3,net,priv,eea |
||||||
|
- --rpc-ws-host=0.0.0.0 |
||||||
|
- --host-whitelist=* |
||||||
|
- --graphql-http-enabled |
||||||
|
- --discovery-enabled=false |
||||||
|
- --privacy-enabled=true |
||||||
|
- --privacy-url=http://tessera:9101 |
||||||
|
- --privacy-public-key-file=/config/orion/key/orion.pub |
||||||
|
|
||||||
|
besu-onchain: |
||||||
|
<< : *besu |
||||||
|
entrypoint: |
||||||
|
- /opt/besu/bin/besu |
||||||
|
- --genesis-file=/config/genesis.json |
||||||
|
- --node-private-key-file=/config/besu-keystore/key |
||||||
|
- --min-gas-price=0 |
||||||
|
- --revert-reason-enabled |
||||||
|
- --rpc-ws-enabled |
||||||
|
- --rpc-ws-apis=admin,eth,miner,web3,net,priv,eea |
||||||
|
- --rpc-ws-host=0.0.0.0 |
||||||
|
- --host-whitelist=* |
||||||
|
- --graphql-http-enabled |
||||||
|
- --discovery-enabled=false |
||||||
|
- --privacy-enabled=true |
||||||
|
- --privacy-url=http://tessera:9101 |
||||||
|
- --privacy-public-key-file=/config/orion/key/orion.pub |
||||||
|
- --privacy-flexible-groups-enabled |
||||||
|
tessera: |
||||||
|
container_name: tessera |
||||||
|
image: quorumengineering/tessera:latest |
||||||
|
healthcheck: |
||||||
|
test: ["CMD", "wget", "--spider", "--proxy", "off", "http://localhost:9000/upcheck"] |
||||||
|
interval: 1s |
||||||
|
timeout: 1s |
||||||
|
retries: 10 |
||||||
|
volumes: |
||||||
|
- ./config/tessera:/config:ro |
||||||
|
entrypoint: |
||||||
|
- /bin/sh |
||||||
|
- -c |
||||||
|
- | |
||||||
|
mkdir -p /data/tm/; |
||||||
|
/tessera/bin/tessera -configfile /config/config.json |
Loading…
Reference in new issue