From af6a1bd178e3e11c9a91f944dfb6adf777a5fbc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Mur=20Er=C5=BEen?= Date: Fri, 24 Jan 2025 17:24:37 +0100 Subject: [PATCH] Update and fix nightly install tests (#1446) --- .github/workflows/nightly-test.yml | 10 +- Cargo.toml | 4 +- flake.nix | 14 ++- tests/common/docker.rs | 60 +++-------- tests/github-nightly/common.rs | 87 ++++++---------- tests/github-nightly/compat.rs | 52 +++++---- tests/github-nightly/install.rs | 162 ++++------------------------- tests/github-nightly/project.rs | 76 ++++---------- tests/github-nightly/upgrade.rs | 148 ++++---------------------- 9 files changed, 147 insertions(+), 466 deletions(-) diff --git a/.github/workflows/nightly-test.yml b/.github/workflows/nightly-test.yml index 87ee509cc..6889e4c20 100644 --- a/.github/workflows/nightly-test.yml +++ b/.github/workflows/nightly-test.yml @@ -15,17 +15,16 @@ env: jobs: nightly-test: - runs-on: ${{ matrix.os }} - timeout-minutes: 60 strategy: max-parallel: 4 matrix: - os: [ubuntu-latest] test_suite: - compat - install - upgrade - project + runs-on: ubuntu-latest + timeout-minutes: 60 steps: - uses: actions/checkout@v4 with: @@ -34,8 +33,11 @@ jobs: - name: Install musl-tools run: "sudo apt-get install musl-tools" + - name: Remove rust-toolchain.toml + run: rm rust-toolchain.toml + - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@d0e72ca3bfdc51937a4f81431ccbed269ef9f2a2 + uses: dtolnay/rust-toolchain@stable with: components: "cargo,rustc,rust-std" toolchain: "stable" diff --git a/Cargo.toml b/Cargo.toml index 74d4c1874..5c8bfc633 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -136,9 +136,9 @@ gethostname = "0.5.0" bitvec = "1.0.1" nom = "7.1.3" bitflags = "2.6" -renamore = "0.3.2" +renamore = {version="0.3.2", features = ["always-fallback"]} anes = "0.2.0" -geozero = {version="0.14.0",features=["with-wkb"]} +geozero = {version="0.14.0", features=["with-wkb"]} [dependencies.bzip2] version = "*" diff --git a/flake.nix b/flake.nix index 282db3de1..d48e69049 100644 --- a/flake.nix +++ b/flake.nix @@ -38,10 +38,16 @@ in { devShells.default = pkgs.mkShell { buildInputs = common ++ [ - (fenix_pkgs.fromToolchainFile { - file = ./rust-toolchain.toml; - sha256 = "sha256-VZZnlyP69+Y3crrLHQyJirqlHrTtGTsyiSnZB8jEvVo="; - }) + (fenix_pkgs.combine [ + (fenix_pkgs.fromToolchainFile { + file = ./rust-toolchain.toml; + sha256 = "sha256-VZZnlyP69+Y3crrLHQyJirqlHrTtGTsyiSnZB8jEvVo="; + }) + (fenix_pkgs.targets.x86_64-unknown-linux-musl.fromToolchainFile { + file = ./rust-toolchain.toml; + sha256 = "sha256-VZZnlyP69+Y3crrLHQyJirqlHrTtGTsyiSnZB8jEvVo="; + }) + ]) ]; }; }; diff --git a/tests/common/docker.rs b/tests/common/docker.rs index d032cc29c..eeb108a5d 100644 --- a/tests/common/docker.rs +++ b/tests/common/docker.rs @@ -25,11 +25,11 @@ import asyncio import sys import edgedb -assert edgedb.connect(sys.argv[1]).query_one("SELECT 1+1") == 2 +assert edgedb.create_client(sys.argv[1]).query_single("SELECT 1+1") == 2 async def test_async(): - conn = await edgedb.async_connect(sys.argv[1]) - return await conn.query_one("SELECT 1+1") + conn = edgedb.create_async_client(sys.argv[1]) + return await conn.query_single("SELECT 1+1") assert asyncio.get_event_loop().run_until_complete(test_async()) == 2 "### } @@ -37,18 +37,16 @@ assert asyncio.get_event_loop().run_until_complete(test_async()) == 2 pub fn edbconnect_js() -> &'static str { r###" const edgedb = require('edgedb') -edgedb.connect(process.argv[2]) -.then(function(conn) { - return conn.queryOne('SELECT 1+1') -}) -.then(function(value) { - console.assert(value == 2, value) - process.exit(0) -}) -.catch(e => { - console.error("Error", e) - process.exit(1) -}) +let client = edgedb.createClient(process.argv[2]) +client.querySingle('SELECT 1+1') + .then(function(value) { + console.assert(value == 2, value) + process.exit(0) + }) + .catch(e => { + console.error("Error", e) + process.exit(1) + }) "### } @@ -167,35 +165,6 @@ pub fn run(tagname: &str, script: &str) -> assert_cmd::assert::Assert { .assert() } -pub fn run_docker(tagname: &str, script: &str) -> assert_cmd::assert::Assert { - let script = format!( - r###" - export EDGEDB_SKIP_DOCKER_CHECK=yes - docker ps -q -f 'name=edgedb_test' | xargs -r docker container kill - docker system prune --all --force - docker volume list -q -f 'name=edgedb_test' | xargs -r docker volume rm - - {script} - "###, - script = script - ); - let path = if let Ok(path) = env::var("DOCKER_VOLUME_PATH") { - path.to_string() - } else { - "/var/run/docker.sock".to_string() - }; - Command::new("docker") - .arg("run") - .arg("--rm") - .arg("-u") - .arg("1000") - .arg(format!("--volume={0}:{0}", path)) - .arg("--net=host") - .arg(tagname) - .args(["bash", "-exc", &script]) - .assert() -} - pub fn run_systemd(tagname: &str, script: &str) -> assert_cmd::assert::Assert { let script = format!( r###" @@ -205,8 +174,7 @@ pub fn run_systemd(tagname: &str, script: &str) -> assert_cmd::assert::Assert { /lib/systemd/systemd --user --log-level=debug & {script} - "###, - script = script + "### ); let script = format!( r###" diff --git a/tests/github-nightly/common.rs b/tests/github-nightly/common.rs index d30aedaed..6c3bf8d09 100644 --- a/tests/github-nightly/common.rs +++ b/tests/github-nightly/common.rs @@ -1,36 +1,33 @@ -pub fn dock_ubuntu(codename: &str) -> String { - format!( - r###" - FROM ubuntu:{codename} - ENV DEBIAN_FRONTEND=noninteractive - RUN apt-get update && apt-get install -y \ - ca-certificates sudo gnupg2 apt-transport-https curl \ - software-properties-common dbus-user-session - RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - - RUN add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" - RUN apt-get update && apt-get install -y docker-ce-cli - RUN adduser --uid 1000 --home /home/user1 \ - --shell /bin/bash --ingroup users --gecos "Test User" \ - user1 - ADD ./edgedb /usr/bin/edgedb - ADD ./sudoers /etc/sudoers - "###, - codename = codename - ) +#[derive(Debug, Clone)] +pub enum Distro { + Ubuntu(&'static str), + Debian(&'static str), } -pub fn dock_ubuntu_jspy(codename: &str) -> String { +impl Distro { + pub fn tag_name(&self) -> String { + match self { + Distro::Ubuntu(cn) => format!("test-ubuntu-{cn}"), + Distro::Debian(cn) => format!("test-debian-{cn}"), + } + } + + pub fn dockerfile(&self) -> String { + match self { + Distro::Ubuntu(codename) => dock_ubuntu(codename), + Distro::Debian(codename) => dock_debian(codename), + } + } +} + +pub fn dock_ubuntu(codename: &str) -> String { format!( r###" FROM ubuntu:{codename} ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y \ ca-certificates sudo gnupg2 apt-transport-https curl \ - software-properties-common dbus-user-session \ - python3-pip npm + software-properties-common dbus-user-session RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - RUN add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ @@ -40,29 +37,6 @@ pub fn dock_ubuntu_jspy(codename: &str) -> String { RUN adduser --uid 1000 --home /home/user1 \ --shell /bin/bash --ingroup users --gecos "Test User" \ user1 - RUN pip3 install edgedb - RUN npm install edgedb - ADD ./edgedb /usr/bin/edgedb - ADD ./sudoers /etc/sudoers - ADD ./edbconnect.py /usr/bin/edbconnect.py - ADD ./edbconnect.js /usr/bin/edbconnect.js - "###, - codename = codename - ) -} - -pub fn dock_centos(codename: u32) -> String { - format!( - r###" - FROM centos:{codename} - RUN yum -y install sudo yum-utils systemd - RUN yum-config-manager \ - --add-repo \ - https://download.docker.com/linux/centos/docker-ce.repo - RUN yum -y install docker-ce-cli - RUN adduser --uid 1000 --home /home/user1 \ - --shell /bin/bash --group users \ - user1 ADD ./edgedb /usr/bin/edgedb ADD ./sudoers /etc/sudoers "###, @@ -75,14 +49,15 @@ pub fn dock_debian(codename: &str) -> String { r###" FROM debian:{codename} ENV DEBIAN_FRONTEND=noninteractive - RUN apt-get update && apt-get install -y \ - ca-certificates sudo gnupg2 apt-transport-https curl \ - software-properties-common dbus-user-session - RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - - RUN add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/debian \ - $(lsb_release -cs) \ - stable" + RUN apt-get update && apt-get install -y ca-certificates curl sudo + RUN install -m 0755 -d /etc/apt/keyrings + RUN curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc + RUN chmod a+r /etc/apt/keyrings/docker.asc + + RUN echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \ + > /etc/apt/sources.list.d/docker.list RUN apt-get update && apt-get install -y docker-ce-cli RUN adduser --uid 1000 --home /home/user1 \ --shell /bin/bash --ingroup users --gecos "Test User" \ diff --git a/tests/github-nightly/compat.rs b/tests/github-nightly/compat.rs index d35f02705..b390f75ab 100644 --- a/tests/github-nightly/compat.rs +++ b/tests/github-nightly/compat.rs @@ -1,40 +1,37 @@ -use test_case::test_case; +use test_case::test_matrix; -use crate::common::{dock_centos, dock_debian, dock_ubuntu}; +use crate::common::Distro; use crate::docker::run_systemd; use crate::docker::{build_image, Context}; use crate::measure::Time; -// stable -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), "")] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), "")] -#[test_case("edbtest_centos8", &dock_centos(8), "")] -#[test_case("edbtest_buster", &dock_debian("buster"), "")] -#[test_case("edbtest_stretch", &dock_debian("stretch"), "")] -#[test_case("edbtest_focal", &dock_ubuntu("focal"), "")] -// alpha7 -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), "--version=1-alpha7")] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), "--version=1-alpha7")] -#[test_case("edbtest_centos8", &dock_centos(8), "--version=1-alpha7")] -#[test_case("edbtest_buster", &dock_debian("buster"), "--version=1-alpha7")] -#[test_case("edbtest_stretch", &dock_debian("stretch"), "--version=1-alpha7")] -#[test_case("edbtest_focal", &dock_ubuntu("focal"), "--version=1-alpha7")] -// nightly -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), "--nightly")] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), "--nightly")] -#[test_case("edbtest_centos8", &dock_centos(8), "--nightly")] -#[test_case("edbtest_buster", &dock_debian("buster"), "--nightly")] -#[test_case("edbtest_stretch", &dock_debian("stretch"), "--nightly")] -#[test_case("edbtest_focal", &dock_ubuntu("focal"), "--nightly")] -fn cli(tagname: &str, dockerfile: &str, version: &str) -> anyhow::Result<()> { +#[test_matrix( + [ + Distro::Ubuntu("focal"), + Distro::Ubuntu("bionic"), + Distro::Ubuntu("xenial"), + Distro::Debian("bookworm"), + Distro::Debian("bullseye"), + Distro::Debian("buster"), + ], + [ + "", // latest + "--version=4.8", // previous + "--nightly", // nightly + ] +)] +fn cli(distro: Distro, version: &str) -> anyhow::Result<()> { + let dockerfile = distro.dockerfile(); + let tag_name = distro.tag_name(); + let _tm = Time::measure(); let context = Context::new() .add_file("Dockerfile", dockerfile)? .add_sudoers()? .add_bin()?; - build_image(context, tagname)?; + build_image(context, &tag_name)?; run_systemd( - tagname, + &tag_name, &format!( r###" edgedb server install {version} @@ -43,8 +40,7 @@ fn cli(tagname: &str, dockerfile: &str, version: &str) -> anyhow::Result<()> { query "SELECT 1+1") test "$val" = "2" - # changed in 1-alpha.7 due to dropping implicit __tid__ - edgedb -Itest1 list-scalar-types --system + edgedb -Itest1 list scalars --system "###, version = version, ), diff --git a/tests/github-nightly/install.rs b/tests/github-nightly/install.rs index 483f009d5..21485a08c 100644 --- a/tests/github-nightly/install.rs +++ b/tests/github-nightly/install.rs @@ -1,51 +1,30 @@ -use predicates::str::contains; -use test_case::test_case; +use test_case::test_matrix; -use crate::common::{dock_centos, dock_debian, dock_ubuntu, dock_ubuntu_jspy}; +use crate::common::Distro; +use crate::docker::run_systemd; use crate::docker::{build_image, Context}; -use crate::docker::{run, run_docker, run_systemd}; use crate::measure::Time; -#[test_case("edbtest_centos7", &dock_centos(7))] -fn package_no_systemd(tagname: &str, dockerfile: &str) -> anyhow::Result<()> { - let _tm = Time::measure(); - let context = Context::new() - .add_file("Dockerfile", dockerfile)? - .add_sudoers()? - .add_bin()?; - build_image(context, tagname)?; - run( - tagname, - r###" - edgedb server install - edgedb instance create test1 - "###, - ) - .code(2) - .stderr(contains("Bootstrapping complete")) - .stderr(contains("start --foreground")); - Ok(()) -} +#[test_matrix( + [ + Distro::Ubuntu("focal"), + Distro::Ubuntu("bionic"), + Distro::Debian("bookworm"), + Distro::Debian("bullseye"), + ], + ["", "--nightly"] +)] +fn package(distro: Distro, version: &str) -> anyhow::Result<()> { + let tag_name = distro.tag_name(); -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), "")] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), "")] -#[test_case("edbtest_centos8", &dock_centos(8), "")] -#[test_case("edbtest_buster", &dock_debian("buster"), "")] -#[test_case("edbtest_stretch", &dock_debian("stretch"), "")] -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), "--nightly")] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), "--nightly")] -#[test_case("edbtest_centos8", &dock_centos(8), "--nightly")] -#[test_case("edbtest_buster", &dock_debian("buster"), "--nightly")] -#[test_case("edbtest_stretch", &dock_debian("stretch"), "--nightly")] -fn package(tagname: &str, dockerfile: &str, version: &str) -> anyhow::Result<()> { let _tm = Time::measure(); let context = Context::new() - .add_file("Dockerfile", dockerfile)? + .add_file("Dockerfile", distro.dockerfile())? .add_sudoers()? .add_bin()?; - build_image(context, tagname)?; + build_image(context, &tag_name)?; run_systemd( - tagname, + &tag_name, &format!( r###" edgedb server install {version} @@ -53,111 +32,8 @@ fn package(tagname: &str, dockerfile: &str, version: &str) -> anyhow::Result<()> val=$(edgedb -Itest1 --wait-until-available=60s \ query "SELECT 1+1") test "$val" = "2" - edgedb instance logs test1 - timeout 180 edgedb instance destroy test1 - edgedb server uninstall --all --verbose - "###, - version = version, - ), - ) - .success(); - Ok(()) -} - -#[test_case("edbtest_focal", &dock_ubuntu_jspy("focal"), "")] -#[test_case("edbtest_focal", &dock_ubuntu_jspy("focal"), "--nightly")] -fn package_jspy(tagname: &str, dockerfile: &str, version: &str) -> anyhow::Result<()> { - let _tm = Time::measure(); - let context = Context::new() - .add_file("Dockerfile", dockerfile)? - .add_sudoers()? - .add_edbconnect()? - .add_bin()?; - build_image(context, tagname)?; - run_systemd( - tagname, - &format!( - r###" - edgedb server install {version} - edgedb instance create test1 {version} - val=$(edgedb -Itest1 --wait-until-available=60s \ - query "SELECT 1+1") - test "$val" = "2" - python3 /usr/bin/edbconnect.py test1 - node /usr/bin/edbconnect.js test1 - edgedb instance logs test1 - timeout 180 edgedb instance destroy test1 - edgedb server uninstall --all --verbose - "###, - version = version, - ), - ) - .success(); - Ok(()) -} - -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), "")] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), "")] -#[test_case("edbtest_centos7", &dock_centos(7), "")] -#[test_case("edbtest_centos8", &dock_centos(8), "")] -#[test_case("edbtest_buster", &dock_debian("buster"), "")] -#[test_case("edbtest_stretch", &dock_debian("stretch"), "")] -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), "--nightly")] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), "--nightly")] -#[test_case("edbtest_centos7", &dock_centos(7), "--nightly")] -#[test_case("edbtest_centos8", &dock_centos(8), "--nightly")] -#[test_case("edbtest_buster", &dock_debian("buster"), "--nightly")] -#[test_case("edbtest_stretch", &dock_debian("stretch"), "--nightly")] -fn docker(tagname: &str, dockerfile: &str, version: &str) -> anyhow::Result<()> { - let _tm = Time::measure(); - let context = Context::new() - .add_file("Dockerfile", dockerfile)? - .add_sudoers()? - .add_bin()?; - build_image(context, tagname)?; - run_docker( - tagname, - &format!( - r###" - edgedb server install --method=docker {version} - RUST_LOG=info edgedb instance create test1 {version} - val=$(edgedb -Itest1 --wait-until-available=60s \ - query "SELECT 1+1") - test "$val" = "2" - edgedb instance logs test1 - timeout 180 edgedb instance destroy test1 - edgedb server uninstall --all --verbose - "###, - version = version, - ), - ) - .success(); - Ok(()) -} - -#[test_case("edbtest_focal", &dock_ubuntu_jspy("focal"), "")] -#[test_case("edbtest_focal", &dock_ubuntu_jspy("focal"), "--nightly")] -fn docker_jspy(tagname: &str, dockerfile: &str, version: &str) -> anyhow::Result<()> { - let _tm = Time::measure(); - let context = Context::new() - .add_file("Dockerfile", dockerfile)? - .add_sudoers()? - .add_edbconnect()? - .add_bin()?; - build_image(context, tagname)?; - run_docker( - tagname, - &format!( - r###" - edgedb server install --method=docker {version} - edgedb instance create test1 {version} - val=$(edgedb -Itest1 --wait-until-available=60s \ - query "SELECT 1+1") - test "$val" = "2" - python3 /usr/bin/edbconnect.py test1 - node /usr/bin/edbconnect.js test1 - edgedb instance logs test1 - timeout 180 edgedb instance destroy test1 + edgedb instance logs -I test1 + timeout 180 edgedb instance destroy -I test1 --non-interactive edgedb server uninstall --all --verbose "###, version = version, diff --git a/tests/github-nightly/project.rs b/tests/github-nightly/project.rs index 7a585baea..60b2c69cf 100644 --- a/tests/github-nightly/project.rs +++ b/tests/github-nightly/project.rs @@ -1,38 +1,35 @@ -use test_case::test_case; +use test_case::test_matrix; -use crate::common::{dock_centos, dock_debian, dock_ubuntu}; +use crate::common::Distro; +use crate::docker::run_systemd; use crate::docker::{build_image, Context}; -use crate::docker::{run_docker, run_systemd}; use crate::measure::Time; -const NIGHTLY: &str = "--server-version=nightly"; +#[test_matrix( + [ + Distro::Ubuntu("focal"), + Distro::Ubuntu("bionic"), + Distro::Debian("bookworm"), + Distro::Debian("bullseye"), + ], + ["", "--server-version=nightly"] +)] +fn simple_package(distro: Distro, version: &str) -> anyhow::Result<()> { + let tag_name = distro.tag_name(); -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), "")] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), "")] -#[test_case("edbtest_centos8", &dock_centos(8), "")] -#[test_case("edbtest_buster", &dock_debian("buster"), "")] -#[test_case("edbtest_stretch", &dock_debian("stretch"), "")] -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), NIGHTLY)] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), NIGHTLY)] -#[test_case("edbtest_centos8", &dock_centos(8), NIGHTLY)] -#[test_case("edbtest_buster", &dock_debian("buster"), NIGHTLY)] -#[test_case("edbtest_stretch", &dock_debian("stretch"), NIGHTLY)] -fn simple_package(tagname: &str, dockerfile: &str, version: &str) -> anyhow::Result<()> { let _tm = Time::measure(); let context = Context::new() - .add_file("Dockerfile", dockerfile)? + .add_file("Dockerfile", distro.dockerfile())? .add_sudoers()? .add_bin()?; - build_image(context, tagname)?; + build_image(context, &tag_name)?; run_systemd( - tagname, + &tag_name, &format!( r###" mkdir -p /tmp/test1 cd /tmp/test1 - edgedb project init --non-interactive \ - --server-install-method=package \ - {version} + edgedb project init --non-interactive {version} val=$(edgedb --wait-until-available=60s query "SELECT 7+8") test "$val" = "15" timeout 120 edgedb project unlink \ @@ -44,40 +41,3 @@ fn simple_package(tagname: &str, dockerfile: &str, version: &str) -> anyhow::Res .success(); Ok(()) } - -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), "")] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), "")] -#[test_case("edbtest_centos8", &dock_centos(8), "")] -#[test_case("edbtest_buster", &dock_debian("buster"), "")] -#[test_case("edbtest_stretch", &dock_debian("stretch"), "")] -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"), NIGHTLY)] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"), NIGHTLY)] -#[test_case("edbtest_centos8", &dock_centos(8), NIGHTLY)] -#[test_case("edbtest_buster", &dock_debian("buster"), NIGHTLY)] -#[test_case("edbtest_stretch", &dock_debian("stretch"), NIGHTLY)] -fn simple_docker(tagname: &str, dockerfile: &str, version: &str) -> anyhow::Result<()> { - let _tm = Time::measure(); - let context = Context::new() - .add_file("Dockerfile", dockerfile)? - .add_sudoers()? - .add_bin()?; - build_image(context, tagname)?; - run_docker( - tagname, - &format!( - r###" - mkdir -p /tmp/test1 - cd /tmp/test1 - edgedb project init --non-interactive \ - --server-install-method=docker \ - {version} - val=$(edgedb --wait-until-available=60s query "SELECT 7+8") - test "$val" = "15" - edgedb project unlink --destroy-server-instance --non-interactive - "###, - version = version, - ), - ) - .success(); - Ok(()) -} diff --git a/tests/github-nightly/upgrade.rs b/tests/github-nightly/upgrade.rs index 107a526c7..a15e0556f 100644 --- a/tests/github-nightly/upgrade.rs +++ b/tests/github-nightly/upgrade.rs @@ -1,49 +1,14 @@ use test_case::test_case; -use crate::common::{dock_centos, dock_debian, dock_ubuntu}; +use crate::common::{dock_debian, dock_ubuntu}; +use crate::docker::run_systemd; use crate::docker::{build_image, Context}; -use crate::docker::{run_docker, run_systemd}; use crate::measure::Time; -#[test_case("edbtest_centos7", &dock_centos(7))] -fn package_no_systemd(tagname: &str, dockerfile: &str) -> anyhow::Result<()> { - let _tm = Time::measure(); - let context = Context::new() - .add_file("Dockerfile", dockerfile)? - .add_sudoers()? - .add_bin()?; - build_image(context, tagname)?; - run_systemd( - tagname, - r###" - edgedb server install --version=1-alpha7 - edgedb instance create test1 --start-conf=manual || test "$?" -eq 2 - edgedb instance start --foreground test1 & - edgedb --wait-until-available=60s -Itest1 query ' - CREATE TYPE Type1 { - CREATE PROPERTY prop1 -> str; - } - ' 'INSERT Type1 { prop1 := "value1" }' - kill %1 && wait - - RUST_LOG=debug edgedb instance upgrade test1 --to-version=1-beta1 - - edgedb instance start --foreground test1 & - val=$(edgedb -Itest1 --wait-until-available=60s --tab-separated \ - query 'SELECT Type1 { prop1 }') - test "$val" = "value1" - "###, - ) - .success(); - Ok(()) -} - -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"))] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"))] -#[test_case("edbtest_focal", &dock_ubuntu("focal"))] -#[test_case("edbtest_centos8", &dock_centos(8))] -#[test_case("edbtest_buster", &dock_debian("buster"))] -#[test_case("edbtest_stretch", &dock_debian("stretch"))] +#[test_case("test_focal", &dock_ubuntu("focal"))] +#[test_case("test_bionic", &dock_ubuntu("bionic"))] +#[test_case("test_bookworm", &dock_debian("bookworm"))] +#[test_case("test_bullseye", &dock_debian("bullseye"))] fn package(tagname: &str, dockerfile: &str) -> anyhow::Result<()> { let _tm = Time::measure(); let context = Context::new() @@ -54,109 +19,42 @@ fn package(tagname: &str, dockerfile: &str) -> anyhow::Result<()> { run_systemd( tagname, r###" - edgedb server install --version=1-alpha7 - edgedb instance create test1 + edgedb server install --version=4.8 + edgedb instance create test1 --version=4.8 - ver1=$(edgedb -Itest1 --wait-until-available=60s --tab-separated query ' - SELECT sys::get_version_as_str() - ') - [[ $ver1 =~ ^1\.0-alpha\.7\+ ]] - path=$(edgedb server info --bin-path) - test "$path" = "/usr/bin/edgedb-server-1-alpha7" + ver1=$(edgedb -Itest1 --wait-until-available=60s query --output-format=tab-separated \ + 'SELECT sys::get_version_as_str()') + [[ $ver1 =~ ^4\.8 ]] edgedb --wait-until-available=60s -Itest1 query ' CREATE TYPE Type1 { CREATE PROPERTY prop1 -> str; } ' 'INSERT Type1 { prop1 := "value1" }' - if ! edgedb instance upgrade test1 --to-version=1-beta1; then + if ! edgedb instance upgrade -I test1 --to-version=5 --non-interactive; then res=$? journalctl -xe exit $res fi - ver2=$(edgedb -Itest1 --wait-until-available=60s --tab-separated query ' - SELECT sys::get_version_as_str() - ') - [[ $ver2 =~ ^1\.0-beta\.1\+ ]] - path=$(edgedb server info --bin-path) - test "$path" = "/usr/bin/edgedb-server-1-beta1" + ver2=$(edgedb -Itest1 --wait-until-available=60s query --output-format=tab-separated \ + 'SELECT sys::get_version_as_str()') + [[ $ver2 =~ ^5\.[0-9]+\+ ]] - val=$(edgedb -Itest1 --wait-until-available=60s --tab-separated \ - query 'SELECT Type1 { prop1 }') + val=$(edgedb -Itest1 --wait-until-available=60s query --output-format=tab-separated \ + 'SELECT Type1 { prop1 }') test "$val" = "value1" - if ! edgedb server revert test1 --no-confirm; then + if ! edgedb instance revert -I test1 --no-confirm; then res=$? journalctl -xe exit $res fi - ver2=$(edgedb -Itest1 --wait-until-available=60s --tab-separated query ' - SELECT sys::get_version_as_str() - ') - [[ $ver1 =~ ^1\.0-alpha\.7\+ ]] - - val=$(edgedb -Itest1 --wait-until-available=60s --tab-separated \ - query 'SELECT Type1 { prop1 }') - test "$val" = "value1" - "###, - ) - .success(); - Ok(()) -} - -#[test_case("edbtest_bionic", &dock_ubuntu("bionic"))] -#[test_case("edbtest_xenial", &dock_ubuntu("xenial"))] -#[test_case("edbtest_focal", &dock_ubuntu("focal"))] -#[test_case("edbtest_centos7", &dock_centos(7))] -#[test_case("edbtest_centos8", &dock_centos(8))] -#[test_case("edbtest_buster", &dock_debian("buster"))] -#[test_case("edbtest_stretch", &dock_debian("stretch"))] -fn docker(tagname: &str, dockerfile: &str) -> anyhow::Result<()> { - let _tm = Time::measure(); - let context = Context::new() - .add_file("Dockerfile", dockerfile)? - .add_sudoers()? - .add_bin()?; - build_image(context, tagname)?; - run_docker( - tagname, - r###" - mkdir /tmp/workdir - cd /tmp/workdir - - edgedb server install --version=1-alpha7 --method=docker - edgedb instance create test1 - - ver1=$(edgedb -Itest1 --wait-until-available=60s --tab-separated query ' - SELECT sys::get_version_as_str() - ') - [[ $ver1 =~ ^1\.0-alpha\.7\+ ]] - - edgedb --wait-until-available=60s -Itest1 query ' - CREATE TYPE Type1 { - CREATE PROPERTY prop1 -> str; - } - ' 'INSERT Type1 { prop1 := "value1" }' - edgedb instance upgrade test1 - - ver2=$(edgedb -Itest1 --wait-until-available=60s --tab-separated query ' - SELECT sys::get_version_as_str() - ') - [[ $ver2 =~ ^1\.0-beta\.1\+ ]] - - val=$(edgedb -Itest1 --wait-until-available=60s --tab-separated \ - query 'SELECT Type1 { prop1 }') - test "$val" = "value1" - - edgedb server revert test1 --no-confirm - - ver2=$(edgedb -Itest1 --wait-until-available=60s --tab-separated query ' - SELECT sys::get_version_as_str() - ') - [[ $ver1 =~ ^1\.0-alpha\.7\+ ]] + ver2=$(edgedb -Itest1 --wait-until-available=60s query --output-format=tab-separated \ + 'SELECT sys::get_version_as_str()') + [[ $ver1 =~ ^4\.8 ]] - val=$(edgedb -Itest1 --wait-until-available=60s --tab-separated \ - query 'SELECT Type1 { prop1 }') + val=$(edgedb -Itest1 --wait-until-available=60s query --output-format=tab-separated \ + 'SELECT Type1 { prop1 }') test "$val" = "value1" "###, )