16 #include "tensorflow_serving/model_servers/test_util/server_core_test_util.h"
21 #include "tensorflow/core/lib/core/status_test_util.h"
22 #include "tensorflow/core/lib/io/path.h"
23 #include "tensorflow_serving/core/availability_preserving_policy.h"
24 #include "tensorflow_serving/core/test_util/fake_loader_source_adapter.h"
25 #include "tensorflow_serving/model_servers/model_platform_types.h"
26 #include "tensorflow_serving/model_servers/platform_config_util.h"
27 #include "tensorflow_serving/servables/tensorflow/saved_model_bundle_source_adapter.pb.h"
28 #include "tensorflow_serving/servables/tensorflow/session_bundle_config.pb.h"
29 #include "tensorflow_serving/test_util/test_util.h"
31 namespace tensorflow {
37 void AddSessionRunLoadThreadPool(SessionBundleConfig*
const bundle_config) {
38 auto*
const session_config = bundle_config->mutable_session_config();
39 session_config->add_session_inter_op_thread_pool();
41 session_config->add_session_inter_op_thread_pool()->set_num_threads(4);
42 bundle_config->mutable_session_run_load_threadpool_index()->set_value(1);
47 Status CreateServerCore(
const ModelServerConfig& config,
48 ServerCore::Options options,
49 std::unique_ptr<ServerCore>* server_core) {
50 options.model_server_config = config;
54 Status CreateServerCore(
const ModelServerConfig& config,
55 std::unique_ptr<ServerCore>* server_core) {
56 return CreateServerCore(config, ServerCoreTest::GetDefaultOptions(),
60 ServerCore::Options ServerCoreTest::GetDefaultOptions() {
61 ServerCore::Options options;
62 options.file_system_poll_wait_seconds = 1;
65 options.num_initial_load_threads = options.num_load_threads;
66 options.aspired_version_policy =
67 std::unique_ptr<AspiredVersionPolicy>(
new AvailabilityPreservingPolicy);
68 options.custom_model_config_loader =
69 [](const ::google::protobuf::Any& any, EventBus<ServableState>* event_bus,
70 UniquePtrWithDeps<AspiredVersionsManager>* manager) -> Status {
74 SessionBundleConfig bundle_config;
75 AddSessionRunLoadThreadPool(&bundle_config);
77 options.platform_config_map =
78 CreateTensorFlowPlatformConfigMap(bundle_config);
79 ::google::protobuf::Any fake_source_adapter_config;
80 fake_source_adapter_config.PackFrom(
81 test_util::FakeLoaderSourceAdapterConfig());
82 (*(*options.platform_config_map.mutable_platform_configs())[kFakePlatform]
83 .mutable_source_adapter_config()) = fake_source_adapter_config;
88 ModelServerConfig ServerCoreTest::GetTestModelServerConfigForFakePlatform() {
89 ModelServerConfig config = GetTestModelServerConfigForTensorflowPlatform();
90 ModelConfig* model_config =
91 config.mutable_model_config_list()->mutable_config(0);
92 model_config->set_model_platform(kFakePlatform);
97 ServerCoreTest::GetTestModelServerConfigForTensorflowPlatform() {
98 ModelServerConfig config;
99 auto model = config.mutable_model_config_list()->add_config();
100 model->set_name(kTestModelName);
101 if (GetTestType() == SAVED_MODEL) {
102 model->set_base_path(test_util::TensorflowTestSrcDirPath(
103 "/cc/saved_model/testdata/half_plus_two"));
105 model->set_base_path(test_util::TestSrcDirPath(
106 "/servables/tensorflow/google/testdata/half_plus_two"));
108 if (PrefixPathsWithURIScheme()) {
109 model->set_base_path(io::CreateURI(
"file",
"", model->base_path()));
111 model->set_model_platform(kTensorFlowModelPlatform);
115 void ServerCoreTest::SwitchToHalfPlusTwoWith2Versions(
116 ModelServerConfig* config) {
117 CHECK_EQ(1, config->model_config_list().config().size());
118 auto model = config->mutable_model_config_list()->mutable_config(0);
119 if (GetTestType() == SAVED_MODEL) {
120 model->set_base_path(test_util::TestSrcDirPath(
121 "/servables/tensorflow/testdata/saved_model_half_plus_two_2_versions"));
123 model->set_base_path(test_util::TestSrcDirPath(
124 "/servables/tensorflow/google/testdata/half_plus_two_2_versions"));
127 model->clear_model_version_policy();
128 model->mutable_model_version_policy()->mutable_all();
129 if (PrefixPathsWithURIScheme()) {
130 model->set_base_path(io::CreateURI(
"file",
"", model->base_path()));
134 Status ServerCoreTest::CreateServerCore(
135 const ModelServerConfig& config, ServerCore::Options options,
136 std::unique_ptr<ServerCore>* server_core) {
137 return test_util::CreateServerCore(config, std::move(options), server_core);
static Status Create(Options options, std::unique_ptr< ServerCore > *core)