plugin_router_factory_test.cpp
Go to the documentation of this file.
1 #include "../../src/plugin_router/plugin_router_factory.h"
2 
3 #include <fruit/fruit.h>
4 #include <gtest/gtest.h>
5 
6 #include <algorithm>
7 #include <boost/array.hpp>
8 #include <boost/asio.hpp>
9 #include <functional>
10 #include <iostream>
11 #include <iterator>
12 #include <memory>
13 #include <unordered_map>
14 
15 #include "../../src/plugin_router/binary_plugin_router.h"
16 #include "../../src/plugin_router/json_plugin_router.h"
17 #include "../../src/plugin_router/string_plugin_router.h"
18 
19 using fruit::Component;
20 using fruit::createComponent;
21 using fruit::Injector;
22 
23 // Binary Loopback Pluginを使うケース
24 TEST(TestSuite, create_binary_plugin_with_factory) {
25  std::shared_ptr<rapidjson::Document> config(new rapidjson::Document);
26  config->Parse(
27  "[{\"plugin_name\":\"binary_loopback::BinaryLoopback\",\"param\":"
28  "\"Parameter\"}]");
29 
30  // objectを作成し、受信スレッドを開始
31  Injector<IPluginRouterFactory> injector(getPluginFactoryComponent);
32  auto pluginFactory = injector.get<IPluginRouterFactory*>();
33 
34  // データは送信しないのでportは何でも良い
35  auto source = pluginFactory->Create("127.0.0.1", 50000, "binary", config);
36  auto result = source->TryStart();
37  // TryStartに成功する
38  // データの送信と評価はMockBinarySocket内でやっている
39  ASSERT_TRUE(result.is_success);
40 }
41 
42 // Json Loopback Pluginを使うケース
43 TEST(TestSuite, create_json_plugin_with_factory) {
44  std::shared_ptr<rapidjson::Document> config(new rapidjson::Document);
45  config->Parse(
46  "[{\"plugin_name\":\"json_loopback::JsonLoopback\",\"param\":"
47  "\"Parameter\"}]");
48 
49  // objectを作成し、受信スレッドを開始
50  Injector<IPluginRouterFactory> injector(getPluginFactoryComponent);
51  auto pluginFactory = injector.get<IPluginRouterFactory*>();
52 
53  // データは送信しないのでportは何でも良い
54  auto source = pluginFactory->Create("127.0.0.1", 50000, "json", config);
55  auto result = source->TryStart();
56  // TryStartに成功する
57  // データの送信と評価はMockBinarySocket内でやっている
58  ASSERT_TRUE(result.is_success);
59 }
60 
61 // String Loopback Pluginを使うケース
62 TEST(TestSuite, create_string_plugin_with_factory) {
63  std::shared_ptr<rapidjson::Document> config(new rapidjson::Document);
64  config->Parse(
65  "[{\"plugin_name\":\"string_loopback::StringLoopback\",\"param\":"
66  "\"Parameter\"}]");
67 
68  // objectを作成し、受信スレッドを開始
69  Injector<IPluginRouterFactory> injector(getPluginFactoryComponent);
70  auto pluginFactory = injector.get<IPluginRouterFactory*>();
71 
72  // データは送信しないのでportは何でも良い
73  auto source = pluginFactory->Create("127.0.0.1", 50000, "string", config);
74  auto result = source->TryStart();
75  // TryStartに成功する
76  // データの送信と評価はMockBinarySocket内でやっている
77  ASSERT_TRUE(result.is_success);
78 }
TEST(TestSuite, create_binary_plugin_with_factory)
Component< IPluginRouterFactory > getPluginFactoryComponent()
virtual std::unique_ptr< PluginRouter > Create(std::string target_ip, uint16_t target_port, std::string plugin_type, std::shared_ptr< rapidjson::Document > config)=0


skyway
Author(s): Toshiya Nakakura
autogenerated on Sat Apr 15 2023 02:08:21