Skip to content
Snippets Groups Projects
Commit 54ddd379 authored by Wolfgang Welz's avatar Wolfgang Welz
Browse files

Merge branch 'feat/next-version' into feat/logger-update

parents 9aa423a9 c7496bf6
No related branches found
No related tags found
No related merge requests found
......@@ -68,74 +68,66 @@ func TestValidateSignatures(t *testing.T) {
assert.Equal(t, successful, true, "validation failed")
}
func TestProcessSolidBundleHead_Data(t *testing.T) {
func TestProcessSolidBundleHead(t *testing.T) {
// start a test node
node.Start(node.Plugins(tangle.PLUGIN, PLUGIN))
defer node.Shutdown()
bundleFactory := client.NewBundleFactory()
bundleFactory.AddOutput(seed.GetAddress(1), 400, "Testmessage")
bundleFactory.AddOutput(client.NewAddress("SJKUKQP9SWUSUCPRQXCMDVDVZ9SHHESHIQNCXWBJF9UJSWE9ZYFHQWAUPCXC9S9DSHP9NDF9RLNPMZVCM"), 400, "Testmessage")
t.Run("data", func(t *testing.T) {
bundleFactory := client.NewBundleFactory()
bundleFactory.AddOutput(seed.GetAddress(1), 400, "Testmessage")
bundleFactory.AddOutput(client.NewAddress("SJKUKQP9SWUSUCPRQXCMDVDVZ9SHHESHIQNCXWBJF9UJSWE9ZYFHQWAUPCXC9S9DSHP9NDF9RLNPMZVCM"), 400, "Testmessage")
generatedBundle := bundleFactory.GenerateBundle(tipselection.GetRandomTip(), tipselection.GetRandomTip())
generatedBundle := bundleFactory.GenerateBundle(tipselection.GetRandomTip(), tipselection.GetRandomTip())
for _, transaction := range generatedBundle.GetTransactions() {
tangle.StoreTransaction(transaction)
}
for _, transaction := range generatedBundle.GetTransactions() {
tangle.StoreTransaction(transaction)
}
var wg sync.WaitGroup
testResults := events.NewClosure(func(bundle *bundle.Bundle, transactions []*value_transaction.ValueTransaction) {
assert.Equal(t, bundle.GetHash(), generatedBundle.GetTransactions()[0].GetHash(), "invalid bundle hash")
assert.Equal(t, bundle.IsValueBundle(), false, "invalid value bundle status")
var wg sync.WaitGroup
wg.Done()
})
Events.BundleSolid.Attach(testResults)
defer Events.BundleSolid.Detach(testResults)
testResults := events.NewClosure(func(bundle *bundle.Bundle, transactions []*value_transaction.ValueTransaction) {
assert.Equal(t, bundle.GetHash(), generatedBundle.GetTransactions()[0].GetHash(), "invalid bundle hash")
assert.Equal(t, bundle.IsValueBundle(), false, "invalid value bundle status")
wg.Add(1)
if err := ProcessSolidBundleHead(generatedBundle.GetTransactions()[0]); err != nil {
t.Error(err)
}
wg.Done()
wg.Wait()
})
Events.BundleSolid.Attach(testResults)
defer Events.BundleSolid.Detach(testResults)
wg.Add(1)
if err := ProcessSolidBundleHead(generatedBundle.GetTransactions()[0]); err != nil {
t.Error(err)
}
wg.Wait()
}
func TestProcessSolidBundleHead_Value(t *testing.T) {
// start a test node
node.Start(node.Plugins(tangle.PLUGIN, PLUGIN))
defer node.Shutdown()
t.Run("value", func(t *testing.T) {
bundleFactory := client.NewBundleFactory()
bundleFactory.AddInput(seed.GetAddress(0), -400)
bundleFactory.AddOutput(seed.GetAddress(1), 400, "Testmessage")
bundleFactory.AddOutput(client.NewAddress("SJKUKQP9SWUSUCPRQXCMDVDVZ9SHHESHIQNCXWBJF9UJSWE9ZYFHQWAUPCXC9S9DSHP9NDF9RLNPMZVCM"), 400, "Testmessage")
bundleFactory := client.NewBundleFactory()
bundleFactory.AddInput(seed.GetAddress(0), -400)
bundleFactory.AddOutput(seed.GetAddress(1), 400, "Testmessage")
bundleFactory.AddOutput(client.NewAddress("SJKUKQP9SWUSUCPRQXCMDVDVZ9SHHESHIQNCXWBJF9UJSWE9ZYFHQWAUPCXC9S9DSHP9NDF9RLNPMZVCM"), 400, "Testmessage")
generatedBundle := bundleFactory.GenerateBundle(tipselection.GetRandomTip(), tipselection.GetRandomTip())
for _, transaction := range generatedBundle.GetTransactions() {
tangle.StoreTransaction(transaction)
}
generatedBundle := bundleFactory.GenerateBundle(tipselection.GetRandomTip(), tipselection.GetRandomTip())
var wg sync.WaitGroup
testResults := events.NewClosure(func(bundle *bundle.Bundle, transactions []*value_transaction.ValueTransaction) {
assert.Equal(t, bundle.GetHash(), generatedBundle.GetTransactions()[0].GetHash(), "invalid bundle hash")
assert.Equal(t, bundle.IsValueBundle(), true, "invalid value bundle status")
for _, transaction := range generatedBundle.GetTransactions() {
tangle.StoreTransaction(transaction)
}
wg.Done()
})
var wg sync.WaitGroup
wg.Add(1)
Events.BundleSolid.Attach(testResults)
defer Events.BundleSolid.Detach(testResults)
testResults := events.NewClosure(func(bundle *bundle.Bundle, transactions []*value_transaction.ValueTransaction) {
assert.Equal(t, bundle.GetHash(), generatedBundle.GetTransactions()[0].GetHash(), "invalid bundle hash")
assert.Equal(t, bundle.IsValueBundle(), true, "invalid value bundle status")
if err := ProcessSolidBundleHead(generatedBundle.GetTransactions()[0]); err != nil {
t.Error(err)
}
wg.Done()
wg.Wait()
})
Events.BundleSolid.Attach(testResults)
defer Events.BundleSolid.Detach(testResults)
wg.Add(1)
if err := ProcessSolidBundleHead(generatedBundle.GetTransactions()[0]); err != nil {
t.Error(err)
}
wg.Wait()
}
......@@ -13,8 +13,9 @@ import (
var PLUGIN = node.NewPlugin("Bundle Processor", node.Enabled, configure, run)
var log *logger.Logger
func configure(plugin *node.Plugin) {
func configure(*node.Plugin) {
log = logger.NewLogger("Bundle Processor")
tangle.Events.TransactionSolid.Attach(events.NewClosure(func(tx *value_transaction.ValueTransaction) {
if tx.IsHead() {
workerPool.Submit(tx)
......@@ -26,7 +27,7 @@ func configure(plugin *node.Plugin) {
}))
}
func run(plugin *node.Plugin) {
func run(*node.Plugin) {
log.Info("Starting Bundle Processor ...")
daemon.BackgroundWorker("Bundle Processor", func(shutdownSignal <-chan struct{}) {
......@@ -34,7 +35,7 @@ func run(plugin *node.Plugin) {
workerPool.Start()
<-shutdownSignal
log.Info("Stopping Bundle Processor ...")
workerPool.Stop()
workerPool.StopAndWait()
log.Info("Stopping Bundle Processor ... done")
})
......@@ -45,7 +46,7 @@ func run(plugin *node.Plugin) {
valueBundleProcessorWorkerPool.Start()
<-shutdownSignal
log.Info("Stopping Value Bundle Processor ...")
valueBundleProcessorWorkerPool.Stop()
valueBundleProcessorWorkerPool.StopAndWait()
log.Info("Stopping Value Bundle Processor ... done")
})
}
......@@ -5,7 +5,6 @@ import (
"github.com/iotaledger/goshimmer/packages/datastructure"
"github.com/iotaledger/goshimmer/packages/errors"
"github.com/iotaledger/goshimmer/packages/model/approvers"
"github.com/iotaledger/hive.go/node"
"github.com/iotaledger/hive.go/typeutils"
"github.com/iotaledger/iota.go/trinary"
)
......@@ -75,7 +74,7 @@ const (
var approversDatabase database.Database
func configureApproversDatabase(plugin *node.Plugin) {
func configureApproversDatabase() {
if db, err := database.Get("approvers"); err != nil {
panic(err)
} else {
......
......@@ -5,7 +5,6 @@ import (
"github.com/iotaledger/goshimmer/packages/datastructure"
"github.com/iotaledger/goshimmer/packages/errors"
"github.com/iotaledger/goshimmer/packages/model/bundle"
"github.com/iotaledger/hive.go/node"
"github.com/iotaledger/hive.go/typeutils"
"github.com/iotaledger/iota.go/trinary"
)
......@@ -79,7 +78,7 @@ const (
var bundleDatabase database.Database
func configureBundleDatabase(plugin *node.Plugin) {
func configureBundleDatabase() {
if db, err := database.Get("bundle"); err != nil {
panic(err)
} else {
......
......@@ -10,17 +10,18 @@ import (
var PLUGIN = node.NewPlugin("Tangle", node.Enabled, configure, run)
var log *logger.Logger
func configure(plugin *node.Plugin) {
func configure(*node.Plugin) {
log = logger.NewLogger("Tangle")
configureTransactionDatabase(plugin)
configureTransactionMetaDataDatabase(plugin)
configureApproversDatabase(plugin)
configureBundleDatabase(plugin)
configureSolidifier(plugin)
configureTransactionDatabase()
configureTransactionMetaDataDatabase()
configureApproversDatabase()
configureBundleDatabase()
configureSolidifier()
}
func run(plugin *node.Plugin) {
runSolidifier(plugin)
func run(*node.Plugin) {
runSolidifier()
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
......@@ -13,7 +13,6 @@ import (
"github.com/iotaledger/goshimmer/packages/workerpool"
"github.com/iotaledger/hive.go/daemon"
"github.com/iotaledger/hive.go/events"
"github.com/iotaledger/hive.go/node"
"github.com/iotaledger/iota.go/trinary"
)
......@@ -26,9 +25,9 @@ var (
unsolidTxs *UnsolidTxs
)
func configureSolidifier(plugin *node.Plugin) {
func configureSolidifier() {
workerPool = workerpool.New(func(task workerpool.Task) {
processMetaTransaction(plugin, task.Param(0).(*meta_transaction.MetaTransaction))
processMetaTransaction(task.Param(0).(*meta_transaction.MetaTransaction))
task.Return(nil)
}, workerpool.WorkerCount(WORKER_COUNT), workerpool.QueueSize(10000))
......@@ -46,7 +45,7 @@ func configureSolidifier(plugin *node.Plugin) {
}))
}
func runSolidifier(plugin *node.Plugin) {
func runSolidifier() {
log.Info("Starting Solidifier ...")
daemon.BackgroundWorker("Tangle Solidifier", func(shutdownSignal <-chan struct{}) {
......@@ -54,7 +53,7 @@ func runSolidifier(plugin *node.Plugin) {
workerPool.Start()
<-shutdownSignal
log.Info("Stopping Solidifier ...")
workerPool.Stop()
workerPool.StopAndWait()
log.Info("Stopping Solidifier ... done")
})
}
......@@ -169,7 +168,7 @@ func propagateSolidity(transactionHash trinary.Trytes) errors.IdentifiableError
return nil
}
func processMetaTransaction(plugin *node.Plugin, metaTransaction *meta_transaction.MetaTransaction) {
func processMetaTransaction(metaTransaction *meta_transaction.MetaTransaction) {
var newTransaction bool
if tx, err := GetTransaction(metaTransaction.GetHash(), func(transactionHash trinary.Trytes) *value_transaction.ValueTransaction {
newTransaction = true
......@@ -179,11 +178,11 @@ func processMetaTransaction(plugin *node.Plugin, metaTransaction *meta_transacti
log.Errorf("Unable to load transaction %s: %s", metaTransaction.GetHash(), err.Error())
} else if newTransaction {
updateUnsolidTxs(tx)
processTransaction(plugin, tx)
processTransaction(tx)
}
}
func processTransaction(plugin *node.Plugin, transaction *value_transaction.ValueTransaction) {
func processTransaction(transaction *value_transaction.ValueTransaction) {
Events.TransactionStored.Trigger(transaction)
transactionHash := transaction.GetHash()
......
......@@ -5,7 +5,6 @@ import (
"github.com/iotaledger/goshimmer/packages/datastructure"
"github.com/iotaledger/goshimmer/packages/errors"
"github.com/iotaledger/goshimmer/packages/model/value_transaction"
"github.com/iotaledger/hive.go/node"
"github.com/iotaledger/hive.go/typeutils"
"github.com/iotaledger/iota.go/trinary"
)
......@@ -76,7 +75,7 @@ const (
var transactionDatabase database.Database
func configureTransactionDatabase(plugin *node.Plugin) {
func configureTransactionDatabase() {
if db, err := database.Get("transaction"); err != nil {
panic(err)
} else {
......
......@@ -5,7 +5,6 @@ import (
"github.com/iotaledger/goshimmer/packages/datastructure"
"github.com/iotaledger/goshimmer/packages/errors"
"github.com/iotaledger/goshimmer/packages/model/transactionmetadata"
"github.com/iotaledger/hive.go/node"
"github.com/iotaledger/hive.go/typeutils"
"github.com/iotaledger/iota.go/trinary"
)
......@@ -76,7 +75,7 @@ const (
var transactionMetadataDatabase database.Database
func configureTransactionMetaDataDatabase(plugin *node.Plugin) {
func configureTransactionMetaDataDatabase() {
if db, err := database.Get("transactionMetadata"); err != nil {
panic(err)
} else {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment