Files
my-rook-config/pkg/operator/ceph/version/version_test.go
T
Noah Watkins 379cb98689 ceph: replace release name with fine-grained version
The basic idea here is to replace the release name in the ClusterInfo
object with the fine grained version information queried at runtime.
This patch also removes the Name field from the cluster spec, which was
also runtime determined and was redundant with ClusterInfo relase name.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2019-03-18 12:57:29 -07:00

143 lines
4.6 KiB
Go

package version
import (
"fmt"
"github.com/stretchr/testify/assert"
"testing"
)
func TestToString(t *testing.T) {
assert.Equal(t, "14.0.0 nautilus", fmt.Sprintf("%s", &Nautilus))
assert.Equal(t, "13.0.0 mimic", fmt.Sprintf("%s", &Mimic))
assert.Equal(t, "12.0.0 luminous", fmt.Sprintf("%s", &Luminous))
expected := fmt.Sprintf("-1.0.0 %s", unknownVersionString)
assert.Equal(t, expected, fmt.Sprintf("%s", &CephVersion{-1, 0, 0}))
}
func TestReleaseName(t *testing.T) {
assert.Equal(t, "nautilus", Nautilus.ReleaseName())
assert.Equal(t, "mimic", Mimic.ReleaseName())
assert.Equal(t, "luminous", Luminous.ReleaseName())
ver := CephVersion{-1, 0, 0}
assert.Equal(t, unknownVersionString, ver.ReleaseName())
}
func extractVersionHelper(t *testing.T, text string, major, minor, extra int) {
v, err := ExtractCephVersion(text)
if assert.NoError(t, err) {
assert.Equal(t, *v, CephVersion{major, minor, extra})
}
}
func TestExtractVersion(t *testing.T) {
// release build
v0c := "ceph version 12.2.8 (ae699615bac534ea496ee965ac6192cb7e0e07c0) luminous (stable)"
v0d := `
root@7a97f5a78bc6:/# ceph --version
ceph version 12.2.8 (ae699615bac534ea496ee965ac6192cb7e0e07c0) luminous (stable)
`
extractVersionHelper(t, v0c, 12, 2, 8)
extractVersionHelper(t, v0d, 12, 2, 8)
// development build
v1c := "ceph version 14.1.33-403-g7ba6bece41"
v1d := `
bin/ceph --version
*** DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH ***
ceph version 14.1.33-403-g7ba6bece41
(7ba6bece4187eda5d05a9b84211fe6ba8dd287bd) nautilus (rc)
`
extractVersionHelper(t, v1c, 14, 1, 33)
extractVersionHelper(t, v1d, 14, 1, 33)
// build without git version info. it is possible to build the ceph tree
// without a version number, but none of the container builds do this.
// it is arguable that this should be a requirement since we are
// explicitly adding fine-grained versioning to avoid issues with
// release granularity. adding the reverse name-to-version is easy
// enough if this ever becomes a need.
v2c := "ceph version Development (no_version) nautilus (rc)"
v2d := `
bin/ceph --version
*** DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH ***
ceph version Development (no_version) nautilus (rc)
`
v, err := ExtractCephVersion(v2c)
assert.Error(t, err)
assert.Nil(t, v)
v, err = ExtractCephVersion(v2d)
assert.Error(t, err)
assert.Nil(t, v)
}
func TestSupported(t *testing.T) {
for _, v := range supportedVersions {
assert.True(t, v.Supported())
}
for _, v := range unsupportedVersions {
assert.False(t, v.Supported())
}
}
func TestIsRelease(t *testing.T) {
assert.True(t, Luminous.isRelease(Luminous))
assert.True(t, Mimic.isRelease(Mimic))
assert.True(t, Nautilus.isRelease(Nautilus))
assert.False(t, Luminous.isRelease(Mimic))
assert.False(t, Luminous.isRelease(Nautilus))
assert.False(t, Mimic.isRelease(Nautilus))
LuminousUpdate := Luminous
LuminousUpdate.Minor = 33
LuminousUpdate.Extra = 4
assert.True(t, LuminousUpdate.isRelease(Luminous))
MimicUpdate := Mimic
MimicUpdate.Minor = 33
MimicUpdate.Extra = 4
assert.True(t, MimicUpdate.isRelease(Mimic))
NautilusUpdate := Nautilus
NautilusUpdate.Minor = 33
NautilusUpdate.Extra = 4
assert.True(t, NautilusUpdate.isRelease(Nautilus))
}
func TestIsReleaseX(t *testing.T) {
assert.True(t, Luminous.IsLuminous())
assert.False(t, Mimic.IsLuminous())
assert.False(t, Nautilus.IsLuminous())
}
func TestVersionAtLeast(t *testing.T) {
assert.True(t, Luminous.IsAtLeast(Luminous))
assert.False(t, Luminous.IsAtLeast(Mimic))
assert.False(t, Luminous.IsAtLeast(Nautilus))
assert.True(t, Mimic.IsAtLeast(Luminous))
assert.True(t, Mimic.IsAtLeast(Mimic))
assert.False(t, Mimic.IsAtLeast(Nautilus))
assert.True(t, Nautilus.IsAtLeast(Luminous))
assert.True(t, Nautilus.IsAtLeast(Mimic))
assert.True(t, Nautilus.IsAtLeast(Nautilus))
assert.True(t, (&CephVersion{1, 0, 0}).IsAtLeast(CephVersion{0, 0, 0}))
assert.False(t, (&CephVersion{0, 0, 0}).IsAtLeast(CephVersion{1, 0, 0}))
assert.True(t, (&CephVersion{1, 1, 0}).IsAtLeast(CephVersion{1, 0, 0}))
assert.False(t, (&CephVersion{1, 0, 0}).IsAtLeast(CephVersion{1, 1, 0}))
assert.True(t, (&CephVersion{1, 1, 1}).IsAtLeast(CephVersion{1, 1, 0}))
assert.False(t, (&CephVersion{1, 1, 0}).IsAtLeast(CephVersion{1, 1, 1}))
assert.True(t, (&CephVersion{1, 1, 1}).IsAtLeast(CephVersion{1, 1, 1}))
}
func TestVersionAtLeastX(t *testing.T) {
assert.True(t, Nautilus.IsAtLeastNautilus())
assert.True(t, Nautilus.IsAtLeastMimic())
assert.True(t, Mimic.IsAtLeastMimic())
assert.False(t, Luminous.IsAtLeastMimic())
assert.False(t, Luminous.IsAtLeastNautilus())
assert.False(t, Mimic.IsAtLeastNautilus())
}