Untitled
unknown
golang
a year ago
2.9 kB
7
No Index
func TestSendStoreMessage(t *testing.T) {
// Set up the receiver node and its network
receiverPort, err := tests.GetFreePort()
assert.NoError(t, err, "Failed to get a free port")
receiverDht := dht.NewDHT(24*time.Hour, []byte("1234567890abcdef"), "2", "127.0.0.1", receiverPort)
receiverStore := storage.NewStorage(24*time.Hour, []byte("1234567890abcdef"))
receiverNode := &node.Node{
IP: "127.0.0.1",
Port: receiverPort,
Storage: receiverStore,
DHT: receiverDht,
}
// Set up the sender node and its network
senderPort, err := tests.GetFreePort()
assert.NoError(t, err, "Failed to get a free port")
senderDht := dht.NewDHT(24*time.Hour, []byte("1234567890abcdef"), "2", "127.0.0.2", senderPort)
senderStore := storage.NewStorage(24*time.Hour, []byte("1234567890abcdef"))
senderNode := &node.Node{
IP: "127.0.0.2",
Port: senderPort,
Storage: senderStore,
DHT: senderDht,
}
network_sender := message.NewNetwork(receiverNode.IP, receiverNode.ID, receiverNode.Port)
log.Print("Receiver port:", receiverPort)
// Start the receiver node's network listening for messages
go func() {
err := network_sender.StartListening()
assert.NoError(t, err)
log.Print("Receiver is listening")
}()
time.Sleep(2 * time.Second)
network_receiver := message.NewNetwork(senderNode.IP, senderNode.ID, senderNode.Port)
log.Print("Sender port:", senderPort)
go func() {
err := network_receiver.StartListening()
assert.NoError(t, err)
log.Print("Sender is listening")
}()
time.Sleep(2 * time.Second)
senderDht.Network = network_receiver
receiverDht.Network = network_sender
go func() {
err := api.StartServer(receiverNode.IP+":"+fmt.Sprint(receiverPort), receiverNode)
assert.NoError(t, err, "Failed to start API server")
}()
time.Sleep(2 * time.Second)
go func() {
err := api.StartServer(senderNode.IP+":"+fmt.Sprint(senderPort), senderNode)
assert.NoError(t, err, "Failed to start API server")
}()
time.Sleep(2 * time.Second)
key := "testkey"
value := "testvalue"
receiverKNode := dht.KNode{
ID: receiverNode.ID,
IP: receiverNode.IP,
Port: receiverPort,
}
storeMessageResponse, err := senderDht.SendStoreMessage(key, value, receiverKNode)
if err != nil {
log.Print("Send store message error")
}
//cast storeMessageResponse to DHTSuccessMessage
log.Print("Store message response msg typeXXXXXX:", storeMessageResponse.GetType())
assert.Equal(t, message.DHT_SUCCESS, storeMessageResponse.GetType(), "The response message should be a success message")
// Check if the value exists in the storage
retrievedValue, _, err := receiverNode.DHT.GET(key)
log.Print("Retrieved value:", retrievedValue)
assert.NoError(t, err, "GET should not return an error")
assert.Equal(t, value, retrievedValue, "The value retrieved should match the value stored")
}Editor is loading...
Leave a Comment