Files
warewulf/internal/pkg/node/hash_test.go
Christian Goll ee4f9d53d6 add hash function
Signed-off-by: Christian Goll <cgoll@suse.de>
2023-03-24 19:47:22 +01:00

112 lines
2.4 KiB
Go

package node
import (
"fmt"
"testing"
"gopkg.in/yaml.v2"
"github.com/stretchr/testify/assert"
)
func TestHash(t *testing.T) {
nodeConfYml1 := `
WW_INTERNAL: 43
nodeprofiles:
default:
comment: This profile is automatically included for each node
test:
comment: This is a test profile
nodes:
n01:
discoverable: true
profiles:
- default
network devices:
default:
ipaddr: 10.0.10.1
n02:
discoverable: true
profiles:
- default
network devices:
testnet:
ipaddr: 10.0.10.2
`
nodeConfYml2 := `
WW_INTERNAL: 43
nodeprofiles:
default:
comment: This profile is automatically included for each node
test:
comment: This is a test profile
nodes:
n02:
discoverable: true
profiles:
- default
network devices:
default:
ipaddr: 10.0.10.2
n01:
discoverable: true
profiles:
- default
network devices:
default:
ipaddr: 10.0.10.1
`
nodeConfYml3 := `
WW_INTERNAL: 43
nodeprofiles:
default:
comment: This profile is automatically included for each node
test:
comment: This is a test profile
nodes:
n02:
discoverable: true
profiles:
- default
network devices:
default:
ipaddr: 10.0.10.2
n01:
discoverable: true
profiles:
- default
network devices:
default:
ipaddr: 10.0.10.3
`
var nodeConf1, nodeConf2, nodeConf3 NodeYaml
err := yaml.Unmarshal([]byte(nodeConfYml1), &nodeConf1)
fmt.Println(nodeConf1.Nodes["n01"])
assert.NoError(t, err)
err = yaml.Unmarshal([]byte(nodeConfYml2), &nodeConf2)
assert.NoError(t, err)
err = yaml.Unmarshal([]byte(nodeConfYml3), &nodeConf3)
assert.NoError(t, err)
t.Run("Same NodeYaml with same conf", func(t *testing.T) {
var testConf NodeYaml
yaml.Unmarshal([]byte(nodeConfYml1), &testConf)
if testConf.Hash() != nodeConf1.Hash() {
yaml.Unmarshal([]byte(nodeConfYml1), nodeConf1)
t.Errorf("Hashes for same configuration differs: %x != %x", nodeConf1.Hash(), nodeConf1.Hash())
}
})
t.Run("Different sorted NodeYaml with same conf", func(t *testing.T) {
if nodeConf2.Hash() != nodeConf1.Hash() {
t.Errorf("Hashes for same configuration differs: %x != %x", nodeConf2.Hash(), nodeConf1.Hash())
}
})
t.Run("Different NodeYaml with different conf", func(t *testing.T) {
if nodeConf2.Hash() == nodeConf3.Hash() {
t.Errorf("Hashes for different configuration is the same: %x == %x", nodeConf2.Hash(), nodeConf3.Hash())
}
})
}