From patchwork Tue Dec 7 08:49:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: You-Sheng Yang X-Patchwork-Id: 1564551 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=ki8ALfhE; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=112.213.38.117; helo=lists.ozlabs.org; envelope-from=patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4J7YsS3G2Xz9sXS for ; Tue, 7 Dec 2021 19:50:20 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4J7YsR4pHDz2yy3 for ; Tue, 7 Dec 2021 19:50:19 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=ki8ALfhE; dkim-atps=neutral X-Original-To: patchwork@lists.ozlabs.org Delivered-To: patchwork@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::62d; helo=mail-pl1-x62d.google.com; envelope-from=vicamo@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=ki8ALfhE; dkim-atps=neutral Received: from mail-pl1-x62d.google.com (mail-pl1-x62d.google.com [IPv6:2607:f8b0:4864:20::62d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4J7YrQ4t2Wz2ywF for ; Tue, 7 Dec 2021 19:49:26 +1100 (AEDT) Received: by mail-pl1-x62d.google.com with SMTP id u17so8936947plg.9 for ; Tue, 07 Dec 2021 00:49:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=nGruQK0jXODszJd8sFtDcYZeFyAmlOmfUp4iQ4X8vlc=; b=ki8ALfhEGJ2eM1t4SJtDGXWV2GLBG/kO1QnlvKZ8/58dWsqaEbxKZX48bwg288IEYU MLVjwvZ5Y2pmaxbk5J+2bBA5iARqfoJjdHkbV/XppW8i+lthCh2lj9/Dy5sapH7pZQ9S vYH94QtY+bCLYyJNnmbjh5xoTdgvIxXjvWmNDfFCvMVgAfb/k3gN2bNomqD6oedxe/Bs sBJoGk39spU8HnxyvhlqPmFPZiLjF4SibUKSMNLI2fNLSoXtP+MKr0hwyZiT1rBwWT0c KCOXAcwNii1732vsrcTljTm2Vl7H8gJvIbHnXyEXASiGgqI2ZrUr/WVTKVe3eM1s2Mjn rChg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nGruQK0jXODszJd8sFtDcYZeFyAmlOmfUp4iQ4X8vlc=; b=QqRmtB+UJF/+QqnTsGpOVPpODg8lvPenk+sBIYgMU9eKjEGHOkh8hjGjwLRilKY7KU jKtg1vmZlqmW7JgAk4DE51KULnyRPzG4XYJVlhqrGK5Tzn/Yl3HsxM0nQ5OxMQ36VNgA LxHuh9pc4tBEAxQo+8hMIXUssiwMfJWrQxgJsr8mJtTd0EPpLr9LNs2sAZSj0G3WOOgW 0pCN+evMb2DuIzHw8myKwwtYYmk4zPFKf6F+voRFiQhNwbiAQe0T2Om39hsDE3IK3mUO R3Z+Vz2nHDDc4JbU9mqVi8Wv2lKv/f0DGksTvMdk/V9FJDdo2JvDt6GulVHnADKjQDum KqpQ== X-Gm-Message-State: AOAM532WVwbKpSVu58wPWWBRSg74XZjMahyVfTwaQnCVm7g1E7SJATBc Ys8q1SNsAy8HTNvO8exvPQr0InOyNdg= X-Google-Smtp-Source: ABdhPJxz1BM3sWZcK1q+mjIgXmtzA6dNawy+/GoCxlUHeTbdhfG28Y0tY0rrQx2KeZESiYeHwm5SKg== X-Received: by 2002:a17:90b:1d09:: with SMTP id on9mr4911750pjb.191.1638866964217; Tue, 07 Dec 2021 00:49:24 -0800 (PST) Received: from localhost (218-173-141-247.dynamic-ip.hinet.net. [218.173.141.247]) by smtp.gmail.com with ESMTPSA id p15sm5473298pfh.193.2021.12.07.00.49.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Dec 2021 00:49:23 -0800 (PST) From: You-Sheng Yang To: patchwork@lists.ozlabs.org Subject: [PATCH 3/4] ci: add tests for sqlite3 Date: Tue, 7 Dec 2021 16:49:15 +0800 Message-Id: <20211207084916.240554-4-vicamo@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211207084916.240554-1-vicamo@gmail.com> References: <20211207084916.240554-1-vicamo@gmail.com> MIME-Version: 1.0 X-BeenThere: patchwork@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Patchwork development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Patchwork" Signed-off-by: You-Sheng Yang --- .github/workflows/ci.yaml | 9 +++---- docker-compose-sqlite3.yml | 19 +++++++++++++++ tools/docker/Dockerfile | 1 + tools/docker/entrypoint.sh | 49 +++++++++++++++++++++++++------------- 4 files changed, 58 insertions(+), 20 deletions(-) create mode 100644 docker-compose-sqlite3.yml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 04c67cb..9edec88 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -24,7 +24,7 @@ jobs: strategy: matrix: python: [3.6, 3.7, 3.8, 3.9] - db: [postgres, mysql] + db: [postgres, mysql, sqlite3] env: DATABASE_NAME: patchwork DATABASE_USER: patchwork @@ -88,7 +88,8 @@ jobs: run: tox env: DATABASE_TYPE: "${{ matrix.db }}" - DATABASE_HOST: "127.0.0.1" + DATABASE_HOST: ${{ matrix.db != 'sqlite3' && '127.0.0.1' || '' }} + DATABASE_NAME: ${{ matrix.db != 'sqlite3' && env.DATABASE_NAME || '/dev/shm/patchwork.test.db.sqlite3' }} docs: name: Build docs runs-on: ubuntu-latest @@ -116,7 +117,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - db: [postgres, mysql] + db: [postgres, mysql, sqlite3] steps: - name: Checkout source code uses: actions/checkout@v2 @@ -128,7 +129,7 @@ jobs: python-version: 3.9 - name: Bring up docker-compose service env: - COMPOSE_FILE: ${{ matrix.db == 'mysql' && 'docker-compose.yml' || 'docker-compose-pg.yml' }} + COMPOSE_FILE: ${{ matrix.db == 'mysql' && 'docker-compose.yml' || (matrix.db == 'postgres' && 'docker-compose-pg.yml') || 'docker-compose-sqlite3.yml' }} run: | docker-compose build --build-arg UID=$(id -u) --build-arg GID=$(id -g) docker-compose up --detach diff --git a/docker-compose-sqlite3.yml b/docker-compose-sqlite3.yml new file mode 100644 index 0000000..d4c6659 --- /dev/null +++ b/docker-compose-sqlite3.yml @@ -0,0 +1,19 @@ +version: "3" +services: + web: + build: + context: . + dockerfile: ./tools/docker/Dockerfile + args: + - UID + - GID + command: python3 manage.py runserver 0.0.0.0:8000 + volumes: + - .:/home/patchwork/patchwork/ + ports: + - "8000:8000" + environment: + - UID + - GID + - DATABASE_TYPE=sqlite3 + - DATABASE_NAME=/home/patchwork/patchwork/tools/docker/db/db.sqlite3 diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index fe0cd59..18f1e4c 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -38,6 +38,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libssl-dev \ mysql-client \ postgresql-client \ + sqlite3 \ tzdata \ zlib1g-dev \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/tools/docker/entrypoint.sh b/tools/docker/entrypoint.sh index 6be90b9..343f644 100755 --- a/tools/docker/entrypoint.sh +++ b/tools/docker/entrypoint.sh @@ -3,18 +3,22 @@ set -euo pipefail export DATABASE_HOST=${DATABASE_HOST:-} export DATABASE_PORT=${DATABASE_PORT:-} -export DATABASE_NAME=${DATABASE_NAME:-patchwork} export DATABASE_USER=${DATABASE_USER:-patchwork} export DATABASE_PASS=${DATABASE_PASS:-password} case "${DATABASE_TYPE:-}" in postgres) + export DATABASE_NAME=${DATABASE_NAME:-patchwork} export PGPORT=${DATABASE_PORT} export PGPASSWORD=${DATABASE_PASS} psql_args=( ${DATABASE_HOST:+--host=${DATABASE_HOST}} "--username=${DATABASE_USER}" ) ;; +sqlite3) + export DATABASE_NAME=${DATABASE_NAME:-} + ;; *) export DATABASE_TYPE=mysql + export DATABASE_NAME=${DATABASE_NAME:-patchwork} mysql_args=( ${DATABASE_HOST:+--host=${DATABASE_HOST}} ${DATABASE_PORT:+--port=${DATABASE_PORT}} "--user=${DATABASE_USER}" "--password=${DATABASE_PASS}" ) mysql_root_args=( ${DATABASE_HOST:+--host=${DATABASE_HOST}} ${DATABASE_PORT:+--port=${DATABASE_PORT}} "--user=root" "--password=${MYSQL_ROOT_PASSWORD:-}" ) ;; @@ -23,19 +27,25 @@ esac # functions test_db_connection() { - if [ ${DATABASE_TYPE} = "postgres" ]; then - echo ';' | psql "${psql_args[@]}" 2> /dev/null > /dev/null - else - mysqladmin "${mysql_root_args[@]}" ping > /dev/null 2> /dev/null - fi + case "${DATABASE_TYPE}" in + "postgres") + echo ';' | psql "${psql_args[@]}" 2> /dev/null > /dev/null ;; + "mysql") + mysqladmin "${mysql_root_args[@]}" ping > /dev/null 2> /dev/null ;; + "sqlite3") + echo ';' | sqlite3 "${DATABASE_NAME}" > /dev/null 2> /dev/null ;; + esac } test_database() { - if [ ${DATABASE_TYPE} = "postgres" ]; then - echo 'DESCRIBE patchwork_project;' | psql "${psql_args[@]}" "${DATABASE_NAME}" 2> /dev/null - else - echo 'DESCRIBE patchwork_project;' | mysql "${mysql_args[@]}" "${DATABASE_NAME}" 2> /dev/null - fi + case "${DATABASE_TYPE}" in + "postgres") + echo 'DESCRIBE patchwork_project;' | psql "${psql_args[@]}" "${DATABASE_NAME}" 2> /dev/null ;; + "mysql") + echo 'DESCRIBE patchwork_project;' | mysql "${mysql_args[@]}" "${DATABASE_NAME}" 2> /dev/null ;; + "sqlite3") + echo 'SELECT 0 FROM patchwork_project;' | sqlite3 "${DATABASE_NAME}" > /dev/null 2> /dev/null ;; + esac } reset_data_mysql() { @@ -55,12 +65,19 @@ CREATE DATABASE ${DATABASE_NAME} WITH ENCODING = 'UTF8'; EOF } +reset_data_sqlite3() { + rm -f "${DATABASE_NAME}" +} + reset_data() { - if [ x${DATABASE_TYPE} = x"postgres" ]; then - reset_data_postgres - else - reset_data_mysql - fi + case "${DATABASE_TYPE}" in + "postgres") + reset_data_postgres ;; + "mysql") + reset_data_mysql ;; + "sqlite3") + reset_data_sqlite3 ;; + esac # load initial data python manage.py migrate #> /dev/null