Emil57 / Emil57/ml-platform

ML-023: Serving Integration & End-To-End Testing

Open
#41 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
1
Forks
0
Avg merge
6m
Merged PRs (30d)
4

Description

# ML-023 — Serving Integration & End-to-End Testing

## Goal

Validate the complete model-serving workflow from MLflow Model Registry through the serving engine and REST API.

## Description

The final story of Sprint 3 validates that the components developed throughout the sprint work together as a complete serving workflow.

The integration test should simulate the lifecycle of a model being served:

```text
MLflow Model Registry

Registered Model

Model Alias

Model Loading

Serving Engine

FastAPI

POST /predict

Prediction
```

## Tasks

* [ ] Create an isolated MLflow test environment.
* [ ] Register a test model.
* [ ] Create at least two model versions.
* [ ] Assign a lifecycle alias.
* [ ] Start the serving layer.
* [ ] Load the model through the alias.
* [ ] Verify model readiness.
* [ ] Verify model metadata.
* [ ] Send a valid prediction request.
* [ ] Validate the prediction response.
* [ ] Test invalid prediction requests.
* [ ] Test invalid model aliases.
* [ ] Test model-loading failures.
* [ ] Test inference failures.
* [ ] Test the health endpoint.
* [ ] Test the readiness endpoint.
* [ ] Test the model metadata endpoint.
* [ ] Verify request IDs are generated or propagated.
* [ ] Verify prediction latency is captured.
* [ ] Verify model metadata is included in observability output.
* [ ] Run the complete project test suite.
* [ ] Run MyPy.
* [ ] Run Ruff.
* [ ] Update documentation with the complete serving workflow.

## Acceptance Criteria

* [ ] A registered MLflow model can be loaded by alias.
* [ ] The serving application reports the correct readiness state.
* [ ] The API exposes the loaded model metadata.
* [ ] A valid HTTP prediction request produces a valid prediction.
* [ ] Invalid requests are rejected.
* [ ] Invalid model aliases are handled correctly.
* [ ] Model loading failures are handled correctly.
* [ ] Inference failures are handled correctly.
* [ ] Health and readiness endpoints work correctly.
* [ ] Serving observability is present.
* [ ] Integration tests run against an isolated environment.
* [ ] The complete test suite passes.
* [ ] MyPy passes without errors.
* [ ] Ruff passes without errors.

## Definition of Done

* [ ] End-to-end serving workflow implemented.
* [ ] Integration tests added and passing.
* [ ] Complete test suite passes.
* [ ] MyPy passes.
* [ ] Ruff passes.
* [ ] Documentation updated.
* [ ] Sprint 3 serving workflow verified.
* [ ] Changes committed.

Contributor guide

Open the contributing guide

Research direction

Start by locating the serving layer, its FastAPI health, readiness, metadata, and prediction endpoints, and any existing MLflow or model-loading tests. Set up an isolated MLflow environment and trace the model-alias path through loading and inference. Done means the end-to-end workflow and failure cases are covered, checks pass, observability is verified, and the serving documentation is updated.

Written by the indexing model from the issue text.

Assessment

Tech stack
fastapi, python
Domain
api, machine-learning, observability, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.