Implementation:Tensorflow Serving Multi Inference Helper Test
| Knowledge Sources | |
|---|---|
| Domains | Testing, Inference |
| Last Updated | 2026-02-13 00:00 GMT |
Overview
Test suite validating the multi-inference helper which runs multiple inference tasks through ServerCore.
Description
This test file validates RunMultiInferenceWithServerCore, the helper function that orchestrates multiple inference requests (classification and regression) via a ServerCore instance. The test fixture is a typed test suite parameterized on TF1 vs TF2 model types using the half_plus_two SavedModel. The fixture sets up a complete ServerCore with an AvailabilityPreservingPolicy and tests various combinations of valid and invalid multi-inference requests.
Key areas tested include:
- Missing input validation
- Undefined and duplicate signature detection
- Inconsistent model specs across tasks
- Unsupported signature types
- Valid single and multiple regression signatures
- Mixed regression and classification signatures
- Model spec version override
- Thread pool options propagation
Usage
Run these tests to validate changes to the multi-inference helper path that dispatches inference tasks through ServerCore.
Code Reference
Source Location
- Repository: Tensorflow_Serving
- File: tensorflow_serving/servables/tensorflow/multi_inference_helper_test.cc
- Lines: 1-375
Test Fixture
template <typename T>
class MultiInferenceTest : public ::testing::Test {
public:
static void SetUpTestSuite() {
SetSignatureMethodNameCheckFeature(UseTf1Model());
TF_ASSERT_OK(CreateServerCore(&server_core_));
}
static void TearDownTestSuite() { server_core_.reset(); }
protected:
static absl::Status CreateServerCore(
std::unique_ptr<ServerCore>* server_core);
static bool UseTf1Model() { return std::is_same<T, tf1_model_t>::value; }
ServerCore* GetServerCore() { return this->server_core_.get(); }
private:
static std::unique_ptr<ServerCore> server_core_;
};
TYPED_TEST_SUITE_P(MultiInferenceTest);
Build Target
bazel test //tensorflow_serving/servables/tensorflow:multi_inference_helper_test
Test Coverage
Key Test Cases
| Test Name | Category | Description |
|---|---|---|
| MissingInputTest | Validation | Tests error when input is empty |
| UndefinedSignatureTest | Validation | Tests error on non-existent signature name |
| InconsistentModelSpecsInRequestTest | Validation | Tests error when tasks reference different models |
| EvaluateDuplicateSignaturesTest | Validation | Tests error when duplicate signatures are used |
| UsupportedSignatureTypeTest | Validation | Tests error on unsupported inference method type |
| ValidSingleSignatureTest | Integration | Tests successful single regression signature |
| MultipleValidRegressSignaturesTest | Integration | Tests successful multiple regression signatures |
| RegressAndClassifySignaturesTest | Integration | Tests mixed regression and classification in one request |
| ModelSpecOverride | Integration | Tests model spec version override in response |
| ThreadPoolOptions | Integration | Tests thread pool options are propagated correctly |
Usage Examples
Test Pattern
TYPED_TEST_P(MultiInferenceTest, ValidSingleSignatureTest) {
MultiInferenceRequest request;
AddInput({{"x", 2}}, &request);
PopulateTask("regress_x_to_y", kRegressMethodName, -1, request.add_tasks());
MultiInferenceResponse response;
TF_ASSERT_OK(RunMultiInferenceWithServerCore(
RunOptions(), this->GetServerCore(),
thread::ThreadPoolOptions(), request, &response));
// Validate response contains expected regression result
}