import corrlib.find as find import sqlite3 from pathlib import Path import corrlib.initialization as cinit import pytest def make_sql(path: Path) -> Path: db = path / "test.db" cinit._create_db(db) return db def test_find_lookup_by_one_alias(tmp_path: Path) -> None: db = make_sql(tmp_path) conn = sqlite3.connect(db) c = conn.cursor() uuid = "test_uuid" alias_str = "fun_project" tag_str = "tt" owner = "tester" code = "test_code" c.execute("INSERT INTO projects (id, aliases, customTags, owner, code, created_at, updated_at) VALUES (?, ?, ?, ?, ?, datetime('now'), datetime('now'))", (uuid, alias_str, tag_str, owner, code)) conn.commit() assert uuid == find._project_lookup_by_alias(db, "fun_project") uuid = "test_uuid2" alias_str = "fun_project" c.execute("INSERT INTO projects (id, aliases, customTags, owner, code, created_at, updated_at) VALUES (?, ?, ?, ?, ?, datetime('now'), datetime('now'))", (uuid, alias_str, tag_str, owner, code)) conn.commit() with pytest.raises(Exception): assert uuid == find._project_lookup_by_alias(db, "fun_project") conn.close() def test_find_lookup_by_id(tmp_path: Path) -> None: db = make_sql(tmp_path) conn = sqlite3.connect(db) c = conn.cursor() uuid = "test_uuid" alias_str = "fun_project" tag_str = "tt" owner = "tester" code = "test_code" c.execute("INSERT INTO projects (id, aliases, customTags, owner, code, created_at, updated_at) VALUES (?, ?, ?, ?, ?, datetime('now'), datetime('now'))", (uuid, alias_str, tag_str, owner, code)) conn.commit() conn.close() result = find._project_lookup_by_id(db, uuid)[0] assert uuid == result[0] assert alias_str == result[1] assert tag_str == result[2] assert owner == result[3] assert code == result[4] def test_db_lookup(tmp_path: Path) -> None: db = make_sql(tmp_path) conn = sqlite3.connect(db) c = conn.cursor() corr = "f_A" ensemble = "SF_A" code = "openQCD" meas_path = "archive/SF_A/f_A/Project_A.json.gz::asdfasdfasdf" uuid = "Project_A" pars = "{par_A: 3.0, par_B: 5.0}" parameter_file = "projects/Project_A/myinput.in" c.execute("INSERT INTO backlogs (name, ensemble, code, path, project, parameters, parameter_file, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'))", (corr, ensemble, code, meas_path, uuid, pars, parameter_file)) conn.commit() conn.close() results = find._db_lookup(db, ensemble, corr, code) assert len(results) == 1 results = find._db_lookup(db, "SF_B", corr, code) assert results.empty results = find._db_lookup(db, ensemble, "g_A", code) assert results.empty results = find._db_lookup(db, ensemble, corr, "sfcf") assert results.empty results = find._db_lookup(db, ensemble, corr, code, project = "Project_A") assert len(results) == 1 results = find._db_lookup(db, ensemble, corr, code, project = "Project_B") assert results.empty results = find._db_lookup(db, ensemble, corr, code, parameters = pars) assert len(results) == 1 results = find._db_lookup(db, ensemble, corr, code, parameters = "{par_A: 3.0, par_B: 4.0}") assert results.empty #results = find._db_lookup(db, ensemble, corr, code, project, parameters, created_before, created_after, updated_before, updated_after) #results = find._db_lookup(db, ensemble, corr, code, project, parameters, created_before, created_after, updated_before, updated_after)