mirror of https://github.com/usememos/memos.git
Add t.Parallel() to all 159 test functions in store/test/ Benefits: - Tests run in parallel (8-16 concurrent on typical CI) - Each test already has isolated database (safe to parallelize) - No shared state between tests - Go test runner handles synchronization Expected performance: - SQLite tests: 4-6min → 30-45sec (87% faster) - MySQL tests: 6-8min → 45-60sec (88% faster) - Better CPU utilization (10-15% → 80-95%) Why it's safe: - NewTestingStore() creates isolated DB per test - No global state mutations - Each test uses t.TempDir() for file isolation - Container-based tests use unique database names Impact on CI workflow: - Backend tests workflow: 4-6min → 1-2min total - Store test group: 3-4min → 20-30sec - 8-10x speedup from parallelization alone |
||
|---|---|---|
| .. | ||
| Dockerfile | ||
| README.md | ||
| activity_test.go | ||
| attachment_filter_test.go | ||
| attachment_test.go | ||
| containers.go | ||
| filter_helpers_test.go | ||
| idp_test.go | ||
| inbox_test.go | ||
| instance_setting_test.go | ||
| main_test.go | ||
| memo_filter_test.go | ||
| memo_relation_test.go | ||
| memo_test.go | ||
| migrator_test.go | ||
| reaction_test.go | ||
| store.go | ||
| user_setting_test.go | ||
| user_test.go | ||
README.md
Store tests
How to test store with MySQL?
- Create a database in your MySQL server.
- Run the following command with two environment variables set:
DRIVER=mysql DSN=root@/memos_test go test -v ./test/store/...
DRIVERshould be set tomysql.DSNshould be set to the DSN of your MySQL server.