Skip to content

Commit

Permalink
Added new mongo version support for OS
Browse files Browse the repository at this point in the history
Signed-off-by: Alessandro Sanino <[email protected]>
  • Loading branch information
saniales committed Aug 20, 2022
1 parent 26404ff commit d76df27
Show file tree
Hide file tree
Showing 11 changed files with 100 additions and 129 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
go_version: [1.17, 1.18]
go_version: [1.17, 1.18, 1.19]
os: [ubuntu-latest, macOS-latest]
steps:
- name: Set up Go ${{ matrix.go_version }}
uses: actions/setup-go@v2
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go_version }}
id: go

- name: Check out code into the Go module directory
uses: actions/checkout@v2
uses: actions/checkout@v3

- name: Run Unit Tests
run: ./scripts/runUnitTests.sh
11 changes: 11 additions & 0 deletions mongobin/downloadSpec.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ type DownloadSpec struct {
Arch string

// OSName is one of:
// - ubuntu2204
// - ubuntu2004
// - ubuntu1804
// - ubuntu1604
// - ubuntu1404
Expand Down Expand Up @@ -221,6 +223,12 @@ func osNameFromOsRelease(osRelease map[string]string, mongoVersion []int) string
return ""
}
func osNameFromUbuntuRelease(majorVersion int, mongoVersion []int) string {
if majorVersion >= 22 && versionGTE(mongoVersion, []int{4, 0, 1}) {
return "ubuntu2204"
}
if majorVersion >= 20 && versionGTE(mongoVersion, []int{4, 0, 1}) {
return "ubuntu2004"
}
if majorVersion >= 18 && versionGTE(mongoVersion, []int{4, 0, 1}) {
return "ubuntu1804"
}
Expand All @@ -234,6 +242,9 @@ func osNameFromUbuntuRelease(majorVersion int, mongoVersion []int) string {
}

func osNameFromDebianRelease(majorVersion int, mongoVersion []int) string {
if majorVersion >= 11 && versionGTE(mongoVersion, []int{4, 2, 1}) {
return "debian11"
}
if majorVersion >= 10 && versionGTE(mongoVersion, []int{4, 2, 1}) {
return "debian10"
}
Expand Down
147 changes: 66 additions & 81 deletions mongobin/downloadSpec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ import (
"github.com/tryvium-travels/memongo/mongobin"
)

const testMongoVersion = "4.0.5"
const (
testMongoVersion = "4.0.5"
latestMongoVersion = "6.0.0"
)

func TestMakeDownloadSpec(t *testing.T) {
tests := map[string]struct {
Expand Down Expand Up @@ -48,19 +51,45 @@ func TestMakeDownloadSpec(t *testing.T) {

expectedError: "memongo does not support automatic downloading on your system: your platform, windows, is not supported",
},
"ubuntu 18.10": {
etcFolder: "ubuntu1810",
"ubuntu 22.04 newer mongo": {
mongoVersion: latestMongoVersion,
etcFolder: "ubuntu2204",

expectedSpec: &mongobin.DownloadSpec{
Version: latestMongoVersion,
Platform: "linux",
SSLBuildNeeded: false,
Arch: "x86_64",
OSName: "ubuntu2204",
},
},
"ubuntu 22.04": {
mongoVersion: testMongoVersion,
etcFolder: "ubuntu2204",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Platform: "linux",
SSLBuildNeeded: false,
Arch: "x86_64",
OSName: "ubuntu1804",
OSName: "ubuntu2204",
},
},
"ubuntu 20.04": {
mongoVersion: testMongoVersion,
etcFolder: "ubuntu2004",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Platform: "linux",
SSLBuildNeeded: false,
Arch: "x86_64",
OSName: "ubuntu2004",
},
},
"ubuntu 18.04": {
etcFolder: "ubuntu1804",
mongoVersion: testMongoVersion,
etcFolder: "ubuntu1804",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand Down Expand Up @@ -95,7 +124,8 @@ func TestMakeDownloadSpec(t *testing.T) {
},
},
"ubuntu 16.04": {
etcFolder: "ubuntu1604",
mongoVersion: testMongoVersion,
etcFolder: "ubuntu1604",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand All @@ -117,19 +147,9 @@ func TestMakeDownloadSpec(t *testing.T) {
OSName: "ubuntu1404",
},
},
"ubuntu 14.04": {
etcFolder: "ubuntu1404",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Platform: "linux",
SSLBuildNeeded: false,
Arch: "x86_64",
OSName: "ubuntu1404",
},
},
"SUSE 12": {
etcFolder: "suse12",
mongoVersion: testMongoVersion,
etcFolder: "suse12",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand All @@ -140,7 +160,8 @@ func TestMakeDownloadSpec(t *testing.T) {
},
},
"CENTOS 8": {
etcFolder: "centos8",
mongoVersion: testMongoVersion,
etcFolder: "centos8",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand All @@ -151,7 +172,8 @@ func TestMakeDownloadSpec(t *testing.T) {
},
},
"RHEL 7": {
etcFolder: "rhel7",
mongoVersion: testMongoVersion,
etcFolder: "rhel7",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand All @@ -162,7 +184,8 @@ func TestMakeDownloadSpec(t *testing.T) {
},
},
"RHEL 6": {
etcFolder: "rhel6",
mongoVersion: testMongoVersion,
etcFolder: "rhel6",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand All @@ -173,7 +196,8 @@ func TestMakeDownloadSpec(t *testing.T) {
},
},
"Debian buster": {
etcFolder: "debianbuster",
mongoVersion: testMongoVersion,
etcFolder: "debianbuster",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand All @@ -183,6 +207,18 @@ func TestMakeDownloadSpec(t *testing.T) {
OSName: "debian92",
},
},
"Debian bullseye new mongo": {
mongoVersion: latestMongoVersion,
etcFolder: "debianbullseye",

expectedSpec: &mongobin.DownloadSpec{
Version: latestMongoVersion,
Platform: "linux",
SSLBuildNeeded: false,
Arch: "x86_64",
OSName: "debian11",
},
},
"Debian buster new mongo": {
mongoVersion: "4.2.1",
etcFolder: "debianbuster",
Expand Down Expand Up @@ -220,7 +256,8 @@ func TestMakeDownloadSpec(t *testing.T) {
},
},
"Debian stretch": {
etcFolder: "debianstretch",
mongoVersion: testMongoVersion,
etcFolder: "debianstretch",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand Down Expand Up @@ -255,7 +292,8 @@ func TestMakeDownloadSpec(t *testing.T) {
},
},
"Debian jessie": {
etcFolder: "debianjessie",
mongoVersion: testMongoVersion,
etcFolder: "debianjessie",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand All @@ -278,7 +316,8 @@ func TestMakeDownloadSpec(t *testing.T) {
},
},
"Amazon Linux": {
etcFolder: "amazon",
mongoVersion: testMongoVersion,
etcFolder: "amazon",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand All @@ -289,7 +328,8 @@ func TestMakeDownloadSpec(t *testing.T) {
},
},
"Amazon Linux 2": {
etcFolder: "amazon2",
mongoVersion: testMongoVersion,
etcFolder: "amazon2",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Expand All @@ -311,50 +351,6 @@ func TestMakeDownloadSpec(t *testing.T) {
OSName: "amazon",
},
},
"Old Debian": {
etcFolder: "old-debian",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Platform: "linux",
SSLBuildNeeded: false,
Arch: "x86_64",
OSName: "",
},
},
"Old RedHat": {
etcFolder: "old-redhat",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Platform: "linux",
SSLBuildNeeded: false,
Arch: "x86_64",
OSName: "",
},
},
"Old SUSE": {
etcFolder: "old-sles",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Platform: "linux",
SSLBuildNeeded: false,
Arch: "x86_64",
OSName: "",
},
},
"Old Ubuntu": {
etcFolder: "old-ubuntu",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Platform: "linux",
SSLBuildNeeded: false,
Arch: "x86_64",
OSName: "",
},
},
"Other Linux": {
etcFolder: "other-linux",

Expand All @@ -377,17 +373,6 @@ func TestMakeDownloadSpec(t *testing.T) {
OSName: "",
},
},
"Malformed ubuntu": {
etcFolder: "ubuntu-malformed",

expectedSpec: &mongobin.DownloadSpec{
Version: testMongoVersion,
Platform: "linux",
SSLBuildNeeded: false,
Arch: "x86_64",
OSName: "",
},
},
"Other OS": {
goOs: "foo",

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PRETTY_NAME="Debian GNU/Linux 7 (old)"
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="7"
VERSION="7 (old)"
VERSION_ID="11"
VERSION="11 (buster)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
Expand Down
1 change: 0 additions & 1 deletion mongobin/testdata/etc/old-redhat/redhat-release

This file was deleted.

7 changes: 0 additions & 7 deletions mongobin/testdata/etc/old-sles/os-release

This file was deleted.

9 changes: 0 additions & 9 deletions mongobin/testdata/etc/old-ubuntu/os-release

This file was deleted.

11 changes: 0 additions & 11 deletions mongobin/testdata/etc/ubuntu-malformed/os-release

This file was deleted.

9 changes: 0 additions & 9 deletions mongobin/testdata/etc/ubuntu1404/os-release

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
NAME="Ubuntu"
VERSION="18.10 (Cosmic Cuttlefish)"
VERSION="20.04 (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.10"
VERSION_ID="18.10"
PRETTY_NAME="Ubuntu 20.04"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=cosmic
UBUNTU_CODENAME=cosmic
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
12 changes: 12 additions & 0 deletions mongobin/testdata/etc/ubuntu2204/os-release
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
NAME="Ubuntu"
VERSION="22.04 (Jammy Jellyfish)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 22.04"
VERSION_ID="22.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=jammy
UBUNTU_CODENAME=jammy

0 comments on commit d76df27

Please sign in to comment.