tests: bitswap ledger tests modified
Updated the `TestBitswapLedger*` tests and added assertions to check concrete values for ledgers (rather than just checking that two peers' ledgers match). The names for these tests were also changed from the previous commit, according to 's/BytesSent/Ledger/'. License: MIT Signed-off-by: David Grisham <dgrisham@mines.edu>
dgrisham committed
Apr 25, 2017 at 13:54 UTC
4789a622b2e2675d42a8ff017468109d44b8026b
1 file changed
+58
-2
exchange/bitswap/bitswap_test.go
+58
-2
@@ -507,7 +507,37 @@ func assertLedgerMatch(ra, rb *decision.Receipt) error {
507
return nil
508
}
509
510
-func TestBitswapBytesSentOneWay(t *testing.T) {
510
+func assertLedgerEqual(ra, rb *decision.Receipt) error {
511
+ if ra.Value != rb.Value {
512
+ return fmt.Errorf("mismatch in ledgers (value/debt ratio): %f vs %f ", ra.Value, rb.Value)
513
+ }
514
+
515
+ if ra.Sent != rb.Sent {
516
+ return fmt.Errorf("mismatch in ledgers (sent bytes): %d vs %d", ra.Sent, rb.Sent)
517
+ }
518
+
519
+ if ra.Recv != rb.Recv {
520
+ return fmt.Errorf("mismatch in ledgers (recvd bytes): %d vs %d", ra.Recv, rb.Recv)
521
+ }
522
+
523
+ if ra.Exchanged != rb.Exchanged {
524
+ return fmt.Errorf("mismatch in ledgers (exchanged blocks): %d vs %d ", ra.Exchanged, rb.Exchanged)
525
+ }
526
+
527
+ return nil
528
+}
529
+
530
+func newReceipt(sent, recv, exchanged uint64) *decision.Receipt {
531
+ return &decision.Receipt{
532
+ Peer: "test",
533
+ Value: float64(sent) / (1 + float64(recv)),
534
+ Sent: sent,
535
+ Recv: recv,
536
+ Exchanged: exchanged,
537
+ }
538
+}
539
+
540
+func TestBitswapLedgerOneWay(t *testing.T) {
541
net := tn.VirtualNetwork(mockrouting.NewServer(), delay.Fixed(kNetworkDelay))
542
sg := NewTestSessionGenerator(net)
543
defer sg.Close()
@@ -532,11 +562,24 @@ func TestBitswapBytesSentOneWay(t *testing.T) {
562
ra := instances[0].Exchange.LedgerForPeer(instances[1].Peer)
563
rb := instances[1].Exchange.LedgerForPeer(instances[0].Peer)
564
565
+ // compare peer ledger receipts
566
err = assertLedgerMatch(ra, rb)
567
if err != nil {
568
t.Fatal(err)
569
}
570
571
+ // check that receipts have intended values
572
+ ratest := newReceipt(1, 0, 1)
573
+ err = assertLedgerEqual(ratest, ra)
574
+ if err != nil {
575
+ t.Fatal(err)
576
+ }
577
+ rbtest := newReceipt(0, 1, 1)
578
+ err = assertLedgerEqual(rbtest, rb)
579
+ if err != nil {
580
+ t.Fatal(err)
581
+ }
582
+
583
t.Log(blk)
584
for _, inst := range instances {
585
err := inst.Exchange.Close()
@@ -546,7 +589,7 @@ func TestBitswapBytesSentOneWay(t *testing.T) {
589
}
590
}
591
549
-func TestBitswapBytesSentTwoWay(t *testing.T) {
592
+func TestBitswapLedgerTwoWay(t *testing.T) {
593
net := tn.VirtualNetwork(mockrouting.NewServer(), delay.Fixed(kNetworkDelay))
594
sg := NewTestSessionGenerator(net)
595
defer sg.Close()
@@ -583,11 +626,24 @@ func TestBitswapBytesSentTwoWay(t *testing.T) {
626
ra := instances[0].Exchange.LedgerForPeer(instances[1].Peer)
627
rb := instances[1].Exchange.LedgerForPeer(instances[0].Peer)
628
629
+ // compare peer ledger receipts
630
err = assertLedgerMatch(ra, rb)
631
if err != nil {
632
t.Fatal(err)
633
}
634
635
+ // check that receipts have intended values
636
+ rtest := newReceipt(1, 1, 2)
637
+ err = assertLedgerEqual(rtest, ra)
638
+ if err != nil {
639
+ t.Fatal(err)
640
+ }
641
+
642
+ err = assertLedgerEqual(rtest, rb)
643
+ if err != nil {
644
+ t.Fatal(err)
645
+ }
646
+
647
t.Log(blk)
648
for _, inst := range instances {
649
err := inst.Exchange.Close()