aboutsummaryrefslogtreecommitdiffstats
path: root/core/test/fake-transport.go
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-01-09 15:32:08 +0800
committerWei-Ning Huang <w@dexon.org>2019-01-09 15:32:08 +0800
commit25018527ec18ec2830801983d19e63a0ebf7b263 (patch)
tree6c6f1bc251b24da1fd9d6df7375f931fbae35a00 /core/test/fake-transport.go
parentc62ce07468cea07035ddcad3c89b0a5c0b25746a (diff)
downloadtangerine-consensus-25018527ec18ec2830801983d19e63a0ebf7b263.tar
tangerine-consensus-25018527ec18ec2830801983d19e63a0ebf7b263.tar.gz
tangerine-consensus-25018527ec18ec2830801983d19e63a0ebf7b263.tar.bz2
tangerine-consensus-25018527ec18ec2830801983d19e63a0ebf7b263.tar.lz
tangerine-consensus-25018527ec18ec2830801983d19e63a0ebf7b263.tar.xz
tangerine-consensus-25018527ec18ec2830801983d19e63a0ebf7b263.tar.zst
tangerine-consensus-25018527ec18ec2830801983d19e63a0ebf7b263.zip
simulation: fix k8s dmoment issue (#416)
* Handshake with server dmoment * Start simulation from dMoment * Update k8s config
Diffstat (limited to 'core/test/fake-transport.go')
-rw-r--r--core/test/fake-transport.go29
1 files changed, 25 insertions, 4 deletions
diff --git a/core/test/fake-transport.go b/core/test/fake-transport.go
index 056c3d5..fe19fdf 100644
--- a/core/test/fake-transport.go
+++ b/core/test/fake-transport.go
@@ -30,6 +30,11 @@ type fakePeerRecord struct {
pubKey crypto.PublicKey
}
+type fakeHandshake struct {
+ dMoment time.Time
+ peers map[types.NodeID]fakePeerRecord
+}
+
// FakeTransport implement TransportServer and TransportClient interface
// by using golang channel.
type FakeTransport struct {
@@ -39,6 +44,7 @@ type FakeTransport struct {
recvChannel chan *TransportEnvelope
serverChannel chan<- *TransportEnvelope
peers map[types.NodeID]fakePeerRecord
+ dMoment time.Time
}
// NewFakeTransportServer constructs FakeTransport instance for peer server.
@@ -137,9 +143,10 @@ func (t *FakeTransport) Join(
envelopes = append(envelopes, envelope)
continue
}
- if t.peers, ok =
- envelope.Msg.(map[types.NodeID]fakePeerRecord); !ok {
-
+ if handShake, ok := envelope.Msg.(fakeHandshake); ok {
+ t.dMoment = handShake.dMoment
+ t.peers = handShake.peers
+ } else {
envelopes = append(envelopes, envelope)
continue
}
@@ -151,11 +158,21 @@ func (t *FakeTransport) Join(
return t.recvChannel, nil
}
+// DMoment implments TrnansportClient.DMoment method.
+func (t *FakeTransport) DMoment() time.Time {
+ return t.dMoment
+}
+
// Host implements TransportServer.Host method.
func (t *FakeTransport) Host() (chan *TransportEnvelope, error) {
return t.recvChannel, nil
}
+// SetDMoment implements TransportServer.SetDMoment method.
+func (t *FakeTransport) SetDMoment(dMoment time.Time) {
+ t.dMoment = dMoment
+}
+
// WaitForPeers implements TransportServer.WaitForPeers method.
func (t *FakeTransport) WaitForPeers(numPeers uint32) (err error) {
t.peers = make(map[types.NodeID]fakePeerRecord)
@@ -177,7 +194,11 @@ func (t *FakeTransport) WaitForPeers(numPeers uint32) (err error) {
for ID := range t.peers {
peers[ID] = struct{}{}
}
- if err = t.Broadcast(peers, &FixedLatencyModel{}, t.peers); err != nil {
+ handShake := fakeHandshake{
+ dMoment: t.dMoment,
+ peers: t.peers,
+ }
+ if err = t.Broadcast(peers, &FixedLatencyModel{}, handShake); err != nil {
return
}
return