@@ -157,14 +157,15 @@ jobs:
157157 BACKEND_IMAGE : test-backend:latest
158158 run : |
159159 cd backend
160- # Exclude rate_limit tests from CI/CD - they consume quota and should run separately
161- # To run rate limit tests locally: pytest tests/e2e/smoke -m rate_limit
160+ # Exclude api_rate_limit tests (general API rate limiter) from CI
161+ # Source rate_limit tests run sequentially after other tests for proper Redis isolation
162+ # To run only rate limit tests locally: pytest tests/e2e/smoke -m rate_limit
162163
163164 MAX_RETRIES=2
164165
165- # Run all tests first
166+ # Run all non-rate-limit tests in parallel first
166167 set +e
167- pytest tests/e2e/smoke -m "not rate_limit" -n 3 -v --tb=short 2>&1 | tee pytest_output.txt
168+ pytest tests/e2e/smoke -m "not rate_limit and not api_rate_limit " -n 3 -v --tb=short 2>&1 | tee pytest_output.txt
168169 EXIT_CODE=${PIPESTATUS[0]}
169170 set -e
170171
@@ -209,6 +210,32 @@ jobs:
209210 echo "Tests failed after $MAX_RETRIES retry attempts"
210211 exit 1
211212
213+ - name : Run Source Rate Limit Tests (Sequential)
214+ if : success()
215+ env :
216+ TEST_ENV : local
217+ OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
218+ TEST_COMPOSIO_API_KEY : ${{ secrets.TEST_COMPOSIO_API_KEY }}
219+ TEST_COMPOSIO_NOTION_AUTH_CONFIG_ID_1 : ${{ secrets.TEST_COMPOSIO_NOTION_AUTH_CONFIG_ID_1 }}
220+ TEST_COMPOSIO_NOTION_ACCOUNT_ID_1 : ${{ secrets.TEST_COMPOSIO_NOTION_ACCOUNT_ID_1 }}
221+ TEST_COMPOSIO_NOTION_AUTH_CONFIG_ID_2 : ${{ secrets.TEST_COMPOSIO_NOTION_AUTH_CONFIG_ID_2 }}
222+ TEST_COMPOSIO_NOTION_ACCOUNT_ID_2 : ${{ secrets.TEST_COMPOSIO_NOTION_ACCOUNT_ID_2 }}
223+ TEST_COMPOSIO_GOOGLE_DRIVE_AUTH_CONFIG_ID_1 : ${{ secrets.TEST_COMPOSIO_GOOGLE_DRIVE_AUTH_CONFIG_ID_1 }}
224+ TEST_COMPOSIO_GOOGLE_DRIVE_ACCOUNT_ID_1 : ${{ secrets.TEST_COMPOSIO_GOOGLE_DRIVE_ACCOUNT_ID_1 }}
225+ TEST_COMPOSIO_GOOGLE_DRIVE_AUTH_CONFIG_ID_2 : ${{ secrets.TEST_COMPOSIO_GOOGLE_DRIVE_AUTH_CONFIG_ID_2 }}
226+ TEST_COMPOSIO_GOOGLE_DRIVE_ACCOUNT_ID_2 : ${{ secrets.TEST_COMPOSIO_GOOGLE_DRIVE_ACCOUNT_ID_2 }}
227+ TEST_PIPEDREAM_RATE_LIMIT_CLIENT_ID : ${{ secrets.TEST_PIPEDREAM_RATE_LIMIT_CLIENT_ID }}
228+ TEST_PIPEDREAM_RATE_LIMIT_CLIENT_SECRET : ${{ secrets.TEST_PIPEDREAM_RATE_LIMIT_CLIENT_SECRET }}
229+ TEST_PIPEDREAM_RATE_LIMIT_PROJECT_ID : ${{ secrets.TEST_PIPEDREAM_RATE_LIMIT_PROJECT_ID }}
230+ TEST_PIPEDREAM_GOOGLE_DRIVE_DEFAULT_OAUTH_ACCOUNT_ID : ${{ secrets.TEST_PIPEDREAM_GOOGLE_DRIVE_DEFAULT_OAUTH_ACCOUNT_ID }}
231+ TEST_PIPEDREAM_GOOGLE_DRIVE_DEFAULT_OAUTH_EXTERNAL_USER_ID : ${{ secrets.TEST_PIPEDREAM_GOOGLE_DRIVE_DEFAULT_OAUTH_EXTERNAL_USER_ID }}
232+ TEST_PIPEDREAM_NOTION_DEFAULT_OAUTH_ACCOUNT_ID : ${{ secrets.TEST_PIPEDREAM_NOTION_DEFAULT_OAUTH_ACCOUNT_ID }}
233+ TEST_PIPEDREAM_NOTION_DEFAULT_OAUTH_EXTERNAL_USER_ID : ${{ secrets.TEST_PIPEDREAM_NOTION_DEFAULT_OAUTH_EXTERNAL_USER_ID }}
234+ run : |
235+ cd backend
236+ echo "Running source rate limit tests sequentially (no parallelization for Redis isolation)..."
237+ pytest tests/e2e/smoke -m rate_limit -v --tb=short
238+
212239 - name : Print service logs on failure
213240 if : failure()
214241 run : |
0 commit comments