Skip to content

Commit 785eaf0

Browse files
author
Jason Yellick
committed
[FAB-1382] Remove window from Deliver API
https://jira.hyperledger.org/browse/FAB-1382 The deliver API currently works on a windowing concept. Because of the HTTP2/gRPC internal windowing, this additional layer of windowing is unnecessary. This changeset removes the notion of a Window from Deliver and instead replaces it with a start and stop position specification. To receive blocks indefinitely (replicating the old behavior with ACKs) the end position may be specified as MAX_UINT64. This changeset has an unfortunately high amount of ripple, and required extensive rework in the bdd tests, but the overall changeset is a simplification. Change-Id: I5095da82ab1f6d892b0112cdb9848842529936d9 Signed-off-by: Jason Yellick <[email protected]>
1 parent 06c336d commit 785eaf0

File tree

24 files changed

+805
-746
lines changed

24 files changed

+805
-746
lines changed

bddtests/features/orderer.feature

+46-44
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,29 @@ Feature: Orderer
1515
And I wait "<BootTime>" seconds
1616
And user "binhn" is an authorized user of the ordering service
1717
When user "binhn" broadcasts "<NumMsgsToBroadcast>" unique messages on "orderer0"
18-
And user "binhn" connects to deliver function on "orderer0" with Ack of "<SendAck>" and properties:
19-
| Start | SpecifiedNumber | WindowSize |
20-
| SPECIFIED | 1 | 10 |
18+
And user "binhn" connects to deliver function on "orderer0"
19+
And user "binhn" sends deliver a seek request on "orderer0" with properties:
20+
| Start | End |
21+
| 1 | Newest |
2122
Then user "binhn" should get a delivery from "orderer0" of "<ExpectedBlocks>" blocks with "<NumMsgsToBroadcast>" messages within "<BatchTimeout>" seconds
2223

2324
Examples: Solo Orderer
24-
| ComposeFile | SendAck | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
25-
| docker-compose-orderer-solo.yml | true | 20 | 2 | 10 | .5 |
26-
| docker-compose-orderer-solo.yml | true | 40 | 4 | 10 | .5 |
27-
| docker-compose-orderer-solo.yml | true | 60 | 6 | 10 | .5 |
25+
| ComposeFile | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
26+
| docker-compose-orderer-solo.yml | 20 | 2 | 10 | .5 |
27+
| docker-compose-orderer-solo.yml | 40 | 4 | 10 | .5 |
28+
| docker-compose-orderer-solo.yml | 60 | 6 | 10 | .5 |
2829

2930
Examples: 1 Kafka Orderer and 1 Kafka Broker
30-
| ComposeFile | SendAck | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
31-
| environments/orderer-1-kafka-1 | true | 20 | 2 | 10 | 5 |
32-
| environments/orderer-1-kafka-1 | true | 40 | 4 | 10 | 5 |
33-
| environments/orderer-1-kafka-1 | true | 60 | 6 | 10 | 5 |
31+
| ComposeFile | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
32+
| environments/orderer-1-kafka-1 | 20 | 2 | 10 | 5 |
33+
| environments/orderer-1-kafka-1 | 40 | 4 | 10 | 5 |
34+
| environments/orderer-1-kafka-1 | 60 | 6 | 10 | 5 |
3435

3536
Examples: 1 Kafka Orderer and 3 Kafka Brokers
36-
| ComposeFile | SendAck | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
37-
| environments/orderer-1-kafka-3 | true | 20 | 2 | 10 | 5 |
38-
| environments/orderer-1-kafka-3 | true | 40 | 4 | 10 | 5 |
39-
| environments/orderer-1-kafka-3 | true | 60 | 6 | 10 | 5 |
37+
| ComposeFile | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
38+
| environments/orderer-1-kafka-3 | 20 | 2 | 10 | 5 |
39+
| environments/orderer-1-kafka-3 | 40 | 4 | 10 | 5 |
40+
| environments/orderer-1-kafka-3 | 60 | 6 | 10 | 5 |
4041

4142
# @doNotDecompose
4243
Scenario Outline: Basic seek orderer function (Utilizing properties for atomic broadcast)
@@ -45,55 +46,56 @@ Feature: Orderer
4546
And I wait "<BootTime>" seconds
4647
And user "binhn" is an authorized user of the ordering service
4748
When user "binhn" broadcasts "<NumMsgsToBroadcast>" unique messages on "orderer0"
48-
And user "binhn" connects to deliver function on "orderer0" with Ack of "<SendAck>" and properties:
49-
| Start | SpecifiedNumber | WindowSize |
50-
| SPECIFIED | 1 | 10 |
49+
And user "binhn" connects to deliver function on "orderer0"
50+
And user "binhn" sends deliver a seek request on "orderer0" with properties:
51+
| Start | End |
52+
| 1 | Newest |
5153
Then user "binhn" should get a delivery from "orderer0" of "<ExpectedBlocks>" blocks with "<NumMsgsToBroadcast>" messages within "<BatchTimeout>" seconds
52-
When user "binhn" seeks to block "1" on deliver function on "orderer0"
54+
When user "binhn" sends deliver a seek request on "orderer0" with properties:
55+
| Start | End |
56+
| 1 | Newest |
5357
Then user "binhn" should get a delivery from "orderer0" of "<ExpectedBlocks>" blocks with "<NumMsgsToBroadcast>" messages within "1" seconds
5458

