Skip to content

Commit 01a74c3

Browse files
committed
Remove dependency on activation/wire from sql/identities
1 parent a28991f commit 01a74c3

File tree

12 files changed

+121
-149
lines changed

12 files changed

+121
-149
lines changed

activation/handler_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,8 @@ func testHandler_PostMalfeasanceProofs(t *testing.T, synced bool) {
231231
sig, err := signing.NewEdSigner()
232232
require.NoError(t, err)
233233

234-
_, err = identities.GetMalfeasanceProof(atxHdlr.cdb, sig.NodeID())
234+
var blob sql.Blob
235+
err = identities.LoadMalfeasanceBlob(context.Background(), atxHdlr.cdb, sig.NodeID().Bytes(), &blob)
235236
require.ErrorIs(t, err, sql.ErrNotFound)
236237

237238
atx := newInitialATXv1(t, goldenATXID)
@@ -280,10 +281,10 @@ func testHandler_PostMalfeasanceProofs(t *testing.T, synced bool) {
280281
require.ErrorIs(t, atxHdlr.HandleGossipAtx(context.Background(), p2p.NoPeer, msg), errMaliciousATX)
281282
}
282283

283-
proof, err := identities.GetMalfeasanceProof(atxHdlr.cdb, atx.SmesherID)
284+
err = identities.LoadMalfeasanceBlob(context.Background(), atxHdlr.cdb, atx.SmesherID.Bytes(), &blob)
284285
require.NoError(t, err)
285-
require.NotNil(t, proof.Received())
286-
proof.SetReceived(time.Time{})
286+
proof := &mwire.MalfeasanceProof{}
287+
codec.MustDecode(blob.Bytes, proof)
287288
if !synced {
288289
require.Equal(t, got.MalfeasanceProof, *proof)
289290
require.Equal(t, atx.PublishEpoch.FirstLayer(), got.MalfeasanceProof.Layer)
@@ -435,13 +436,12 @@ func testHandler_HandleDoublePublish(t *testing.T, synced bool) {
435436
require.ErrorIs(t, hdlr.HandleGossipAtx(context.Background(), p2p.NoPeer, msg), errMaliciousATX)
436437
}
437438

438-
proof, err := identities.GetMalfeasanceProof(hdlr.cdb, sig.NodeID())
439+
var blob sql.Blob
440+
err = identities.LoadMalfeasanceBlob(context.Background(), hdlr.cdb, sig.NodeID().Bytes(), &blob)
439441
require.NoError(t, err)
440-
require.NotNil(t, proof)
441-
if !synced {
442-
proof.SetReceived(time.Time{})
443-
require.Equal(t, got.MalfeasanceProof, *proof)
444-
}
442+
proof := &mwire.MalfeasanceProof{}
443+
codec.MustDecode(blob.Bytes, proof)
444+
require.Equal(t, got.MalfeasanceProof, *proof)
445445
}
446446

447447
func TestHandler_HandleMaliciousAtx(t *testing.T) {

api/grpcserver/activation_service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func (s *activationService) Get(ctx context.Context, request *pb.GetRequest) (*p
7272
return nil, status.Error(codes.Internal, "couldn't get previous ATXs")
7373
}
7474

75-
proof, err := s.atxProvider.GetMalfeasanceProof(atx.SmesherID)
75+
proof, err := s.atxProvider.MalfeasanceProof(atx.SmesherID)
7676
if err != nil && !errors.Is(err, sql.ErrNotFound) {
7777
ctxzap.Error(ctx, "failed to get malfeasance proof",
7878
zap.Stringer("smesher", atx.SmesherID),

api/grpcserver/activation_service_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ func TestGet_HappyPath(t *testing.T) {
133133
}
134134
atx.SetID(id)
135135
atxProvider.EXPECT().GetAtx(id).Return(&atx, nil)
136-
atxProvider.EXPECT().GetMalfeasanceProof(gomock.Any()).Return(nil, sql.ErrNotFound)
136+
atxProvider.EXPECT().MalfeasanceProof(gomock.Any()).Return(nil, sql.ErrNotFound)
137137
atxProvider.EXPECT().Previous(id).Return(previous, nil)
138138

139139
response, err := activationService.Get(context.Background(), &pb.GetRequest{Id: id.Bytes()})
@@ -169,7 +169,7 @@ func TestGet_IdentityCanceled(t *testing.T) {
169169
}
170170
atx.SetID(id)
171171
atxProvider.EXPECT().GetAtx(id).Return(&atx, nil)
172-
atxProvider.EXPECT().GetMalfeasanceProof(smesher).Return(proof, nil)
172+
atxProvider.EXPECT().MalfeasanceProof(smesher).Return(proof, nil)
173173
atxProvider.EXPECT().Previous(id).Return([]types.ATXID{previous}, nil)
174174

175175
response, err := activationService.Get(context.Background(), &pb.GetRequest{Id: id.Bytes()})

api/grpcserver/interface.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ type atxProvider interface {
5858
GetAtx(id types.ATXID) (*types.ActivationTx, error)
5959
Previous(id types.ATXID) ([]types.ATXID, error)
6060
MaxHeightAtx() (types.ATXID, error)
61-
GetMalfeasanceProof(id types.NodeID) (*wire.MalfeasanceProof, error)
61+
MalfeasanceProof(id types.NodeID) (*wire.MalfeasanceProof, error)
6262
}
6363

6464
type postState interface {

api/grpcserver/mesh_service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ func (s *MeshService) MalfeasanceQuery(
611611
fmt.Sprintf("invalid smesher id length (%d), expected (%d)", l, types.NodeIDSize))
612612
}
613613
id := types.BytesToNodeID(parsed)
614-
proof, err := s.cdb.GetMalfeasanceProof(id)
614+
proof, err := s.cdb.MalfeasanceProof(id)
615615
if err != nil && !errors.Is(err, sql.ErrNotFound) {
616616
return nil, status.Error(codes.Internal, err.Error())
617617
}

api/grpcserver/mocks.go

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

datastore/store.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"go.uber.org/zap"
1111

1212
"github.com/spacemeshos/go-spacemesh/atxsdata"
13+
"github.com/spacemeshos/go-spacemesh/codec"
1314
"github.com/spacemeshos/go-spacemesh/common/types"
1415
"github.com/spacemeshos/go-spacemesh/malfeasance/wire"
1516
"github.com/spacemeshos/go-spacemesh/proposals/store"
@@ -119,7 +120,7 @@ func (db *CachedDB) MalfeasanceCacheSize() int {
119120
}
120121

121122
// GetMalfeasanceProof gets the malfeasance proof associated with the NodeID.
122-
func (db *CachedDB) GetMalfeasanceProof(id types.NodeID) (*wire.MalfeasanceProof, error) {
123+
func (db *CachedDB) MalfeasanceProof(id types.NodeID) (*wire.MalfeasanceProof, error) {
123124
if id == types.EmptyNodeID {
124125
panic("invalid argument to GetMalfeasanceProof")
125126
}
@@ -133,10 +134,13 @@ func (db *CachedDB) GetMalfeasanceProof(id types.NodeID) (*wire.MalfeasanceProof
133134
return proof, nil
134135
}
135136

136-
proof, err := identities.GetMalfeasanceProof(db.Database, id)
137+
var blob sql.Blob
138+
err := identities.LoadMalfeasanceBlob(context.Background(), db.Database, id.Bytes(), &blob)
137139
if err != nil && err != sql.ErrNotFound {
138140
return nil, err
139141
}
142+
proof := &wire.MalfeasanceProof{}
143+
codec.MustDecode(blob.Bytes, proof)
140144
db.malfeasanceCache.Add(id, proof)
141145
return proof, err
142146
}
@@ -203,7 +207,7 @@ func (db *CachedDB) IterateMalfeasanceProofs(
203207
return err
204208
}
205209
for _, id := range ids {
206-
proof, err := db.GetMalfeasanceProof(id)
210+
proof, err := db.MalfeasanceProof(id)
207211
if err != nil {
208212
return err
209213
}

datastore/store_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func TestMalfeasanceProof_Dishonest(t *testing.T) {
7474
cdb.CacheMalfeasanceProof(nodeID1, proof)
7575
require.Equal(t, 1, cdb.MalfeasanceCacheSize())
7676

77-
got, err := cdb.GetMalfeasanceProof(nodeID1)
77+
got, err := cdb.MalfeasanceProof(nodeID1)
7878
require.NoError(t, err)
7979
require.EqualValues(t, proof, got)
8080
}

malfeasance/handler_test.go

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,9 @@ func TestHandler_HandleMalfeasanceProof(t *testing.T) {
146146
err := h.HandleMalfeasanceProof(context.Background(), "peer", codec.MustEncode(gossip))
147147
require.NoError(t, err)
148148

149-
malProof, err := identities.GetMalfeasanceProof(h.db, nodeID)
150-
require.NoError(t, err)
151-
require.NotEqual(t, gossip.MalfeasanceProof, *malProof)
149+
var blob sql.Blob
150+
require.NoError(t, identities.LoadMalfeasanceBlob(context.Background(), h.db, nodeID.Bytes(), &blob))
151+
require.Equal(t, codec.MustEncode(&gossip.MalfeasanceProof), blob.Bytes)
152152
})
153153

154154
t.Run("new proof is noop", func(t *testing.T) {
@@ -187,9 +187,10 @@ func TestHandler_HandleMalfeasanceProof(t *testing.T) {
187187
err := h.HandleMalfeasanceProof(context.Background(), "peer", codec.MustEncode(gossip))
188188
require.ErrorIs(t, ErrKnownProof, err)
189189

190-
malProof, err := identities.GetMalfeasanceProof(h.db, nodeID)
191-
require.NoError(t, err)
192-
malProof.SetReceived(time.Time{})
190+
var blob sql.Blob
191+
require.NoError(t, identities.LoadMalfeasanceBlob(context.Background(), h.db, nodeID.Bytes(), &blob))
192+
malProof := &wire.MalfeasanceProof{}
193+
codec.MustDecode(blob.Bytes, malProof)
193194
require.Equal(t, proof, malProof)
194195
})
195196
}
@@ -318,19 +319,15 @@ func TestHandler_HandleSyncedMalfeasanceProof(t *testing.T) {
318319
Data: &wire.AtxProof{},
319320
},
320321
}
322+
proofBytes := codec.MustEncode(proof)
321323

322324
h.mockTrt.EXPECT().OnMalfeasance(nodeID)
323-
err := h.HandleSyncedMalfeasanceProof(
324-
context.Background(),
325-
types.Hash32(nodeID),
326-
"peer",
327-
codec.MustEncode(proof),
328-
)
325+
err := h.HandleSyncedMalfeasanceProof(context.Background(), types.Hash32(nodeID), "peer", proofBytes)
329326
require.NoError(t, err)
330327

331-
malProof, err := identities.GetMalfeasanceProof(h.db, nodeID)
332-
require.NoError(t, err)
333-
require.NotEqual(t, proof, *malProof)
328+
var blob sql.Blob
329+
require.NoError(t, identities.LoadMalfeasanceBlob(context.Background(), h.db, nodeID.Bytes(), &blob))
330+
require.Equal(t, proofBytes, blob.Bytes)
334331
})
335332

336333
t.Run("new proof is noop", func(t *testing.T) {
@@ -344,7 +341,8 @@ func TestHandler_HandleSyncedMalfeasanceProof(t *testing.T) {
344341
Data: &wire.BallotProof{},
345342
},
346343
}
347-
identities.SetMalicious(h.db, nodeID, codec.MustEncode(proof), time.Now())
344+
proofBytes := codec.MustEncode(proof)
345+
identities.SetMalicious(h.db, nodeID, proofBytes, time.Now())
348346

349347
ctrl := gomock.NewController(t)
350348
handler := NewMockHandlerV1(ctrl)
@@ -363,18 +361,14 @@ func TestHandler_HandleSyncedMalfeasanceProof(t *testing.T) {
363361
Data: &wire.AtxProof{},
364362
},
365363
}
364+
newProofBytes := codec.MustEncode(newProof)
365+
require.NotEqual(t, proofBytes, newProofBytes)
366366

367-
err := h.HandleSyncedMalfeasanceProof(
368-
context.Background(),
369-
types.Hash32(nodeID),
370-
"peer",
371-
codec.MustEncode(newProof),
372-
)
367+
err := h.HandleSyncedMalfeasanceProof(context.Background(), types.Hash32(nodeID), "peer", newProofBytes)
373368
require.ErrorIs(t, ErrKnownProof, err)
374369

375-
malProof, err := identities.GetMalfeasanceProof(h.db, nodeID)
376-
require.NoError(t, err)
377-
malProof.SetReceived(time.Time{})
378-
require.Equal(t, proof, malProof)
370+
var blob sql.Blob
371+
require.NoError(t, identities.LoadMalfeasanceBlob(context.Background(), h.db, nodeID.Bytes(), &blob))
372+
require.Equal(t, proofBytes, blob.Bytes)
379373
})
380374
}

mesh/mesh_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,9 +379,11 @@ func TestMesh_MaliciousBallots(t *testing.T) {
379379
mal, err := identities.IsMalicious(tm.cdb, sig.NodeID())
380380
require.NoError(t, err)
381381
require.False(t, mal)
382-
saved, err := identities.GetMalfeasanceProof(tm.cdb, sig.NodeID())
382+
383+
var blob sql.Blob
384+
err = identities.LoadMalfeasanceBlob(context.Background(), tm.cdb, sig.NodeID().Bytes(), &blob)
383385
require.ErrorIs(t, err, sql.ErrNotFound)
384-
require.Nil(t, saved)
386+
require.Nil(t, blob.Bytes)
385387

386388
// second one will create a MalfeasanceProof
387389
tm.mockTortoise.EXPECT().OnMalfeasance(sig.NodeID())

0 commit comments

Comments
 (0)