Skip to content

Commit c4574d3

Browse files
authored
prepareTx now in armageddon, made several changes (#216)
Signed-off-by: Genady Gurevich <genadyg@il.ibm.com>
1 parent 422e2ba commit c4574d3

File tree

6 files changed

+15
-38
lines changed

6 files changed

+15
-38
lines changed

common/tools/armageddon/armageddon.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -857,7 +857,7 @@ func pullBlock(stream ab.AtomicBroadcast_DeliverClient, endpointToPullFrom strin
857857
}
858858

859859
func sendTx(txsMap *protectedMap, streams []ab.AtomicBroadcast_BroadcastClient, i int, txSize int, sessionNumber []byte) {
860-
data := prepareTx(i, txSize, sessionNumber)
860+
data := PrepareTx(i, txSize, sessionNumber)
861861
if txsMap != nil {
862862
logger.Debugf("Add tx %x to the map", data)
863863
txsMap.Add(string(data))
@@ -871,16 +871,16 @@ func sendTx(txsMap *protectedMap, streams []ab.AtomicBroadcast_BroadcastClient,
871871
}
872872
}
873873

874-
func prepareTx(txNumber int, txSize int, sessionNumber []byte) []byte {
874+
func PrepareTx(txNumber int, txSize int, sessionNumber []byte) []byte {
875875
// create timestamp (8 bytes)
876876
timeStamp := uint64(time.Now().UnixNano())
877877

878878
// prepare the payload
879879
buffer := make([]byte, txSize)
880880
buff := bytes.NewBuffer(buffer[:0])
881-
buff.Write(sessionNumber)
882881
binary.Write(buff, binary.BigEndian, uint64(txNumber))
883882
binary.Write(buff, binary.BigEndian, timeStamp)
883+
buff.Write(sessionNumber)
884884
result := buff.Bytes()
885885
if len(buff.Bytes()) < txSize {
886886
padding := make([]byte, txSize-len(result))

test/assembler_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ func TestSubmitStopThenRestartAssembler(t *testing.T) {
133133

134134
err = dc.PullBlocks(toCtx, partyToRestart, 0, math.MaxUint64, handler)
135135
require.ErrorContains(t, err, "cancelled pull from assembler: 3")
136-
require.Equal(t, uint64(transactions*2), totalTxs)
136+
require.GreaterOrEqual(t, totalTxs, uint64(transactions*2))
137137

138138
t.Logf("Finished pull and count: %d, %d", totalBlocks, totalTxs)
139139
}

test/basic_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func TestSubmitAndReceive(t *testing.T) {
107107
for i := 0; i < totalTxNumber; i++ {
108108
status := rl.GetToken()
109109
require.True(t, status)
110-
txContent := prepareTx(i, 64, []byte("sessionNumber"))
110+
txContent := armageddon.PrepareTx(i, 64, []byte("sessionNumber"))
111111
err = broadcastClient.SendTx(txContent)
112112
require.NoError(t, err)
113113
}

test/batcher_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func TestPrimaryBatcherRestartRecover(t *testing.T) {
9393
fmt.Fprintf(os.Stderr, "failed to send tx %d", i+1)
9494
os.Exit(3)
9595
}
96-
txContent := prepareTx(i, 64, []byte("sessionNumber"))
96+
txContent := armageddon.PrepareTx(i, 64, []byte("sessionNumber"))
9797
err = broadcastClient.SendTx(txContent)
9898
require.NoError(t, err)
9999
}
@@ -141,7 +141,7 @@ func TestPrimaryBatcherRestartRecover(t *testing.T) {
141141
fmt.Fprintf(os.Stderr, "failed to send tx %d", i+1)
142142
os.Exit(3)
143143
}
144-
txContent := prepareTx(totalTxSent+i, 64, []byte("sessionNumber"))
144+
txContent := armageddon.PrepareTx(totalTxSent+i, 64, []byte("sessionNumber"))
145145
err = broadcastClient.SendTx(txContent)
146146
if err != nil {
147147
require.ErrorContains(t, err, fmt.Sprintf("received error response from %s: INTERNAL_SERVER_ERROR", routerToStall.Listener.Addr().String()))
@@ -205,7 +205,7 @@ func TestPrimaryBatcherRestartRecover(t *testing.T) {
205205
fmt.Fprintf(os.Stderr, "failed to send tx %d", i+1)
206206
os.Exit(3)
207207
}
208-
txContent := prepareTx(totalTxSent+i, 64, []byte("sessionNumber"))
208+
txContent := armageddon.PrepareTx(totalTxSent+i, 64, []byte("sessionNumber"))
209209
err = broadcastClient.SendTx(txContent)
210210
if err != nil {
211211
fmt.Fprintf(os.Stderr, "failed to send tx %d: %v", totalTxSent+i, err)
@@ -303,7 +303,7 @@ func TestSecondaryBatcherRestartRecover(t *testing.T) {
303303
fmt.Fprintf(os.Stderr, "failed to send tx %d", i+1)
304304
os.Exit(3)
305305
}
306-
txContent := prepareTx(i, 64, []byte("sessionNumber"))
306+
txContent := armageddon.PrepareTx(i, 64, []byte("sessionNumber"))
307307
err = broadcastClient.SendTx(txContent)
308308
require.NoError(t, err)
309309
}
@@ -362,7 +362,7 @@ func TestSecondaryBatcherRestartRecover(t *testing.T) {
362362
fmt.Fprintf(os.Stderr, "failed to send tx %d", i+1)
363363
os.Exit(3)
364364
}
365-
txContent := prepareTx(totalTxSent+i, 64, []byte("sessionNumber"))
365+
txContent := armageddon.PrepareTx(totalTxSent+i, 64, []byte("sessionNumber"))
366366
err = broadcastClient.SendTx(txContent)
367367
if err != nil {
368368
require.ErrorContains(t, err, fmt.Sprintf("received error response from %s: INTERNAL_SERVER_ERROR", routerToStall.Listener.Addr().String()))
@@ -420,7 +420,7 @@ func TestSecondaryBatcherRestartRecover(t *testing.T) {
420420
fmt.Fprintf(os.Stderr, "failed to send tx %d", i+1)
421421
os.Exit(3)
422422
}
423-
txContent := prepareTx(totalTxSent+i, 64, []byte("sessionNumber"))
423+
txContent := armageddon.PrepareTx(totalTxSent+i, 64, []byte("sessionNumber"))
424424
err = broadcastClient.SendTx(txContent)
425425
if err != nil {
426426
require.ErrorContains(t, err, fmt.Sprintf("received error response from %s: INTERNAL_SERVER_ERROR", routerToStall.Listener.Addr().String())) // only such errors are permitted

test/tx_client_test.go

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ SPDX-License-Identifier: Apache-2.0
77
package test
88

99
import (
10-
"bytes"
1110
"context"
12-
"encoding/binary"
1311
"os"
1412
"path/filepath"
1513
"testing"
@@ -36,8 +34,7 @@ func TestTxClientSend(t *testing.T) {
3634
listeners := testutil.CreateNetwork(t, configPath, 4, 2, "none", "none")
3735
require.NoError(t, err)
3836
// 2.
39-
armageddon := armageddon.NewCLI()
40-
armageddon.Run([]string{"generate", "--config", configPath, "--output", dir})
37+
armageddon.NewCLI().Run([]string{"generate", "--config", configPath, "--output", dir})
4138

4239
// 3.
4340
// compile arma
@@ -61,7 +58,7 @@ func TestTxClientSend(t *testing.T) {
6158
defer broadcastClient.Stop()
6259
require.NoError(t, err)
6360
for i := 0; i < totalTxNumber; i++ {
64-
txContent := prepareTx(i, 100, []byte("sessionNumber"))
61+
txContent := armageddon.PrepareTx(i, 100, []byte("sessionNumber"))
6562
err = broadcastClient.SendTx(txContent)
6663
require.NoError(t, err)
6764
}
@@ -90,21 +87,3 @@ func TestTxClientSend(t *testing.T) {
9087
assert.True(t, totalBlocks > 2)
9188
t.Logf("Finished pull and count: %d, %d", totalBlocks, totalTxs)
9289
}
93-
94-
func prepareTx(txNumber int, txSize int, sessionNumber []byte) []byte {
95-
// create timestamp (8 bytes)
96-
timeStamp := uint64(time.Now().UnixNano())
97-
98-
// prepare the payload
99-
buffer := make([]byte, txSize)
100-
buff := bytes.NewBuffer(buffer[:0])
101-
binary.Write(buff, binary.BigEndian, uint64(txNumber))
102-
binary.Write(buff, binary.BigEndian, timeStamp)
103-
buff.Write(sessionNumber)
104-
result := buff.Bytes()
105-
if len(buff.Bytes()) < txSize {
106-
padding := make([]byte, txSize-len(result))
107-
result = append(result, padding...)
108-
}
109-
return result
110-
}

test/utils_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -451,17 +451,15 @@ func pullFromAssembler(t *testing.T, userConfig *armageddon.UserConfig, partyID
451451
for i := 0; i < transactionsNumber; i++ {
452452
envelope, err := protoutil.UnmarshalEnvelope(data[i])
453453
if err != nil {
454-
t.Fatalf("error unmarshalling envelope: %s", err)
454+
t.Errorf("failed to unmarshal envelope %v", err)
455+
toCancel()
455456
}
456457

457458
if needVerification && transactions > 0 {
458459
data, err := tx.GetDataFromEnvelope(envelope)
459460
require.NoError(t, err)
460461
require.NotNil(t, data)
461462
txNumber := binary.BigEndian.Uint64(data[0:8])
462-
if txNumber >= uint64(transactions) {
463-
t.Fatalf("invalid tx number: %d", txNumber)
464-
}
465463
// count only unique txs
466464
if m[txNumber] == 0 {
467465
totalTxs++

0 commit comments

Comments
 (0)