parent
5105d65e55
commit
0a12dfb626
@ -1,65 +0,0 @@ |
||||
package bcconn |
||||
|
||||
import ( |
||||
"bytes" |
||||
"encoding/gob" |
||||
|
||||
"github.com/ethereum/go-ethereum/log" |
||||
|
||||
"github.com/harmony-one/harmony/api/proto/node" |
||||
) |
||||
|
||||
//ResponseRandomNumber struct for exchanging random information
|
||||
type ResponseRandomNumber struct { |
||||
NumberOfShards int |
||||
NumberOfNodesAdded int |
||||
Leaders []*node.Info |
||||
} |
||||
|
||||
// SerializeNodeInfo is for serializing nodeinfo
|
||||
func SerializeNodeInfo(nodeinfo *node.Info) []byte { |
||||
var result bytes.Buffer |
||||
encoder := gob.NewEncoder(&result) |
||||
err := encoder.Encode(nodeinfo) |
||||
if err != nil { |
||||
log.Error("Could not serialize node info", err) |
||||
} |
||||
return result.Bytes() |
||||
} |
||||
|
||||
// DeserializeNodeInfo deserializes the nodeinfo
|
||||
func DeserializeNodeInfo(d []byte) *node.Info { |
||||
var wn node.Info |
||||
r := bytes.NewBuffer(d) |
||||
decoder := gob.NewDecoder(r) |
||||
err := decoder.Decode(&wn) |
||||
if err != nil { |
||||
log.Error("Could not de-serialize node info", err) |
||||
} |
||||
return &wn |
||||
} |
||||
|
||||
// SerializeRandomInfo serializes random number informations
|
||||
func SerializeRandomInfo(response ResponseRandomNumber) []byte { |
||||
//Needs to escape the serialization of unexported fields
|
||||
var result bytes.Buffer |
||||
encoder := gob.NewEncoder(&result) |
||||
err := encoder.Encode(response) |
||||
if err != nil { |
||||
log.Crit("Could not serialize randomn number information", "error", err) |
||||
} |
||||
|
||||
return result.Bytes() |
||||
} |
||||
|
||||
// DeserializeRandomInfo deserializes the random informations
|
||||
func DeserializeRandomInfo(d []byte) ResponseRandomNumber { |
||||
var wn ResponseRandomNumber |
||||
r := bytes.NewBuffer(d) |
||||
decoder := gob.NewDecoder(r) |
||||
err := decoder.Decode(&wn) |
||||
if err != nil { |
||||
log.Crit("Could not de-serialize random number information") |
||||
} |
||||
return wn |
||||
} |
@ -1,54 +0,0 @@ |
||||
package bcconn |
||||
|
||||
import ( |
||||
"fmt" |
||||
"reflect" |
||||
"testing" |
||||
|
||||
"github.com/harmony-one/harmony/api/proto/node" |
||||
"github.com/harmony-one/harmony/internal/utils" |
||||
) |
||||
|
||||
func TestSerializeDeserializeNodeInfo(t *testing.T) { |
||||
var ip, port string |
||||
ip = "127.0.0.1" |
||||
port = "8080" |
||||
_, pk := utils.GenKey(ip, port) |
||||
pkb := pk.Serialize() |
||||
nodeInfo := &node.Info{IP: ip, Port: port, PubKey: pkb} |
||||
serializedNI := SerializeNodeInfo(nodeInfo) |
||||
deserializedNI := DeserializeNodeInfo(serializedNI) |
||||
if !reflect.DeepEqual(nodeInfo, deserializedNI) { |
||||
t.Fatalf("serialized and deserializing nodeinfo does not lead to origina nodeinfo") |
||||
} |
||||
|
||||
} |
||||
|
||||
func TestSerializeDeserializeRandomInfo(t *testing.T) { |
||||
var ip, port string |
||||
|
||||
ip = "127.0.0.1" |
||||
port = "8080" |
||||
_, pk := utils.GenKey(ip, port) |
||||
pkb := pk.Serialize() |
||||
nodeInfo1 := &node.Info{IP: ip, Port: port, PubKey: pkb} |
||||
|
||||
ip = "127.0.0.1" |
||||
port = "9080" |
||||
_, pk2 := utils.GenKey(ip, port) |
||||
pkb2 := pk2.Serialize() |
||||
nodeInfo2 := &node.Info{IP: ip, Port: port, PubKey: pkb2} |
||||
|
||||
leaders := make([]*node.Info, 2) |
||||
leaders[0] = nodeInfo1 |
||||
leaders[1] = nodeInfo2 |
||||
|
||||
rrn := ResponseRandomNumber{NumberOfShards: 5, NumberOfNodesAdded: 10, Leaders: leaders} |
||||
serializedrrn := SerializeRandomInfo(rrn) |
||||
deserializedrrn := DeserializeRandomInfo(serializedrrn) |
||||
fmt.Println(rrn) |
||||
fmt.Println(deserializedrrn) |
||||
if !reflect.DeepEqual(rrn, deserializedrrn) { |
||||
t.Fatalf("serializin g and deserializing random response does not lead to original randominfo") |
||||
} |
||||
} |
Loading…
Reference in new issue