Skip to content

Comments

feat(athena): add Athena service implementation#211

Merged
sivchari merged 4 commits intomainfrom
feat/athena-basic-implementation
Feb 12, 2026
Merged

feat(athena): add Athena service implementation#211
sivchari merged 4 commits intomainfrom
feat/athena-basic-implementation

Conversation

@sivchari
Copy link
Owner

Summary

  • Implement Athena service emulator with basic query execution APIs
  • Add support for WorkGroup management
  • Include comprehensive integration tests for all implemented APIs

Changes

  • Add internal/service/athena/ with service, handlers, storage, and types
  • Register Athena service in cmd/awsim/main.go
  • Add integration tests in test/integration/athena_test.go

APIs Implemented

  • StartQueryExecution
  • StopQueryExecution
  • GetQueryExecution
  • GetQueryResults
  • ListQueryExecutions
  • CreateWorkGroup
  • DeleteWorkGroup

Test Plan

  • All existing tests pass
  • New integration tests added for Athena APIs
  • Build successful

Closes #34

Implement Athena service emulator with the following APIs:
- StartQueryExecution
- StopQueryExecution
- GetQueryExecution
- GetQueryResults
- ListQueryExecutions
- CreateWorkGroup
- DeleteWorkGroup

The implementation uses AWS JSON 1.1 protocol via X-Amz-Target header
dispatching. Query executions are stored in memory and immediately
return with SUCCEEDED state for testing purposes.

Includes integration tests for all implemented APIs.

Closes #34
- Rename AclConfiguration to ACLConfiguration per Go naming convention
- Rename AclConfigurationOutput to ACLConfigurationOutput
- Add tagliatelle exclusion for athena/types.go in golangci.yaml
- Update handlers.go references to use new type names
- Fix revive naming issues: AthenaError -> QueryError, AthenaServiceError -> ServiceError
- Fix var-naming: QueryExecutionId -> QueryExecutionID, QueryExecutionIds -> QueryExecutionIDs
- Fix var-naming: UsedReservationId -> UsedReservationID
- Fix gocritic paramTypeCombine in storage.go
- Fix gosec G115 integer overflow by using int(maxResults) comparison
- Fix staticcheck S1016 by using type conversion for Datum and ColumnInfo
- Fix gocritic rangeValCopy by using index iteration
- Fix funlen by extracting helper functions:
  - convertResultConfigToOutput, convertStatisticsToOutput, convertEngineVersionToOutput
  - createMockResultSet
- Fix revive var-naming in QueryExecutionOutput.QueryExecutionID
- Fix revive var-naming in GetQueryResultsRequest.QueryExecutionID
- Fix gocritic paramTypeCombine in StartQueryExecution signature
- Update handlers.go references for renamed fields
@github-actions
Copy link
Contributor

📊 Integration Test Coverage Report

Total Coverage: 65.6%

@sivchari sivchari marked this pull request as ready for review February 12, 2026 08:49
@sivchari sivchari merged commit f0fcc37 into main Feb 12, 2026
3 checks passed
@sivchari sivchari deleted the feat/athena-basic-implementation branch February 12, 2026 08:49
@github-actions github-actions bot mentioned this pull request Feb 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Athena: Service implementation

1 participant