예제 #1
0
def _get_extensions():
    with store.locked(extensions_filepath):
        raw_extensions = store.load_bytes_from_file(
            extensions_filepath,
            default=b'{}',
        )
    return LicenseUsageExtensions.deserialize(raw_extensions)
예제 #2
0
def test_update_history_de_serialize(monkeypatch):
    history_dump = LicenseUsageHistoryDump(
        VERSION="1.1",
        history=[
            _license_usage_sample_example,
            LicenseUsageSample(
                version="Foo",
                edition="bär",
                platform="Test 123 - tßßßzz",
                is_cma=False,
                sample_time=75,
                timezone="",
                num_hosts=50,
                num_hosts_excluded=0,
                num_services=500,
                num_services_excluded=0,
                extensions=LicenseUsageExtensions(ntop=False, ),
            ),
        ],
    )

    serialized_history_dump = history_dump.serialize()
    assert isinstance(serialized_history_dump, bytes)

    deserialized_history_dump = LicenseUsageHistoryDump.deserialize(
        serialized_history_dump)
    assert isinstance(deserialized_history_dump, LicenseUsageHistoryDump)

    assert history_dump.VERSION == deserialized_history_dump.VERSION
    assert deserialized_history_dump.VERSION == "1.1"

    assert history_dump.history == deserialized_history_dump.history
    assert len(deserialized_history_dump.history) == 2

    for (version, edition, platform, sample_time, num_hosts,
         num_services), sample in zip(
             [
                 ("", "", "", 150, 100, 1000),
                 ("Foo", "bär", "Test 123 - tßßßzz", 75, 50, 500),
             ],
             deserialized_history_dump.history,
         ):
        assert sample.version == version
        assert sample.edition == edition
        assert sample.platform == platform
        assert sample.is_cma is False
        assert sample.sample_time == sample_time
        assert sample.timezone == ""
        assert sample.num_hosts == num_hosts
        assert sample.num_services == num_services
        assert sample.extensions.ntop is False
예제 #3
0
def test__create_sample(monkeypatch, num_hosts, num_hosts_excluded,
                        num_services, num_services_excluded, returns_sample):
    def _mock_livestatus(query):
        if "GET hosts" in query:
            return num_hosts, num_hosts_excluded
        return num_services, num_services_excluded

    monkeypatch.setattr(
        license_usage,
        "_get_stats_from_livestatus",
        _mock_livestatus,
    )

    monkeypatch.setattr(
        license_usage,
        "_get_extensions",
        lambda: LicenseUsageExtensions(ntop=False),
    )

    sample = license_usage._create_sample()
    if returns_sample:
        assert sample is not None
    else:
        assert sample is None
예제 #4
0
def test_update_history__create_or_update_history_dump(monkeypatch):
    serialized_history_dump = LicenseUsageHistoryDump(
        VERSION="1.1",
        history=[
            LicenseUsageSample(
                version="",
                edition="",
                platform="",
                is_cma=False,
                sample_time=3,
                timezone="",
                num_hosts=3,
                num_hosts_excluded=0,
                num_services=30,
                num_services_excluded=0,
                extensions=LicenseUsageExtensions(ntop=False, ),
            ),
            LicenseUsageSample(
                version="",
                edition="",
                platform="",
                is_cma=False,
                sample_time=2,
                timezone="",
                num_hosts=2,
                num_hosts_excluded=0,
                num_services=20,
                num_services_excluded=0,
                extensions=LicenseUsageExtensions(ntop=False, ),
            ),
            LicenseUsageSample(
                version="",
                edition="",
                platform="",
                is_cma=False,
                sample_time=1,
                timezone="",
                num_hosts=1,
                num_hosts_excluded=0,
                num_services=10,
                num_services_excluded=0,
                extensions=LicenseUsageExtensions(ntop=False, ),
            ),
        ],
    ).serialize()
    monkeypatch.setattr(store, "load_bytes_from_file",
                        lambda p, default: serialized_history_dump)
    monkeypatch.setattr(
        license_usage,
        "_create_sample",
        lambda: _license_usage_sample_example,
    )

    history_dump = license_usage._create_or_update_history_dump()
    assert history_dump.VERSION == "1.1"
    assert len(history_dump.history) == 4

    for (sample_time, num_hosts, num_services), sample in zip(
        [
            (150, 100, 1000),
            (3, 3, 30),
            (2, 2, 20),
            (1, 1, 10),
        ],
            history_dump.history,
    ):
        assert sample.version == ""
        assert sample.edition == ""
        assert sample.platform == ""
        assert sample.is_cma is False
        assert sample.sample_time == sample_time
        assert sample.timezone == ""
        assert sample.num_hosts == num_hosts
        assert sample.num_services == num_services
        assert sample.extensions.ntop is False
예제 #5
0
)

import cmk.base.license_usage as license_usage

_license_usage_sample_example = LicenseUsageSample(
    version="",
    edition="",
    platform="",
    is_cma=False,
    sample_time=150,
    timezone="",
    num_hosts=100,
    num_hosts_excluded=0,
    num_services=1000,
    num_services_excluded=0,
    extensions=LicenseUsageExtensions(ntop=False, ),
)


def test_update_history_deserialize(monkeypatch):
    monkeypatch.setattr(store, "load_bytes_from_file",
                        lambda p, default: b"{}")

    history_dump = license_usage._load_history_dump()
    assert history_dump.VERSION == LicenseUsageHistoryDumpVersion
    assert history_dump.history == []


def test_update_history_de_serialize(monkeypatch):
    history_dump = LicenseUsageHistoryDump(
        VERSION="1.1",