add initial files

This commit is contained in:
David Allen 2024-11-17 13:47:37 -07:00
commit 6233590bb4
Signed by: towk
GPG key ID: 793B2924A49B3A3F
8 changed files with 307 additions and 0 deletions

71
main.go Normal file
View file

@ -0,0 +1,71 @@
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)
}