parent
59bb568cb9
commit
1c735a3847
@ -1,70 +0,0 @@ |
|||||||
package bcconn |
|
||||||
|
|
||||||
import ( |
|
||||||
"bytes" |
|
||||||
"encoding/gob" |
|
||||||
|
|
||||||
"github.com/harmony-one/harmony/log" |
|
||||||
"github.com/harmony-one/harmony/p2p" |
|
||||||
) |
|
||||||
|
|
||||||
//NodeInfo struct exists to share information on the node
|
|
||||||
type NodeInfo struct { //TODO: to be merged with Leo's nodeinfo.
|
|
||||||
Self p2p.Peer |
|
||||||
PubK []byte |
|
||||||
} |
|
||||||
|
|
||||||
//ResponseRandomNumber struct for exchanging random information
|
|
||||||
type ResponseRandomNumber struct { |
|
||||||
NumberOfShards int |
|
||||||
NumberOfNodesAdded int |
|
||||||
Leaders []*NodeInfo |
|
||||||
} |
|
||||||
|
|
||||||
// SerializeNodeInfo is for serializing nodeinfo
|
|
||||||
func SerializeNodeInfo(nodeinfo *NodeInfo) []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) *NodeInfo { |
|
||||||
var wn NodeInfo |
|
||||||
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,66 +0,0 @@ |
|||||||
package bcconn |
|
||||||
|
|
||||||
import ( |
|
||||||
"fmt" |
|
||||||
"reflect" |
|
||||||
"testing" |
|
||||||
|
|
||||||
"github.com/harmony-one/harmony/p2p" |
|
||||||
"github.com/harmony-one/harmony/utils" |
|
||||||
) |
|
||||||
|
|
||||||
func TestSerializeDeserializeNodeInfo(t *testing.T) { |
|
||||||
var ip, port string |
|
||||||
ip = "127.0.0.1" |
|
||||||
port = "8080" |
|
||||||
self := p2p.Peer{IP: ip, Port: port} |
|
||||||
_, pk := utils.GenKey(ip, port) |
|
||||||
pkb, err := pk.MarshalBinary() |
|
||||||
if err != nil { |
|
||||||
fmt.Println("problem marshalling binary from public key") |
|
||||||
} |
|
||||||
nodeInfo := &NodeInfo{Self: self, PubK: 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" |
|
||||||
self := p2p.Peer{IP: ip, Port: port} |
|
||||||
_, pk := utils.GenKey(ip, port) |
|
||||||
pkb, err := pk.MarshalBinary() |
|
||||||
if err != nil { |
|
||||||
fmt.Println("problem marshalling binary from public key") |
|
||||||
} |
|
||||||
nodeInfo1 := &NodeInfo{Self: self, PubK: pkb} |
|
||||||
|
|
||||||
ip = "127.0.0.1" |
|
||||||
port = "9080" |
|
||||||
self2 := p2p.Peer{IP: ip, Port: port} |
|
||||||
_, pk2 := utils.GenKey(ip, port) |
|
||||||
pkb2, err := pk2.MarshalBinary() |
|
||||||
if err != nil { |
|
||||||
fmt.Println("problem marshalling binary from public key") |
|
||||||
} |
|
||||||
nodeInfo2 := &NodeInfo{Self: self2, PubK: pkb2} |
|
||||||
|
|
||||||
leaders := make([]*NodeInfo, 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