Skip to content
Snippets Groups Projects
Select Git revision
  • ac1ca4023c77d6095461ce86cb0470c70085b54a
  • without_tipselection default
  • develop protected
  • fix/grafana-local-dashboard
  • wasp
  • fix/dashboard-explorer-freeze
  • master
  • feat/timerqueue
  • test/sync_debug_and_650
  • feat/sync_revamp_inv
  • wip/sync
  • tool/db-recovery
  • portcheck/fix
  • fix/synchronization
  • feat/new-dashboard-analysis
  • feat/refactored-analysis-dashboard
  • feat/new-analysis-dashboard
  • test/demo-prometheus-fpc
  • prometheus_metrics
  • wip/analysis-server
  • merge/fpc-test-value-transfer
  • v0.2.2
  • v0.2.1
  • v0.2.0
  • v0.1.3
  • v0.1.2
  • v0.1.1
  • v0.1.0
28 results

ledgerstate_test.go

  • ledgerstate_test.go 2.30 KiB
    package ledgerstate
    
    import (
    	"fmt"
    	"strconv"
    	"testing"
    	"time"
    
    	"github.com/iotaledger/hive.go/objectstorage"
    )
    
    var (
    	iota           = NewColor("IOTA")
    	eth            = NewColor("ETH")
    	transferHash1  = NewTransferHash("TRANSFER1")
    	transferHash2  = NewTransferHash("TRANSFER2")
    	transferHash3  = NewTransferHash("TRANSFER3")
    	addressHash1   = NewAddressHash("ADDRESS1")
    	addressHash3   = NewAddressHash("ADDRESS3")
    	addressHash4   = NewAddressHash("ADDRESS4")
    	pendingReality = NewRealityId("PENDING")
    )
    
    func Benchmark(b *testing.B) {
    	ledgerState := NewLedgerState("testLedger").Prune().AddTransferOutput(
    		transferHash1, addressHash1, NewColoredBalance(eth, 1337),
    	)
    
    	b.ResetTimer()
    
    	for i := 0; i < b.N; i++ {
    		if err := ledgerState.BookTransfer(NewTransfer(NewTransferHash(strconv.Itoa(i))).AddInput(
    			NewTransferOutputReference(transferHash1, addressHash1),
    		).AddOutput(
    			addressHash3, NewColoredBalance(eth, 1337),
    		)); err != nil {
    			b.Error(err)
    		}
    	}
    }
    
    func Test(t *testing.T) {
    	ledgerState := NewLedgerState("testLedger").Prune().AddTransferOutput(
    		transferHash1, addressHash1, NewColoredBalance(eth, 1337), NewColoredBalance(iota, 1338),
    	)
    
    	ledgerState.CreateReality(pendingReality)
    
    	transfer := NewTransfer(transferHash2).AddInput(
    		NewTransferOutputReference(transferHash1, addressHash1),
    	).AddOutput(
    		addressHash3, NewColoredBalance(iota, 338),
    	).AddOutput(
    		addressHash3, NewColoredBalance(eth, 337),
    	).AddOutput(
    		addressHash4, NewColoredBalance(iota, 1000),
    	).AddOutput(
    		addressHash4, NewColoredBalance(eth, 1000),
    	)
    
    	if err := ledgerState.BookTransfer(transfer); err != nil {
    		t.Error(err)
    	}
    
    	if err := ledgerState.BookTransfer(NewTransfer(transferHash3).AddInput(
    		NewTransferOutputReference(transferHash1, addressHash1),
    	).AddOutput(
    		addressHash3, NewColoredBalance(iota, 338),
    	).AddOutput(
    		addressHash3, NewColoredBalance(eth, 337),
    	).AddOutput(
    		addressHash4, NewColoredBalance(iota, 1000),
    	).AddOutput(
    		addressHash4, NewColoredBalance(eth, 1000),
    	)); err != nil {
    		t.Error(err)
    	}
    
    	time.Sleep(1000 * time.Millisecond)
    
    	objectstorage.WaitForWritesToFlush()
    
    	ledgerState.ForEachTransferOutput(func(object *objectstorage.CachedObject) bool {
    		object.Consume(func(object objectstorage.StorableObject) {
    			fmt.Println(object.(*TransferOutput))
    		})
    
    		return true
    	})
    }