Page MenuHomeSoftware Heritage

D8185.diff
No OneTemporary

D8185.diff

diff --git a/swh/vault/backend.py b/swh/vault/backend.py
--- a/swh/vault/backend.py
+++ b/swh/vault/backend.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 The Software Heritage developers
+# Copyright (C) 2017-2022 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
@@ -77,6 +77,11 @@
self.storage = get_storage(**config["storage"])
self.smtp_server = smtplib.SMTP(**config.get("smtp", {}))
+ if "db" not in self.config:
+ raise ValueError(
+ "The 'db' configuration entry is missing "
+ "in the vault configuration file"
+ )
db_conn = config["db"]
self._pool = psycopg2.pool.ThreadedConnectionPool(
config.get("min_pool_conns", 1),
diff --git a/swh/vault/tests/test_cli.py b/swh/vault/tests/test_cli.py
--- a/swh/vault/tests/test_cli.py
+++ b/swh/vault/tests/test_cli.py
@@ -10,7 +10,12 @@
import click.testing
import pytest
+from swh.core.cli.db import db as swhdb
+from swh.core.db import BaseDb
+from swh.core.db.db_utils import swh_db_module, swh_db_version
+from swh.core.db.tests.test_cli import craft_conninfo
from swh.model.swhids import CoreSWHID
+from swh.vault.backend import VaultBackend
from swh.vault.cli import vault as vault_cli_group
from swh.vault.cookers.base import BaseVaultCooker
from swh.vault.in_memory_backend import InMemoryVaultBackend
@@ -104,3 +109,52 @@
cooker.cook.assert_called_once_with()
assert result.stdout_bytes == b"bundle content"
+
+
+def test_cli_swh_vault_db_create_and_init_db(postgresql, tmp_path):
+ """Test that 'swh db init vault' works"""
+ module_name = "vault"
+ conninfo = craft_conninfo(postgresql, "new-db")
+
+ cfgfile = tmp_path / "config.yml"
+ CFG = f"""
+vault:
+ cls: postgresql
+ db: {conninfo}
+ cache:
+ cls: memory
+ storage:
+ cls: memory
+ scheduler:
+ cls: remote
+ url: mock://scheduler
+ """
+ cfgfile.write_text(CFG)
+
+ cli_runner = click.testing.CliRunner()
+ # This creates the db and installs the necessary admin extensions
+ result = cli_runner.invoke(swhdb, ["create", module_name, "--dbname", conninfo])
+ assert result.exit_code == 0, f"Unexpected output: {result.output}"
+
+ result = cli_runner.invoke(swhdb, ["init-admin", module_name, "--dbname", conninfo])
+ assert result.exit_code == 0, f"Unexpected output: {result.output}"
+
+ # This initializes the schema and data
+ result = cli_runner.invoke(swhdb, ["-C", cfgfile, "init", module_name])
+ assert result.exit_code == 0, f"Unexpected output: {result.output}"
+
+ assert swh_db_module(conninfo) == "vault"
+ assert swh_db_version(conninfo) == VaultBackend.current_version
+
+ with BaseDb.connect(conninfo).cursor() as cur:
+ cur.execute("select tablename from pg_tables where schemaname='public'")
+ tables = {table for table, in cur.fetchall()}
+
+ assert tables == {
+ "dbmodule",
+ "dbversion",
+ "vault_bundle",
+ "vault_notif_email",
+ "vault_batch",
+ "vault_batch_bundle",
+ }

File Metadata

Mime Type
text/plain
Expires
Thu, Dec 19, 2:15 PM (20 h, 24 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3224361

Event Timeline