diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2019-01-09 15:32:08 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@dexon.org> | 2019-01-09 15:32:08 +0800 |
commit | 25018527ec18ec2830801983d19e63a0ebf7b263 (patch) | |
tree | 6c6f1bc251b24da1fd9d6df7375f931fbae35a00 /core/test/fake-transport.go | |
parent | c62ce07468cea07035ddcad3c89b0a5c0b25746a (diff) | |
download | tangerine-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.go | 29 |
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 |