Add 'fiscal/' from commit '102ba84500dbd9655a0471288c3e278652593ca9'
git-subtree-dir: fiscal git-subtree-mainline:d95165fc8fgit-subtree-split:102ba84500
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
"""'Atualização disponível' must compare the Agent with the real default release, semantically."""
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from central.app.control_plane import dashboard_summary, list_installations
|
||||
from central.app.installation_identity import compute_version_drift, outdated_versions, parse_version, reference_agent_version
|
||||
from central.app.models import AgentRelease
|
||||
from central.tests.test_control_plane import setup_db
|
||||
from central.tests.test_operational_view_models import NOW, _installation
|
||||
|
||||
|
||||
def _release(session, version, status="PUBLISHED", platform="windows"):
|
||||
session.add(AgentRelease(version=version, platform=platform, architecture="x64", filename=f"GTIFiscalAgent-Setup-{version}.exe", storage_path=f"{version}.exe",
|
||||
size_bytes=1, sha256=version.ljust(64, "0")[:64], status=status))
|
||||
session.flush()
|
||||
|
||||
|
||||
def test_versions_compare_semantically_not_as_strings():
|
||||
assert compute_version_drift("1.1.7", "1.1.7") == "CURRENT"
|
||||
assert compute_version_drift("1.1.10", "1.1.9") == "CURRENT" # string compare would say older
|
||||
assert compute_version_drift("1.1.6", "1.1.7") == "OUTDATED"
|
||||
assert compute_version_drift("1.2.0", "1.1.7") == "CURRENT" # ahead of the release is not "outdated"
|
||||
assert compute_version_drift("1.0.0rc1", "1.0.0") == "OUTDATED" # pre-release sorts below its final
|
||||
assert compute_version_drift(None, "1.1.7") == "UNKNOWN"
|
||||
assert parse_version("garbage") is None
|
||||
|
||||
|
||||
def test_reference_is_the_highest_published_release_and_ignores_revoked_and_drafts():
|
||||
with setup_db()() as session:
|
||||
_release(session, "1.1.5", "REVOKED")
|
||||
_release(session, "1.1.6")
|
||||
_release(session, "1.1.7")
|
||||
_release(session, "1.9.9", "REVOKED")
|
||||
_release(session, "2.0.0", "DRAFT")
|
||||
_release(session, "3.0.0", platform="linux")
|
||||
assert reference_agent_version(session) == "1.1.7"
|
||||
|
||||
|
||||
def test_agent_on_the_default_release_is_current_everywhere_even_with_a_stale_snapshot():
|
||||
with setup_db()() as session:
|
||||
_release(session, "1.1.7")
|
||||
_release(session, "1.1.6", "REVOKED")
|
||||
# snapshot was written as OUTDATED by an older heartbeat (compared with a stale reference)
|
||||
_installation(session, 1, version="1.1.7")
|
||||
_installation(session, 2, version="1.1.6")
|
||||
session.commit()
|
||||
assert reference_agent_version(session) == "1.1.7"
|
||||
assert outdated_versions(session, "1.1.7") == ["1.1.6"]
|
||||
rows = {item["agent_version"]: item for item in list_installations(session, now=NOW)["items"]}
|
||||
assert rows["1.1.7"]["version_drift"] == "CURRENT" and rows["1.1.6"]["version_drift"] == "OUTDATED"
|
||||
assert [i["agent_version"] for i in list_installations(session, version="outdated", now=NOW)["items"]] == ["1.1.6"]
|
||||
summary = dashboard_summary(session, now=NOW)
|
||||
assert [a["agent_version"] for a in summary["outdated_agents"]] == ["1.1.6"]
|
||||
|
||||
|
||||
def test_a_newer_published_release_makes_the_previous_one_outdated():
|
||||
with setup_db()() as session:
|
||||
_release(session, "1.1.7")
|
||||
_installation(session, 1, version="1.1.7")
|
||||
session.commit()
|
||||
assert list_installations(session, version="outdated", now=NOW)["total"] == 0
|
||||
_release(session, "1.1.8")
|
||||
session.commit()
|
||||
assert list_installations(session, version="outdated", now=NOW)["total"] == 1
|
||||
Reference in New Issue
Block a user