Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions pkg/entities/dynamic_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ type DynamicConfig struct {
ExcludeSelfMessages bool `db:"exclude_self_messages" yaml:"exclude_self_messages" json:"exclude_self_messages"`

// Coding and message settings
RandomMessageSize int64 `db:"random_message_size_bytes" yaml:"random_message_size" json:"random_message_size_bytes"`
ShardFactor int64 `db:"rlnc_shard_factor" yaml:"shard_factor" json:"rlnc_shard_factor"`
PublisherShardMultiplier float32 `db:"publisher_shard_multiplier" yaml:"publisher_shard_multiplier" json:"publisher_shard_multiplier"`
ForwardShardThreshold float32 `db:"forward_shard_threshold" yaml:"forward_shard_threshold" json:"forward_shard_threshold"`
RandomMessageSize uint32 `db:"random_message_size_bytes" yaml:"random_message_size" json:"random_message_size_bytes"`
ShardFactor uint32 `db:"rlnc_shard_factor" yaml:"shard_factor" json:"rlnc_shard_factor"`
PublisherShardMultiplier float64 `db:"publisher_shard_multiplier" yaml:"publisher_shard_multiplier" json:"publisher_shard_multiplier"`
ForwardShardThreshold float64 `db:"forward_shard_threshold" yaml:"forward_shard_threshold" json:"forward_shard_threshold"`

// Mesh topology settings
MeshDegreeTarget int64 `db:"mesh_degree_target" yaml:"mesh_degree_target" json:"mesh_degree_target"`
Expand Down Expand Up @@ -138,10 +138,10 @@ func (d *DynamicConfig) ToMap() map[string]any {
func HashRemoteConfig(cfg *DynamicConfig) string {
h := sha256.New()
hash.WriteBool(h, cfg.PropagationEnabled)
hash.WriteInt64(h, cfg.RandomMessageSize)
hash.WriteInt64(h, cfg.ShardFactor)
hash.WriteFloat32(h, cfg.PublisherShardMultiplier)
hash.WriteFloat32(h, cfg.ForwardShardThreshold)
hash.WriteUint32(h, cfg.RandomMessageSize)
hash.WriteUint32(h, cfg.ShardFactor)
hash.WriteFloat64(h, cfg.PublisherShardMultiplier)
hash.WriteFloat64(h, cfg.ForwardShardThreshold)
hash.WriteInt64(h, cfg.MeshDegreeTarget)
hash.WriteInt64(h, cfg.MeshDegreeMin)
hash.WriteInt64(h, cfg.MeshDegreeMax)
Expand Down
14 changes: 7 additions & 7 deletions pkg/entities/dynamic_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,10 @@ func TestDynamicConfig(t *testing.T) {
"propagation_enabled": true,
"exclude_self_messages": true,
"updated_at": res["updated_at"],
"random_message_size_bytes": int64(1),
"rlnc_shard_factor": int64(2),
"publisher_shard_multiplier": float32(3),
"forward_shard_threshold": float32(4),
"random_message_size_bytes": uint32(1),
"rlnc_shard_factor": uint32(2),
"publisher_shard_multiplier": float64(3),
"forward_shard_threshold": float64(4),
"mesh_degree_target": int64(5),
"mesh_degree_min": int64(6),
"mesh_degree_max": int64(7),
Expand All @@ -106,7 +106,7 @@ func TestHashRemoteConfig(t *testing.T) {
// given
table := map[string]*entities.DynamicConfig{
"cc2786e1f9910a9d811400edcddaf7075195f7a16b216dcbefba3bc7c4f2ae51": {},
"db60d9b58747f20f922f9660d71631d4b26465836096857cd53eca21883dbad8": {
"e1600a51a6acec2ea4168f23e112489b40af724b8901ac744c82fe105a1a73d7": {
RandomMessageSize: 1,
ShardFactor: 1,
PublisherShardMultiplier: 1,
Expand All @@ -115,7 +115,7 @@ func TestHashRemoteConfig(t *testing.T) {
MeshDegreeMin: 1,
MeshDegreeMax: 1,
},
"6a6daffb5ebc958a231ab5099b2d935bf5916e3e4eeab44f8f9c70016d72b672": {
"9049b56b4dc78f6fa24106b9e31e9c5dc987c028953440f2eb77b67009398ba0": {
RandomMessageSize: 2,
ShardFactor: 2,
PublisherShardMultiplier: 2,
Expand All @@ -124,7 +124,7 @@ func TestHashRemoteConfig(t *testing.T) {
MeshDegreeMin: 2,
MeshDegreeMax: 2,
},
"f7dbb42586df129bfc7cadcaf952db8256c174915e4ac301cba67a3a2144153e": {
"92dcf1a7e3b3bd8193dbf48f250ca6c1bf95954ca6537c699c7b8007c358bad2": {
RandomMessageSize: 2,
ShardFactor: 2,
PublisherShardMultiplier: 2,
Expand Down
8 changes: 4 additions & 4 deletions pkg/entities/opt_p2p.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ type OptimumConfig struct {
MaxMessageSize int64 `yaml:"max_message_size_bytes" env:"OPTIMUM_MAX_MSG_SIZE" flag:"max_message_size_bytes" default:"1048576"`

// Coding and message settings
RandomMessageSize int64 `yaml:"random_message_size_bytes" env:"OPTIMUM_RANDOM_MSG_SIZE" flag:"random_message_size_bytes" default:"512"`
ShardFactor int64 `yaml:"rlnc_shard_factor" env:"OPTIMUM_SHARD_FACTOR" flag:"rlnc_shard_factor" default:"4"`
PublisherShardMultiplier float32 `yaml:"publisher_shard_multiplier" env:"OPTIMUM_SHARD_MULT" flag:"publisher_shard_multiplier" default:"1.5"`
ForwardShardThreshold float32 `yaml:"forward_shard_threshold" env:"OPTIMUM_THRESHOLD" flag:"forward_shard_threshold" default:"0.75"`
RandomMessageSize uint32 `yaml:"random_message_size_bytes" env:"OPTIMUM_RANDOM_MSG_SIZE" flag:"random_message_size_bytes" default:"512"`
ShardFactor uint32 `yaml:"rlnc_shard_factor" env:"OPTIMUM_SHARD_FACTOR" flag:"rlnc_shard_factor" default:"4"`
PublisherShardMultiplier float64 `yaml:"publisher_shard_multiplier" env:"OPTIMUM_SHARD_MULT" flag:"publisher_shard_multiplier" default:"1.5"`
ForwardShardThreshold float64 `yaml:"forward_shard_threshold" env:"OPTIMUM_THRESHOLD" flag:"forward_shard_threshold" default:"0.75"`

// Mesh topology settings
MeshDegreeTarget int64 `yaml:"mesh_degree_target" env:"OPTIMUM_MESH_TARGET" flag:"mesh_degree_target" default:"6"`
Expand Down
16 changes: 8 additions & 8 deletions pkg/entities/opt_p2p_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ func TestOptimumConfig(t *testing.T) {
require.NoError(t, cfg.Validate())
require.Equal(t, "test-cluster", cfg.ClusterID)
require.Equal(t, int64(1048576), cfg.MaxMessageSize)
require.Equal(t, int64(512), cfg.RandomMessageSize)
require.Equal(t, int64(4), cfg.ShardFactor)
require.Equal(t, float32(1.5), cfg.PublisherShardMultiplier)
require.Equal(t, float32(0.75), cfg.ForwardShardThreshold)
require.Equal(t, uint32(512), cfg.RandomMessageSize)
require.Equal(t, uint32(4), cfg.ShardFactor)
require.Equal(t, float64(1.5), cfg.PublisherShardMultiplier)
require.Equal(t, float64(0.75), cfg.ForwardShardThreshold)
require.Equal(t, int64(6), cfg.MeshDegreeTarget)
require.Equal(t, int64(4), cfg.MeshDegreeMin)
require.Equal(t, int64(12), cfg.MeshDegreeMax)
Expand All @@ -46,10 +46,10 @@ func TestOptimumConfig(t *testing.T) {
newCfg := cfg.ApplyDynamicConfig(dc)

// then
require.Equal(t, int64(1024), newCfg.RandomMessageSize)
require.Equal(t, int64(8), newCfg.ShardFactor)
require.Equal(t, float32(3), newCfg.PublisherShardMultiplier)
require.Equal(t, float32(1.23), newCfg.ForwardShardThreshold)
require.Equal(t, uint32(1024), newCfg.RandomMessageSize)
require.Equal(t, uint32(8), newCfg.ShardFactor)
require.Equal(t, float64(3), newCfg.PublisherShardMultiplier)
require.Equal(t, 1.23, newCfg.ForwardShardThreshold)
require.Equal(t, int64(32), newCfg.MeshDegreeTarget)
require.Equal(t, int64(64), newCfg.MeshDegreeMin)
require.Equal(t, int64(128), newCfg.MeshDegreeMax)
Expand Down
14 changes: 14 additions & 0 deletions pkg/hash/hashutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,3 +111,17 @@ func WriteFloat32(h hash.Hash, v float32) {
binary.LittleEndian.PutUint32(buf[:], math.Float32bits(v))
h.Write(buf[:])
}

// WriteFloat64 writes a float64 value to the hash by converting it to its IEEE 754 binary representation.
func WriteFloat64(h hash.Hash, v float64) {
var buf [8]byte
binary.LittleEndian.PutUint64(buf[:], math.Float64bits(v))
h.Write(buf[:])
}

// WriteUint32 writes a uint32 value to the hash in little-endian format.
func WriteUint32(h hash.Hash, v uint32) {
var buf [4]byte
binary.LittleEndian.PutUint32(buf[:], v)
h.Write(buf[:])
}
Comment thread
Copilot marked this conversation as resolved.
Loading