Skip to content
Snippets Groups Projects
test_sqlite.py 2.59 KiB
Newer Older
import pytest
from cbutil.postprocessing.sqlite_helper import (select_stmt,
                                                 from_stmt,
                                                 where_stmt,
                                                 join_stmt,
                                                 table_name_query,
                                                 query_builder)

from cbutil.postprocessing.sqlite import (get_all_table_names,
                                          tables2dict,
                                          query_join,
                                          iterate_all_tables)
Christoph Alt's avatar
Christoph Alt committed

from cbutil.postprocessing.sqlite import sqlite_context


def test_select():
    assert select_stmt().strip() == "SELECT *"
    assert select_stmt("test").strip() == "SELECT test"
    with pytest.raises(ValueError):
        select_stmt("")
    with pytest.raises(ValueError):
        select_stmt("     ")
Christoph Alt's avatar
Christoph Alt committed


def test_from():
    assert from_stmt("table").strip() == "FROM table"
    with pytest.raises(ValueError):
        from_stmt("")
    with pytest.raises(ValueError):
        from_stmt("    ")
Christoph Alt's avatar
Christoph Alt committed


def test_where():
    lhs = "lhs"
    rhs = "rhs"
    assert where_stmt(lhs, rhs).strip() == f"WHERE {lhs}={rhs}"
    with pytest.raises(ValueError):
        where_stmt("", lhs)
    with pytest.raises(ValueError):
        where_stmt("    ", lhs)
    with pytest.raises(ValueError):
        where_stmt(rhs, "")
    with pytest.raises(ValueError):
        where_stmt(rhs, "    ")
    with pytest.raises(ValueError):
        where_stmt(rhs, lhs, "")
    with pytest.raises(ValueError):
        where_stmt(rhs, lhs, "    ")
Christoph Alt's avatar
Christoph Alt committed


def test_join():
    lhs = "lhs"
    rhs = "rhs"
    key = "key"
    assert join_stmt(lhs, rhs, key).strip() == f"{lhs} inner join {rhs} on {lhs}.{key} = {rhs}.{key}"


def test_table_name():
    assert table_name_query() == "SELECT name FROM sqlite_master WHERE type='table'"


def test_builder():
    assert query_builder(from_table="table") == "SELECT * FROM table"
    assert query_builder(select="row", from_table="table") == "SELECT row FROM table"


Christoph Alt's avatar
Christoph Alt committed
def test_all_table_names():
    with sqlite_context("tests/benchmark.sqlite") as connection:
        names = get_all_table_names(connection)
        assert sorted(["runs", "timingPool"]) == sorted(names)


def test_join_query():
    with sqlite_context("tests/benchmark.sqlite") as connection:
        dicts = list(tables2dict(query_join(connection, "runs", "timingPool", "runId")))
        assert len(dicts) == 9


def test_iterate_query():
    dicts = list(tables2dict(iterate_all_tables("tests/cpu_benchmark.sqlite3")))
    assert len(dicts) == 150