Skip to content

Commit

Permalink
causal broadcast initial tests
Browse files Browse the repository at this point in the history
  • Loading branch information
aliparlakci committed Feb 6, 2023
1 parent 40c0fc1 commit 4386056
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 2 deletions.
81 changes: 81 additions & 0 deletions broadcast/causal_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package broadcast

import (
"testing"
"time"
)

func TestCausalBroadcast(t *testing.T) {
peer_addrs := []string{"localhost:9991", "localhost:9992"}
messages := [][]byte{randStringBytes(2 << 23), []byte("hello gofret!")}
incoming_channels := []chan []byte{make(chan []byte), make(chan []byte)}
done_signal := make(chan bool)
ready_signal := make(chan bool)

emitter_routine := func(address string, messages [][]byte, incoming_channel chan []byte, done chan bool) {
broadcaster := CausalBroadcast(Configuration{
SelfAddress: address,
PeerAddresses: peer_addrs,
})

incoming_messages, err := broadcaster.Init()
if err != nil {
t.Errorf("%v", err)
}

go func() {
for {
incoming_channel <- <-incoming_messages
}
}()

for _, message := range messages {
if err := broadcaster.Broadcast(message); err != nil {
t.Errorf("cannot broadcast: %v", err)
}
}

done <- true
}

receiver_routine := func(address string, incoming_channel chan []byte, ready chan bool) {
broadcaster := CausalBroadcast(Configuration{
SelfAddress: address,
PeerAddresses: peer_addrs,
})

incoming_messages, err := broadcaster.Init()
if err != nil {
t.Errorf("%v", err)
}

go func() {
for {
incoming_channel <- <-incoming_messages
}
}()
ready_signal <- true
}

go receiver_routine(peer_addrs[0], incoming_channels[0], ready_signal)
<-ready_signal

go emitter_routine(peer_addrs[1], messages, incoming_channels[1], done_signal)
<-done_signal

timeout := time.After(30000 * time.Millisecond)
select {
case incoming_message := <-incoming_channels[0]:
if string(incoming_message[:len(messages[1])-1]) == string(messages[1]) {
t.Errorf("order is not correct")
return
}
case incoming_message := <-incoming_channels[1]:
if string(incoming_message[:len(messages[1])-1]) == string(messages[1]) {
t.Errorf("order is not correct")
return
}
case <-timeout:
t.Errorf("timed out")
}
}
4 changes: 2 additions & 2 deletions broadcast/fifo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (

const letter_bytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

func RandStringBytes(length int) []byte {
func randStringBytes(length int) []byte {
bytes_array := make([]byte, length)
for i := range bytes_array {
bytes_array[i] = letter_bytes[rand.Intn(len(letter_bytes))]
Expand All @@ -18,7 +18,7 @@ func RandStringBytes(length int) []byte {

func TestFIFOBroadcast(t *testing.T) {
peer_addrs := []string{"localhost:9991", "localhost:9992"}
messages := [][]byte{RandStringBytes(2 << 23), []byte("hello gofret!")}
messages := [][]byte{randStringBytes(2 << 23), []byte("hello gofret!")}
incoming_channels := []chan []byte{make(chan []byte), make(chan []byte)}
done_signal := make(chan bool)
ready_signal := make(chan bool)
Expand Down

0 comments on commit 4386056

Please sign in to comment.