如下代码,
以第一个场景 parameter_normal为例:
列表的每一项,代表这个项可取的范围,例如block_tx_capacity可以是2000,也可以是10000
max_txpool_size的取值为自定义计算,和无上限两种。
经过正交计算,第一个场景可以使用4个场景进行覆盖。
- from allpairspy import AllPairs
-
- parameters_normal = [
- ["block_tx_capacity=2000", "block_tx_capacity=10000"],
- ["max_txpool_size=自定义计算", "max_txpool_size=无上限"],
- ["TBFT_blocks_per_proposer=0", "TBFT_blocks_per_proposer=1"],
- ]
-
- parameters_batch1 = [
- ["block_tx_capacity=2000"],
- ["max_txpool_size=自定义计算", "max_txpool_size=无上限"],
- ["TBFT_blocks_per_proposer=0", "TBFT_blocks_per_proposer=1"],
- ["batch_max_size=200", "batch_max_size=500", "batch_max_size=1000", "batch_max_size=2000"],
- ["batch_create_timeout=50", "batch_create_timeout=200"],
- ]
-
- parameters_batch2 = [
- ["block_tx_capacity=10000"],
- ["max_txpool_size=自定义计算", "max_txpool_size=无上限"],
- ["TBFT_blocks_per_proposer=0", "TBFT_blocks_per_proposer=1"],
- ["batch_max_size=100", "batch_max_size=500", "batch_max_size=1000", "batch_max_size=2000"],
- ["batch_create_timeout=50", "batch_create_timeout=200"],
- ]
- print("normal交易池 PAIRWISE:")
- for i, pairs in enumerate(AllPairs(parameters_normal)):
- print("{:2d}: {}".format(i, pairs))
- print("batch交易池 区块容量2000 PAIRWISE:")
- for i, pairs in enumerate(AllPairs(parameters_batch1)):
- print("{:2d}: {}".format(i, pairs))
- print("batch交易池 区块容量10000 PAIRWISE:")
- for i, pairs in enumerate(AllPairs(parameters_batch2)):
- print("{:2d}: {}".format(i, pairs))
- print("【logdb_segment_size和maxconcurrency根据配置找到最优值后使用固定值】")
运行结果
- normal交易池 PAIRWISE:
- 0: ['block_tx_capacity=2000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=0']
- 1: ['block_tx_capacity=10000', 'max_txpool_size=无上限', 'TBFT_blocks_per_proposer=0']
- 2: ['block_tx_capacity=10000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=1']
- 3: ['block_tx_capacity=2000', 'max_txpool_size=无上限', 'TBFT_blocks_per_proposer=1']
- batch交易池 区块容量2000 PAIRWISE:
- 0: ['block_tx_capacity=2000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=0', 'batch_max_size=200', 'batch_create_timeout=50']
- 1: ['block_tx_capacity=2000', 'max_txpool_size=无上限', 'TBFT_blocks_per_proposer=1', 'batch_max_size=500', 'batch_create_timeout=200']
- 2: ['block_tx_capacity=2000', 'max_txpool_size=无上限', 'TBFT_blocks_per_proposer=0', 'batch_max_size=1000', 'batch_create_timeout=200']
- 3: ['block_tx_capacity=2000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=1', 'batch_max_size=2000', 'batch_create_timeout=200']
- 4: ['block_tx_capacity=2000', 'max_txpool_size=无上限', 'TBFT_blocks_per_proposer=1', 'batch_max_size=200', 'batch_create_timeout=50']
- 5: ['block_tx_capacity=2000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=0', 'batch_max_size=500', 'batch_create_timeout=50']
- 6: ['block_tx_capacity=2000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=0', 'batch_max_size=2000', 'batch_create_timeout=50']
- 7: ['block_tx_capacity=2000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=1', 'batch_max_size=1000', 'batch_create_timeout=50']
- 8: ['block_tx_capacity=2000', 'max_txpool_size=无上限', 'TBFT_blocks_per_proposer=1', 'batch_max_size=2000', 'batch_create_timeout=50']
- 9: ['block_tx_capacity=2000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=1', 'batch_max_size=200', 'batch_create_timeout=200']
- batch交易池 区块容量10000 PAIRWISE:
- 0: ['block_tx_capacity=10000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=0', 'batch_max_size=100', 'batch_create_timeout=50']
- 1: ['block_tx_capacity=10000', 'max_txpool_size=无上限', 'TBFT_blocks_per_proposer=1', 'batch_max_size=500', 'batch_create_timeout=200']
- 2: ['block_tx_capacity=10000', 'max_txpool_size=无上限', 'TBFT_blocks_per_proposer=0', 'batch_max_size=1000', 'batch_create_timeout=200']
- 3: ['block_tx_capacity=10000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=1', 'batch_max_size=2000', 'batch_create_timeout=200']
- 4: ['block_tx_capacity=10000', 'max_txpool_size=无上限', 'TBFT_blocks_per_proposer=1', 'batch_max_size=100', 'batch_create_timeout=50']
- 5: ['block_tx_capacity=10000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=0', 'batch_max_size=500', 'batch_create_timeout=50']
- 6: ['block_tx_capacity=10000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=0', 'batch_max_size=2000', 'batch_create_timeout=50']
- 7: ['block_tx_capacity=10000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=1', 'batch_max_size=1000', 'batch_create_timeout=50']
- 8: ['block_tx_capacity=10000', 'max_txpool_size=无上限', 'TBFT_blocks_per_proposer=1', 'batch_max_size=2000', 'batch_create_timeout=50']
- 9: ['block_tx_capacity=10000', 'max_txpool_size=自定义计算', 'TBFT_blocks_per_proposer=1', 'batch_max_size=100', 'batch_create_timeout=200']
- 【logdb_segment_size和maxconcurrency根据配置找到最优值后使用固定值