55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
|
|
#include <gtest/gtest.h>
|
||
|
|
|
||
|
|
#include "plugin_manager.h"
|
||
|
|
#include "session_internal_types.h"
|
||
|
|
|
||
|
|
TEST(PLUGIN_MANAGER_TEST, pm_session_dettach_me)
|
||
|
|
{
|
||
|
|
/*
|
||
|
|
* ./plugins_config/simple_plugin.inf
|
||
|
|
* ./plugins_config/dettach_me_plugin.inf
|
||
|
|
*
|
||
|
|
* dettach_me_plugin_entry() call pm_session_dettach_me() on SESSION_STATE_ACTIVE
|
||
|
|
*/
|
||
|
|
struct session_ctx
|
||
|
|
{
|
||
|
|
char data[64];
|
||
|
|
};
|
||
|
|
|
||
|
|
struct session_ctx *ctx = NULL;
|
||
|
|
struct stellar_session session = {0};
|
||
|
|
char session_name[] = "TEST";
|
||
|
|
char file_path[] = "./plugins_config/config_list1.inf";
|
||
|
|
session.name = session_name;
|
||
|
|
|
||
|
|
struct plugin_manager *plug_mgr = plugin_manager_create(1);
|
||
|
|
EXPECT_TRUE(plug_mgr != nullptr);
|
||
|
|
EXPECT_TRUE(plugin_manager_load(plug_mgr, file_path) == 0);
|
||
|
|
|
||
|
|
session.state = SESSION_STATE_OPENING;
|
||
|
|
plugin_manager_dispatch(plug_mgr, &session, 1);
|
||
|
|
ctx = (struct session_ctx *)pm_session_get_last_plugin_ctx(&session);
|
||
|
|
EXPECT_STREQ(ctx->data, "dettach_me_plugin_entry");
|
||
|
|
|
||
|
|
session.state = SESSION_STATE_ACTIVE;
|
||
|
|
plugin_manager_dispatch(plug_mgr, &session, 1);
|
||
|
|
ctx = (struct session_ctx *)pm_session_get_last_plugin_ctx(&session);
|
||
|
|
EXPECT_STREQ(ctx->data, NULL);
|
||
|
|
|
||
|
|
session.state = SESSION_STATE_ACTIVE;
|
||
|
|
plugin_manager_dispatch(plug_mgr, &session, 1);
|
||
|
|
ctx = (struct session_ctx *)pm_session_get_last_plugin_ctx(&session);
|
||
|
|
EXPECT_STREQ(ctx->data, "simple_plugin_entry");
|
||
|
|
|
||
|
|
session.state = SESSION_STATE_CLOSING;
|
||
|
|
plugin_manager_dispatch(plug_mgr, &session, 1);
|
||
|
|
|
||
|
|
plugin_manager_unload(plug_mgr);
|
||
|
|
plugin_manager_destory(plug_mgr);
|
||
|
|
}
|
||
|
|
|
||
|
|
int main(int argc, char **argv)
|
||
|
|
{
|
||
|
|
::testing::InitGoogleTest(&argc, argv);
|
||
|
|
return RUN_ALL_TESTS();
|
||
|
|
}
|