Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
from analytics.lib.counts import CountStat
|
|
from analytics.lib.fixtures import generate_time_series_data
|
|
from zerver.lib.test_classes import ZulipTestCase
|
|
|
|
|
|
# A very light test suite; the code being tested is not run in production.
|
|
class TestFixtures(ZulipTestCase):
|
|
def test_deterministic_settings(self) -> None:
|
|
# test basic business_hour / non_business_hour calculation
|
|
# test we get an array of the right length with frequency=CountStat.DAY
|
|
data = generate_time_series_data(
|
|
days=7, business_hours_base=20, non_business_hours_base=15, spikiness=0
|
|
)
|
|
self.assertEqual(data, [400, 400, 400, 400, 400, 360, 360])
|
|
|
|
data = generate_time_series_data(
|
|
days=1,
|
|
business_hours_base=2000,
|
|
non_business_hours_base=1500,
|
|
growth=2,
|
|
spikiness=0,
|
|
frequency=CountStat.HOUR,
|
|
)
|
|
# test we get an array of the right length with frequency=CountStat.HOUR
|
|
self.assert_length(data, 24)
|
|
# test that growth doesn't affect the first data point
|
|
self.assertEqual(data[0], 2000)
|
|
# test that the last data point is growth times what it otherwise would be
|
|
self.assertEqual(data[-1], 1500 * 2)
|
|
|
|
# test autocorrelation == 1, since that's the easiest value to test
|
|
data = generate_time_series_data(
|
|
days=1,
|
|
business_hours_base=2000,
|
|
non_business_hours_base=2000,
|
|
autocorrelation=1,
|
|
frequency=CountStat.HOUR,
|
|
)
|
|
self.assertEqual(data[0], data[1])
|
|
self.assertEqual(data[0], data[-1])
|