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]

Reply via email to