partitions/main.go
2024-11-17 13:47:37 -07:00

71 lines
1.7 KiB
Go

package main
import (
"encoding/json"
"github.com/davidallendj/partitions/internal/groups"
"github.com/davidallendj/partitions/internal/partitions"
"github.com/rs/zerolog/log"
)
func main() {
var (
pm = partitions.DefaultManager{}
n1 = "nid0001"
n2 = "nid0002"
n3 = "nid0003"
p1 = "test1"
p2 = "test2"
)
// create new partitions with partition manager while testing adding
// the same partition multiple times
unwrapError(pm.CreatePartition(p1, []string{n3}))
unwrapError(pm.CreatePartition(p2, nil))
unwrapError(pm.CreatePartition(p2, nil))
// try and put the same node in multiple partitions which should cause error
unwrapError(pm.AddNodeToPartition(p1, n1))
unwrapError(pm.AddNodeToPartition(p1, n1))
unwrapError(pm.AddNodeToPartition(p2, n2))
// try and put the same node in multiple groups
var (
g1 = groups.Group{
Name: "group1",
Labels: []string{n1, n2, "hello"},
}
g2 = groups.Group{
Name: "group2",
Labels: []string{n1, n3, "world"},
}
)
g1NodeIDs := ToJSON(g1.GetNodeIDs(&pm))
g1PartitionIDs := ToJSON(g1.GetPartitions(&pm))
g2NodeIDs := ToJSON(g2.GetNodeIDs(&pm))
g2PartitionIDs := ToJSON(g2.GetPartitions(&pm))
log.Info().Any("manager.partitions", pm.GetPartitions()).Msg("partition manager")
log.Info().
Any("group", g1).
Any("found node IDs in manager", g1NodeIDs).
Any("partitions containing found nodes", g1PartitionIDs).
Msg("group 1")
log.Info().
Any("group", g2).
Any("found node IDs in manager", g2NodeIDs).
Any("partitions containing found nodes", g2PartitionIDs).
Msg("group 2")
}
func unwrapError(err error) {
if err != nil {
log.Error().Err(err).Msg("something went wrong...")
}
}
func ToJSON(v any) string {
b, _ := json.Marshal(v)
return string(b)
}