forked from rook/rook
167 lines
5.5 KiB
Go
167 lines
5.5 KiB
Go
package version
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
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 TestCephVersionFormatted(t *testing.T) {
|
|
assert.Equal(t, "ceph version 14.0.0 nautilus", Nautilus.CephVersionFormatted())
|
|
assert.Equal(t, "ceph version 13.0.0 mimic", Mimic.CephVersionFormatted())
|
|
assert.Equal(t, "ceph version 12.0.0 luminous", Luminous.CephVersionFormatted())
|
|
}
|
|
|
|
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())
|
|
assert.False(t, Octopus.IsLuminous())
|
|
|
|
assert.False(t, Luminous.IsMimic())
|
|
assert.True(t, Mimic.IsMimic())
|
|
assert.False(t, Nautilus.IsMimic())
|
|
assert.False(t, Octopus.IsMimic())
|
|
}
|
|
|
|
func TestVersionAtLeast(t *testing.T) {
|
|
assert.True(t, Luminous.IsAtLeast(Luminous))
|
|
assert.False(t, Luminous.IsAtLeast(Mimic))
|
|
assert.False(t, Luminous.IsAtLeast(Nautilus))
|
|
assert.False(t, Luminous.IsAtLeast(Octopus))
|
|
assert.True(t, Mimic.IsAtLeast(Luminous))
|
|
assert.True(t, Mimic.IsAtLeast(Mimic))
|
|
assert.False(t, Mimic.IsAtLeast(Nautilus))
|
|
assert.False(t, Mimic.IsAtLeast(Octopus))
|
|
assert.True(t, Nautilus.IsAtLeast(Luminous))
|
|
assert.True(t, Nautilus.IsAtLeast(Mimic))
|
|
assert.True(t, Nautilus.IsAtLeast(Nautilus))
|
|
assert.False(t, Nautilus.IsAtLeast(Octopus))
|
|
assert.True(t, Octopus.IsAtLeast(Luminous))
|
|
assert.True(t, Octopus.IsAtLeast(Mimic))
|
|
assert.True(t, Octopus.IsAtLeast(Nautilus))
|
|
assert.True(t, Octopus.IsAtLeast(Octopus))
|
|
|
|
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, Octopus.IsAtLeastOctopus())
|
|
assert.True(t, Octopus.IsAtLeastNautilus())
|
|
assert.True(t, Octopus.IsAtLeastMimic())
|
|
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())
|
|
assert.False(t, Nautilus.IsAtLeastOctopus())
|
|
}
|