5559
Examples: Solo Orderer
56-
| ComposeFile | SendAck | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
57-
| docker-compose-orderer-solo.yml | true | 20 | 2 | 10 | .5 |
58-
| docker-compose-orderer-solo.yml | true | 40 | 4 | 10 | .5 |
59-
| docker-compose-orderer-solo.yml | true | 60 | 6 | 10 | .5 |
60+
| ComposeFile | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
61+
| docker-compose-orderer-solo.yml | 20 | 2 | 10 | .5 |
62+
| docker-compose-orderer-solo.yml | 40 | 4 | 10 | .5 |
63+
| docker-compose-orderer-solo.yml | 60 | 6 | 10 | .5 |
6064

6165
Examples: 1 Kafka Orderer and 1 Kafka Broker
62-
| ComposeFile | SendAck | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
63-
| environments/orderer-1-kafka-1 | true | 20 | 2 | 10 | 5 |
64-
| environments/orderer-1-kafka-1 | true | 40 | 4 | 10 | 5 |
65-
| environments/orderer-1-kafka-1 | true | 60 | 6 | 10 | 5 |
66+
| ComposeFile | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
67+
| environments/orderer-1-kafka-1 | 20 | 2 | 10 | 5 |
68+
| environments/orderer-1-kafka-1 | 40 | 4 | 10 | 5 |
69+
| environments/orderer-1-kafka-1 | 60 | 6 | 10 | 5 |
6670

6771
Examples: 1 Kafka Orderer and 3 Kafka Brokers
68-
| ComposeFile | SendAck | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
69-
| environments/orderer-1-kafka-3 | true | 20 | 2 | 10 | 5 |
70-
| environments/orderer-1-kafka-3 | true | 40 | 4 | 10 | 5 |
71-
| environments/orderer-1-kafka-3 | true | 60 | 6 | 10 | 5 |
72+
| ComposeFile | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
73+
| environments/orderer-1-kafka-3 | 20 | 2 | 10 | 5 |
74+
| environments/orderer-1-kafka-3 | 40 | 4 | 10 | 5 |
75+
| environments/orderer-1-kafka-3 | 60 | 6 | 10 | 5 |
7276

7377

7478
# @doNotDecompose
75-
Scenario Outline: Basic orderer function varying ACK
79+
Scenario Outline: Basic orderer function using oldest seek target
7680

7781
Given we compose "<ComposeFile>"
7882
And I wait "<BootTime>" seconds
7983
And user "binhn" is an authorized user of the ordering service
8084
When user "binhn" broadcasts "<NumMsgsToBroadcast>" unique messages on "orderer0"
81-
And user "binhn" connects to deliver function on "orderer0" with Ack of "<SendAck>" and properties:
82-
| Start | SpecifiedNumber | WindowSize |
83-
| SPECIFIED | 1 | 1 |
85+
And user "binhn" connects to deliver function on "orderer0"
86+
And user "binhn" sends deliver a seek request on "orderer0" with properties:
87+
| Start | End |
88+
| Oldest | 2 |
8489
Then user "binhn" should get a delivery from "orderer0" of "<ExpectedBlocks>" blocks with "<NumMsgsToBroadcast>" messages within "<BatchTimeout>" seconds
8590

8691
Examples: Solo Orderer
87-
| ComposeFile | SendAck | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
88-
| docker-compose-orderer-solo.yml | false | 20 | 1 | 10 | .5 |
89-
| docker-compose-orderer-solo.yml | true | 20 | 2 | 10 | .5 |
92+
| ComposeFile | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
93+
| docker-compose-orderer-solo.yml | 20 | 3 | 10 | .5 |
9094

9195
Examples: 1 Kafka Orderer and 1 Kafka Broker
92-
| ComposeFile | SendAck | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
93-
| environments/orderer-1-kafka-1 | false | 20 | 1 | 10 | 5 |
94-
| environments/orderer-1-kafka-1 | true | 20 | 2 | 10 | 5 |
96+
| ComposeFile | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
97+
| environments/orderer-1-kafka-1 | 20 | 3 | 10 | 5 |
9598

9699
Examples: 1 Kafka Orderer and 3 Kafka Brokers
97-
| ComposeFile | SendAck | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
98-
| environments/orderer-1-kafka-3 | false | 20 | 1 | 10 | 5 |
99-
| environments/orderer-1-kafka-3 | true | 20 | 2 | 10 | 5 |
100+
| ComposeFile | NumMsgsToBroadcast | ExpectedBlocks | BatchTimeout | BootTime |
101+
| environments/orderer-1-kafka-3 | 20 | 3 | 10 | 5 |

0 commit comments

Comments
 (0)