fmorillo7694 commented on PR #206:
URL:
https://github.com/apache/flink-connector-aws/pull/206#issuecomment-5714683310
## Test evidence: full suite executed against real AWS Glue
Following up on the review discussions about test coverage, the three
commits just pushed (`38fd97b`, `d600182`, `eae545c`) extend the test pyramid
and make it executable against the real service. Evidence below is from a
single `mvn verify` invocation against **real AWS Glue in eu-central-1**
(screenshot to follow in the next comment).
### What was run
```
IT_CASE_GLUE_CATALOG_USE_DEFAULT_CREDENTIALS=true
IT_CASE_GLUE_CATALOG_REGION=eu-central-1 \
mvn -pl
flink-catalog-aws/flink-catalog-aws-glue,flink-connector-aws-e2e-tests/flink-catalog-aws-glue-e2e-tests
\
-am verify -Prun-aws-end-to-end-tests -Dsurefire.rerunFailingTestsCount=3
```
```
[WARNING] Tests run: 127, Failures: 0, Errors: 0, Skipped: 18, Flakes: 5
<- unit suite vs REAL Glue
[INFO] Tests run: 5, ... -- in ...glue.GlueCatalogMotoITCase
<- wire-level (moto, CI tier)
[INFO] Tests run: 3, ... -- in ...glue.GlueCatalogSqlMotoITCase
<- SQL path (moto, CI tier)
[INFO] Tests run: 2, ... -- in ...glue.test.GlueCatalogEndToEndITCase
<- e2e vs REAL Glue
[INFO] BUILD SUCCESS
```
- The **18 skips** are fault-injection tests (simulated Glue server errors)
— impossible against the real service by definition; they skip with that reason
and run normally in CI's fake mode.
- The **5 flakes** are Glue eventual-consistency transients
(`CreateDatabase` → immediate read can briefly miss; `DeleteDatabase` is
asynchronous); they passed on automatic rerun and are reported by surefire
rather than hidden.
- CI behaviour is **unchanged**: without credentials the unit suite runs
against the in-memory fake exactly as before (verified: 127/127, zero skips),
and the e2e module is compile-only.
### What the new tiers add
| Tier | Tests | Runs in CI? | Backend |
|---|---|---|---|
| Unit suite (existing, now backend-switchable) | 127 | yes (fake) | fake
**or real Glue** via `GlueTestClientFactory` |
| `GlueCatalogMotoITCase` — catalog API over the real SDK wire path | 5 |
yes | moto (Testcontainers) |
| `GlueCatalogSqlMotoITCase` — `CREATE CATALOG` → SPI factory → planner →
wire | 3 | yes | moto (Testcontainers) |
| `GlueCatalogEndToEndITCase` — full user path incl. a data round-trip (real
Flink job between catalog-registered tables) | 2 | compile-only
(`-Prun-aws-end-to-end-tests` + credentials) | **real AWS Glue** |
The e2e run also covers the two behaviours only real Glue exhibits:
column-name lowercasing with case restoration through the catalog, and
`dropDatabase` (whose emptiness check requires the UDF API that emulators do
not implement).
### Bug found and fixed by the new coverage
The e2e data round-trip immediately surfaced a contract violation no
DDL-only test could reach: `GlueCatalog#getFunction` threw a bare
`CatalogException` when the database did not exist, but the planner probes
`getFunction` on the current database for **every SQL expression** and only
falls back to built-in functions on `FunctionNotExistException` — so any
expression query failed SQL validation whenever the session's current database
was absent from Glue. Fixed in `38fd97b` with a regression test.
--
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]