chenwei791129 opened a new issue, #9223: URL: https://github.com/apache/devlake/issues/9223
### Search before asking - [X] I had searched in the [issues](https://github.com/apache/incubator-devlake/issues?q=is%3Aissue) and found no similar issues. ### What happened Several Go plugin e2e tests fail when they run on a fresh, empty database, for example when you run one plugin's e2e package or one test on its own: ```text --- FAIL: TestCalculateCLTimeDataFlow panic: failed to batch fetch first reviews (500) Wraps: (3) Error 1146 (42S02): Table 'lake_test.accounts' doesn't exist ``` `e2ehelper.DataFlowTester` runs no migrations. A test only has the tables it flushes or imports. Some tests run subtasks that read or write other tables, for example a converter that deletes old `board_issues` rows, or a query that joins `accounts`. Those tables exist in CI only because an earlier test created them: `scripts/e2e-test-go-plugins.sh` runs every plugin's e2e package in `go list` order on one shared database. **Packages that fail on their own (fresh database per package):** | Package | Missing table | Test | |---|---|---| | `dora/e2e` | `accounts` | `TestCalculateCLTimeDataFlow` (the first review query joins `accounts` since #9000) | | `customize/e2e` | `board_issues` | `TestImportIssueChangelogDataFlow`, `TestImportIssueCommitDataFlow` | | `gitlab/e2e` | `issue_labels` | `TestGitlabIssueDataFlow` | | `opsgenie/e2e` | `board_issues` | `TestIncidentDataFlow` | | `pagerduty/e2e` | `board_issues` | `TestIncidentDataFlow` | | `teambition/e2e` | `board_sprints` | `TestTeambitionSprints` | **Tests that fail with `go test -run <Test>` (fresh database per test)**, because an earlier test in the same package created the tables: - `customize`: `TestImportIssueWorklogDataFlow` - `gitlab`: `TestGitlabMrDataFlow`, `TestGitlabMrDetailDataFlow`, `TestGitlabMrNoteDataFlow` - `teambition`: `TestTeambitionTask` - `bitbucket`: `TestCommentDataFlow` - `github`: `TestMilestoneDataFlow`, `TestPrReviewDataFlow` - `jira`: `TestEpicDataflow`, `TestIssueRelationshipDataFlow`, `TestIssueSubtaskWithoutMapping` - `linear`: `TestLinearIssueHistoryDataFlow` - `tapd`: `TestTapdBugCustomizeDueDate`, `TestTapdStoryCustomizeDueDate`, `TestTapdTaskCustomizeDueDate` Some of these tests also read data that an earlier test left behind, not only the table: - The bitbucket issue comment converter joins `_tool_bitbucket_issues`, which `account_test.go` fills. - The tapd due date tests use the statuses and workitem types that the test before them imports. Also, the DORA fixture has no bot account, so nothing in the e2e tests covers the bot exclusion added in #9000. ### What do you expect to happen Each e2e package and each e2e test passes on a fresh database. A test sets up every table its subtasks use and does not depend on the order tests run in. ### How to reproduce 1. Create an empty MySQL database. 2. From `backend/`: ```bash export E2E_DB_URL='mysql://merico:[email protected]:3306/lake_test?charset=utf8mb4&parseTime=True&loc=UTC' TZ=UTC go test -count=1 ./plugins/dora/e2e/... ``` The other packages fail the same way. For the per-test failures, run e.g. `go test -count=1 -run '^TestCommentDataFlow$' ./plugins/bitbucket/e2e/` on an empty database. ### Anything else CI passes today only because of the order the tests run in. It would break if the e2e tests ran in parallel or on a database per package. ### Version main (4ad2f66df) ### Are you willing to submit PR? - [X] Yes I am willing to submit a PR! ### Code of Conduct - [X] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
