Skip to content
Snippets Groups Projects
Commit 2f3811ae authored by capossele's avatar capossele
Browse files

:sparkles: adds config plugin

parent 223c1bab
No related branches found
No related tags found
No related merge requests found
......@@ -4,6 +4,7 @@ import (
"container/list"
"time"
"github.com/dgraph-io/badger/v2"
"github.com/iotaledger/hive.go/types"
"github.com/iotaledger/goshimmer/packages/binary/storageprefix"
......@@ -37,13 +38,13 @@ type Tangle struct {
}
// Constructor for the tangle.
func New(storageId []byte) (result *Tangle) {
func New(badgerInstance *badger.DB, storageId []byte) (result *Tangle) {
result = &Tangle{
storageId: storageId,
transactionStorage: objectstorage.New(append(storageId, storageprefix.TangleTransaction...), transaction.FromStorage),
transactionMetadataStorage: objectstorage.New(append(storageId, storageprefix.TangleTransactionMetadata...), transactionmetadata.FromStorage),
approverStorage: objectstorage.New(append(storageId, storageprefix.TangleApprovers...), approver.FromStorage, objectstorage.PartitionKey(transaction.IdLength, transaction.IdLength)),
missingTransactionsStorage: objectstorage.New(append(storageId, storageprefix.TangleMissingTransaction...), missingtransaction.FromStorage),
transactionStorage: objectstorage.New(badgerInstance, append(storageId, storageprefix.TangleTransaction...), transaction.FromStorage, objectstorage.CacheTime(10*time.Second), objectstorage.LeakDetectionEnabled(false)),
transactionMetadataStorage: objectstorage.New(badgerInstance, append(storageId, storageprefix.TangleTransactionMetadata...), transactionmetadata.FromStorage, objectstorage.CacheTime(10*time.Second), objectstorage.LeakDetectionEnabled(false)),
approverStorage: objectstorage.New(badgerInstance, append(storageId, storageprefix.TangleApprovers...), approver.FromStorage, objectstorage.CacheTime(10*time.Second), objectstorage.PartitionKey(transaction.IdLength, transaction.IdLength), objectstorage.LeakDetectionEnabled(false)),
missingTransactionsStorage: objectstorage.New(badgerInstance, append(storageId, storageprefix.TangleMissingTransaction...), missingtransaction.FromStorage, objectstorage.CacheTime(10*time.Second), objectstorage.LeakDetectionEnabled(false)),
Events: *newEvents(),
}
......
......@@ -5,16 +5,28 @@ import (
"testing"
"time"
"github.com/dgraph-io/badger/v2"
"github.com/iotaledger/hive.go/events"
"github.com/iotaledger/hive.go/database"
"github.com/iotaledger/goshimmer/packages/binary/identity"
"github.com/iotaledger/goshimmer/packages/binary/tangle/model/transaction"
"github.com/iotaledger/goshimmer/packages/binary/tangle/model/transaction/payload/data"
"github.com/iotaledger/goshimmer/packages/binary/tangle/model/transactionmetadata"
"github.com/iotaledger/goshimmer/plugins/config"
)
var testDatabase *badger.DB
var _ = config.PLUGIN
func init() {
testDatabase = database.GetBadgerInstance()
}
func BenchmarkTangle_AttachTransaction(b *testing.B) {
tangle := New([]byte("TEST_BINARY_TANGLE"))
tangle := New(testDatabase, []byte("TEST_BINARY_TANGLE"))
if err := tangle.Prune(); err != nil {
b.Error(err)
......@@ -39,7 +51,7 @@ func BenchmarkTangle_AttachTransaction(b *testing.B) {
}
func TestTangle_AttachTransaction(t *testing.T) {
tangle := New([]byte("TEST_BINARY_TANGLE"))
tangle := New(testDatabase, []byte("TEST_BINARY_TANGLE"))
if err := tangle.Prune(); err != nil {
t.Error(err)
......
package config
import (
"github.com/iotaledger/hive.go/logger"
"github.com/iotaledger/hive.go/node"
"github.com/iotaledger/hive.go/parameter"
flag "github.com/spf13/pflag"
"github.com/spf13/viper"
)
var (
// flags
configName = flag.StringP("config", "c", "config", "Filename of the config file without the file extension")
configDirPath = flag.StringP("config-dir", "d", ".", "Path to the directory containing the config file")
// viper
NodeConfig *viper.Viper
// logger
defaultLoggerConfig = logger.Config{
Level: "info",
DisableCaller: false,
DisableStacktrace: false,
Encoding: "console",
OutputPaths: []string{"goshimmer.log"},
DisableEvents: false,
}
)
func init() {
// set the default logger config
NodeConfig = viper.New()
NodeConfig.SetDefault(logger.ViperKey, defaultLoggerConfig)
if err := Fetch(false); err != nil {
panic(err)
}
parseParameters()
}
func parseParameters() {
for _, pluginName := range NodeConfig.GetStringSlice(node.CFG_DISABLE_PLUGINS) {
node.DisabledPlugins[node.GetPluginIdentifier(pluginName)] = true
}
for _, pluginName := range NodeConfig.GetStringSlice(node.CFG_ENABLE_PLUGINS) {
node.EnabledPlugins[node.GetPluginIdentifier(pluginName)] = true
}
}
// Fetch fetches config values from a dir defined via CLI flag --config-dir (or the current working dir if not set).
//
// It automatically reads in a single config file starting with "config" (can be changed via the --config CLI flag)
// and ending with: .json, .toml, .yaml or .yml (in this sequence).
func Fetch(printConfig bool, ignoreSettingsAtPrint ...[]string) error {
err := parameter.LoadConfigFile(NodeConfig, *configDirPath, *configName, true, true)
if err != nil {
return err
}
if printConfig {
parameter.PrintConfig(NodeConfig, ignoreSettingsAtPrint...)
}
return nil
}
package config
import (
"github.com/iotaledger/hive.go/node"
)
// define the plugin as a placeholder, so the init methods get executed accordingly
var PLUGIN = node.NewPlugin("Config", node.Enabled, run)
func run(ctx *node.Plugin) {
// do nothing; everything is handled in the init method
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment