Esempio n. 1
0
void ChatTests::init()
{
    /* User #1. */

    SessionManager *sessionManager = SessionManager::getInstance();
    QSignalSpy spy(sessionManager,
                   SIGNAL(loginCompleted(QSharedPointer<Session>, bool, QString)));
    QVERIFY(spy.isValid());
    QVERIFY(spy.isEmpty());

    QSharedPointer<const LoginUser> u(new LoginUser(TEMP_SESSION_USER3,
                                      WORKING_DIR "public.pem", WORKING_DIR "private.pem"));
    sessionManager->login(SERVER_URL, CA_CERT, u, "password");

    waitForResult(spy);
    QCOMPARE(spy.count(), 1);
    QList<QVariant> arguments = spy.takeFirst();
    QVERIFY2(arguments.at(1) == true, arguments.at(2).toString().toStdString().c_str());

    session = arguments.at(0).value<QSharedPointer<Session> >();

    QSignalSpy spy2(session.data(), SIGNAL(initChatCompleted(QSharedPointer<Chat>, bool,
                                           QString)));
    QVERIFY(spy2.isValid());
    QVERIFY(spy2.isEmpty());

    session->initChat();
    waitForResult(spy2);

    QCOMPARE(spy2.count(), 1);
    QList<QVariant> arguments2 = spy2.takeFirst();
    QVERIFY2(arguments2.at(1) == true, arguments2.at(2).toString().toStdString().c_str());

    chat = arguments2.at(0).value<QSharedPointer<Chat> >();

    /* User #2. */

    QSignalSpy spy3(sessionManager,
                    SIGNAL(loginCompleted(QSharedPointer<Session>, bool, QString)));
    QVERIFY(spy3.isValid());
    QVERIFY(spy3.isEmpty());

    QSharedPointer<const LoginUser> u2(new LoginUser(TEMP_SESSION_USER2,
                                       WORKING_DIR "public.pem", WORKING_DIR "private.pem"));
    sessionManager->login(SERVER_URL, CA_CERT, u2, "password");

    waitForResult(spy3);
    QCOMPARE(spy3.count(), 1);
    QList<QVariant> arguments3 = spy3.takeFirst();
    QVERIFY2(arguments3.at(1) == true, arguments3.at(2).toString().toStdString().c_str());

    session2 = arguments3.at(0).value<QSharedPointer<Session> >();
}
Esempio n. 2
0
void SessionManagerTest::gene_info(int sleep_interval)
{
  ASSERT_EQ(session_manager_->initialize(), TFS_SUCCESS);

  int session_ip = 86420;
  BaseInfo input_info;
  input_info.report_interval_ = 1;
  bool update_flag = false;

  // start
  // app0<->app0_session1 : login(illegal)
  string app0_key = "not_exist_key";
  string app0_session1;
  ASSERT_EQ(session_manager_->login(app0_key, session_ip, app0_session1, input_info), EXIT_APP_NOTEXIST_ERROR);

  // app1<->app1_session1 : login
  string app1_key = "uc";
  string app1_session1;
  ASSERT_EQ(session_manager_->login(app1_key, session_ip, app1_session1, input_info), TFS_SUCCESS);

  // app2<->app2_session1 : login keepalive 
  string app2_key = "dc";
  string app2_session1;
  ASSERT_EQ(session_manager_->login(app2_key, session_ip, app2_session1, input_info), TFS_SUCCESS);

  KeepAliveInfo ka_info_app2_1;
  ka_info_app2_1.last_report_time_ = time(NULL) + 10;

  ka_info_app2_1.s_base_info_.session_id_ = app2_session1;
  ka_info_app2_1.s_base_info_.client_version_ = "1.3.1";
  ka_info_app2_1.s_base_info_.cache_size_ = 100000;
  ka_info_app2_1.s_base_info_.cache_time_ = 600;
  ka_info_app2_1.s_base_info_.modify_time_ = 200000;
  ka_info_app2_1.s_base_info_.is_logout_ = false;

  AppOperInfo app_info_2_1;
  app_info_2_1.oper_type_ = OPER_READ;
  app_info_2_1.oper_times_ = 10000;
  app_info_2_1.oper_size_ = 300000;
  app_info_2_1.oper_rt_= 200000;
  app_info_2_1.oper_succ_ = 9997;
  
  AppOperInfo app_info_2_2;
  app_info_2_2.oper_type_ = OPER_UNLINK;
  app_info_2_2.oper_times_ = 500;
  app_info_2_2.oper_size_ = 60000;
  app_info_2_2.oper_rt_= 20000;
  app_info_2_2.oper_succ_ = 499;

  ka_info_app2_1.s_stat_.app_oper_info_[OPER_READ] = app_info_2_1;
  ka_info_app2_1.s_stat_.app_oper_info_[OPER_UNLINK] = app_info_2_2;
  ka_info_app2_1.s_stat_.cache_hit_ratio_ = 90;
  ASSERT_EQ(session_manager_->keep_alive(app2_session1, ka_info_app2_1, update_flag, input_info), TFS_SUCCESS);

  // app3<->app3_session1 : login keepalive keepalive
  string app3_key = "cc";
  string app3_session1;
  ASSERT_EQ(session_manager_->login(app3_key, session_ip, app3_session1, input_info), TFS_SUCCESS);

  KeepAliveInfo ka_info_app3_1;
  ka_info_app3_1.last_report_time_ = time(NULL) + 12;

  ka_info_app3_1.s_base_info_.session_id_ = app3_session1;
  ka_info_app3_1.s_base_info_.client_version_ = "1.3.1";
  ka_info_app3_1.s_base_info_.cache_size_ = 310000;
  ka_info_app3_1.s_base_info_.cache_time_ = 700;
  ka_info_app3_1.s_base_info_.modify_time_ = 100000;
  ka_info_app3_1.s_base_info_.is_logout_ = false;

  AppOperInfo app_info_3_1;
  app_info_3_1.oper_type_ = OPER_READ;
  app_info_3_1.oper_times_ = 20000;
  app_info_3_1.oper_size_ = 600000;
  app_info_3_1.oper_rt_= 400000;
  app_info_3_1.oper_succ_ = 19000;
  
  AppOperInfo app_info_3_2;
  app_info_3_2.oper_type_ = OPER_WRITE;
  app_info_3_2.oper_times_ = 1000;
  app_info_3_2.oper_size_ = 50000;
  app_info_3_2.oper_rt_= 10000;
  app_info_3_2.oper_succ_ = 999;

  ka_info_app3_1.s_stat_.app_oper_info_[OPER_READ] = app_info_3_1;
  ka_info_app3_1.s_stat_.app_oper_info_[OPER_WRITE] = app_info_3_2;
  ka_info_app3_1.s_stat_.cache_hit_ratio_ = 91;

  ASSERT_EQ(session_manager_->keep_alive(app3_session1, ka_info_app3_1, update_flag, input_info), TFS_SUCCESS);

  KeepAliveInfo ka_info_app3_2;
  ka_info_app3_2.last_report_time_ = time(NULL) + 18;

  ka_info_app3_2.s_base_info_.session_id_ = app3_session1;
  ka_info_app3_2.s_base_info_.client_version_ = "1.3.2";
  ka_info_app3_2.s_base_info_.cache_size_ = 320000;
  ka_info_app3_2.s_base_info_.cache_time_ = 800;
  ka_info_app3_2.s_base_info_.modify_time_ = 110000;
  ka_info_app3_2.s_base_info_.is_logout_ = false;

  AppOperInfo app_info_3_3;
  app_info_3_3.oper_type_ = OPER_UNIQUE_WRITE;
  app_info_3_3.oper_times_ = 1000;
  app_info_3_3.oper_size_ = 50000;
  app_info_3_3.oper_rt_= 10000;
  app_info_3_3.oper_succ_ = 999;

  AppOperInfo app_info_3_4;
  app_info_3_4.oper_type_ = OPER_READ;
  app_info_3_4.oper_times_ = 15000;
  app_info_3_4.oper_size_ = 500000;
  app_info_3_4.oper_rt_= 300000;
  app_info_3_4.oper_succ_ = 15000;
  
  ka_info_app3_2.s_stat_.app_oper_info_[OPER_READ] = app_info_3_4;
  ka_info_app3_2.s_stat_.app_oper_info_[OPER_UNIQUE_WRITE] = app_info_3_3;
  ka_info_app3_2.s_stat_.cache_hit_ratio_ = 89;

  ASSERT_EQ(session_manager_->keep_alive(app3_session1, ka_info_app3_2, update_flag, input_info), TFS_SUCCESS);


  // app4<->app4_session1 : login keepalive keepalive logout
  string app4_key = "fc";
  string app4_session1;
  ASSERT_EQ(session_manager_->login(app4_key, session_ip, app4_session1, input_info), TFS_SUCCESS);

  KeepAliveInfo ka_info_app4_1;
  ka_info_app4_1.last_report_time_ = time(NULL) + 20;

  ka_info_app4_1.s_base_info_.session_id_ = app3_session1;
  ka_info_app4_1.s_base_info_.client_version_ = "1.3.2";
  ka_info_app4_1.s_base_info_.cache_size_ = 200000;
  ka_info_app4_1.s_base_info_.cache_time_ = 800;
  ka_info_app4_1.s_base_info_.modify_time_ = 100000;
  ka_info_app4_1.s_base_info_.is_logout_ = false;

  AppOperInfo app_info_4_1;
  app_info_4_1.oper_type_ = OPER_UNLINK;
  app_info_4_1.oper_times_ = 1000;
  app_info_4_1.oper_size_ = 6000;
  app_info_4_1.oper_rt_= 40000;
  app_info_4_1.oper_succ_ = 1000;
  
  AppOperInfo app_info_4_2;
  app_info_4_2.oper_type_ = OPER_WRITE;
  app_info_4_2.oper_times_ = 2000;
  app_info_4_2.oper_size_ = 100000;
  app_info_4_2.oper_rt_= 20000;
  app_info_4_2.oper_succ_ = 1999;

  ka_info_app4_1.s_stat_.app_oper_info_[OPER_UNLINK] = app_info_4_1;
  ka_info_app4_1.s_stat_.app_oper_info_[OPER_WRITE] = app_info_4_2;
  ka_info_app4_1.s_stat_.cache_hit_ratio_ = 95;

  ASSERT_EQ(session_manager_->keep_alive(app4_session1, ka_info_app4_1, update_flag, input_info), TFS_SUCCESS);

  KeepAliveInfo ka_info_app4_2;
  ka_info_app4_2.last_report_time_ = time(NULL) + 25;

  ka_info_app4_2.s_base_info_.session_id_ = app3_session1;
  ka_info_app4_2.s_base_info_.client_version_ = "1.3.2";
  ka_info_app4_2.s_base_info_.cache_size_ = 320000;
  ka_info_app4_2.s_base_info_.cache_time_ = 800;
  ka_info_app4_2.s_base_info_.modify_time_ = 110000;
  ka_info_app4_2.s_base_info_.is_logout_ = false;

  AppOperInfo app_info_4_3;
  app_info_4_3.oper_type_ = OPER_UNIQUE_WRITE;
  app_info_4_3.oper_times_ = 6000;
  app_info_4_3.oper_size_ = 90000;
  app_info_4_3.oper_rt_= 30000;
  app_info_4_3.oper_succ_ = 5999;

  AppOperInfo app_info_4_4;
  app_info_4_4.oper_type_ = OPER_READ;
  app_info_4_4.oper_times_ = 25000;
  app_info_4_4.oper_size_ = 900000;
  app_info_4_4.oper_rt_= 500000;
  app_info_4_4.oper_succ_ = 25000;
  
  ka_info_app4_2.s_stat_.app_oper_info_[OPER_READ] = app_info_4_4;
  ka_info_app4_2.s_stat_.app_oper_info_[OPER_UNIQUE_WRITE] = app_info_4_3;
  ka_info_app4_2.s_stat_.cache_hit_ratio_ = 98;

  ASSERT_EQ(session_manager_->keep_alive(app4_session1, ka_info_app4_2, update_flag, input_info), TFS_SUCCESS);

  KeepAliveInfo ka_info_app4_3;
  ka_info_app4_3.last_report_time_ = time(NULL) + 30;

  ka_info_app4_3.s_base_info_.session_id_ = app3_session1;
  ka_info_app4_3.s_base_info_.client_version_ = "1.3.2";
  ka_info_app4_3.s_base_info_.cache_size_ = 420000;
  ka_info_app4_3.s_base_info_.cache_time_ = 600;
  ka_info_app4_3.s_base_info_.modify_time_ = 120000;
  ka_info_app4_3.s_base_info_.is_logout_ = true;

  AppOperInfo app_info_4_5;
  app_info_4_5.oper_type_ = OPER_UNIQUE_WRITE;
  app_info_4_5.oper_times_ = 6000;
  app_info_4_5.oper_size_ = 90000;
  app_info_4_5.oper_rt_= 30000;
  app_info_4_5.oper_succ_ = 5999;

  ka_info_app4_3.s_stat_.app_oper_info_[OPER_UNIQUE_WRITE] = app_info_4_5;
  ka_info_app4_3.s_stat_.cache_hit_ratio_ = 97;

  ASSERT_EQ(session_manager_->logout(app4_session1, ka_info_app4_3), TFS_SUCCESS);
  // app5<->app5_session1 : keepalive
  // Todo

  // app6<->app6_session1 : login
  string app6_key = "gc";
  int64_t session_ip_6 = 9000007;
  string app6_session1;
  BaseInfo base_input_info;
  base_input_info.report_interval_ = 1;
  ASSERT_EQ(session_manager_->login(app6_key, session_ip_6, app6_session1, base_input_info), TFS_SUCCESS);
  // app6<->app6_session2 : login keepalive 
  string app6_session2;
  ASSERT_EQ(session_manager_->login(app6_key, session_ip_6, app6_session2, base_input_info), TFS_SUCCESS);

  KeepAliveInfo ka_info_app6_1;
  ka_info_app6_1.last_report_time_ = time(NULL) + 100;

  ka_info_app6_1.s_base_info_.session_id_ = app6_session2;
  ka_info_app6_1.s_base_info_.client_version_ = "2.1.0";
  ka_info_app6_1.s_base_info_.cache_size_ = 200000;
  ka_info_app6_1.s_base_info_.cache_time_ = 1200;
  ka_info_app6_1.s_base_info_.modify_time_ = 100000;
  ka_info_app6_1.s_base_info_.is_logout_ = false;

  AppOperInfo app_info_6_2_1;
  app_info_6_2_1.oper_type_ = OPER_UNIQUE_WRITE;
  app_info_6_2_1.oper_times_ = 6000;
  app_info_6_2_1.oper_size_ = 90000;
  app_info_6_2_1.oper_rt_= 30000;
  app_info_6_2_1.oper_succ_ = 5999;

  AppOperInfo app_info_6_2_2;
  app_info_6_2_2.oper_type_ = OPER_READ;
  app_info_6_2_2.oper_times_ = 24000;
  app_info_6_2_2.oper_size_ = 800000;
  app_info_6_2_2.oper_rt_= 400000;
  app_info_6_2_2.oper_succ_ = 23000;
  
  ka_info_app6_1.s_stat_.app_oper_info_[OPER_UNIQUE_WRITE] = app_info_6_2_1;
  ka_info_app6_1.s_stat_.app_oper_info_[OPER_READ] = app_info_6_2_2;
  ka_info_app6_1.s_stat_.cache_hit_ratio_ = 95;

  ASSERT_EQ(session_manager_->keep_alive(app6_session2, ka_info_app6_1, update_flag, base_input_info), TFS_SUCCESS);

  // app6<->app6_session3 : keepalive keepalive
  string app6_session3 = "10007-8943231-542143-54364-65375";

  KeepAliveInfo ka_info_app6_2;
  ka_info_app6_2.last_report_time_ = time(NULL) + 120;

  ka_info_app6_2.s_base_info_.session_id_ = app6_session3;
  ka_info_app6_2.s_base_info_.client_version_ = "2.0.2";
  ka_info_app6_2.s_base_info_.cache_size_ = 100000;
  ka_info_app6_2.s_base_info_.cache_time_ = 1000;
  ka_info_app6_2.s_base_info_.modify_time_ = 120000;
  ka_info_app6_2.s_base_info_.is_logout_ = false;

  AppOperInfo app_info_6_3_1;
  app_info_6_3_1.oper_type_ = OPER_WRITE;
  app_info_6_3_1.oper_times_ = 4000;
  app_info_6_3_1.oper_size_ = 80000;
  app_info_6_3_1.oper_rt_= 20000;
  app_info_6_3_1.oper_succ_ = 3999;

  AppOperInfo app_info_6_3_2;
  app_info_6_3_2.oper_type_ = OPER_READ;
  app_info_6_3_2.oper_times_ = 23000;
  app_info_6_3_2.oper_size_ = 800000;
  app_info_6_3_2.oper_rt_= 400000;
  app_info_6_3_2.oper_succ_ = 23000;
  
  ka_info_app6_2.s_stat_.app_oper_info_[OPER_WRITE] = app_info_6_3_1;
  ka_info_app6_2.s_stat_.app_oper_info_[OPER_READ] = app_info_6_3_2;
  ka_info_app6_2.s_stat_.cache_hit_ratio_ = 96;

  ASSERT_EQ(session_manager_->keep_alive(app6_session3, ka_info_app6_2, update_flag, base_input_info), TFS_SUCCESS);
  
  KeepAliveInfo ka_info_app6_3;
  ka_info_app6_3.last_report_time_ = time(NULL) + 200;

  ka_info_app6_3.s_base_info_.session_id_ = app6_session3;
  ka_info_app6_3.s_base_info_.client_version_ = "2.0.2";
  ka_info_app6_3.s_base_info_.cache_size_ = 100000;
  ka_info_app6_3.s_base_info_.cache_time_ = 1000;
  ka_info_app6_3.s_base_info_.modify_time_ = 120000;
  ka_info_app6_3.s_base_info_.is_logout_ = false;

  AppOperInfo app_info_6_3_3;
  app_info_6_3_3.oper_type_ = OPER_WRITE;
  app_info_6_3_3.oper_times_ = 14000;
  app_info_6_3_3.oper_size_ = 80000;
  app_info_6_3_3.oper_rt_= 20000;
  app_info_6_3_3.oper_succ_ = 13999;

  ka_info_app6_3.s_stat_.app_oper_info_[OPER_WRITE] = app_info_6_3_3;
  ka_info_app6_3.s_stat_.cache_hit_ratio_ = 97;
  ASSERT_EQ(session_manager_->keep_alive(app6_session3, ka_info_app6_3, update_flag, base_input_info), TFS_SUCCESS);
  // app6<->app6_session4 : keepalive logout
   string app6_session4 = "10007-89479900-542143-54364-65375";

  KeepAliveInfo ka_info_app6_4_1;
  ka_info_app6_4_1.last_report_time_ = time(NULL) + 320;

  ka_info_app6_4_1.s_base_info_.session_id_ = app6_session4;
  ka_info_app6_4_1.s_base_info_.client_version_ = "2.1.2";
  ka_info_app6_4_1.s_base_info_.cache_size_ = 200000;
  ka_info_app6_4_1.s_base_info_.cache_time_ = 2000;
  ka_info_app6_4_1.s_base_info_.modify_time_ = 220000;
  ka_info_app6_4_1.s_base_info_.is_logout_ = false;

  AppOperInfo app_info_6_4_1;
  app_info_6_4_1.oper_type_ = OPER_WRITE;
  app_info_6_4_1.oper_times_ = 4000;
  app_info_6_4_1.oper_size_ = 80000;
  app_info_6_4_1.oper_rt_= 20000;
  app_info_6_4_1.oper_succ_ = 3999;

  AppOperInfo app_info_6_4_2;
  app_info_6_4_2.oper_type_ = OPER_READ;
  app_info_6_4_2.oper_times_ = 23000;
  app_info_6_4_2.oper_size_ = 800000;
  app_info_6_4_2.oper_rt_= 400000;
  app_info_6_4_2.oper_succ_ = 23000;
  
  ka_info_app6_4_1.s_stat_.app_oper_info_[OPER_WRITE] = app_info_6_4_1;
  ka_info_app6_4_1.s_stat_.app_oper_info_[OPER_READ] = app_info_6_4_2;
  ka_info_app6_4_1.s_stat_.cache_hit_ratio_ = 95;

  ASSERT_EQ(session_manager_->keep_alive(app6_session4, ka_info_app6_4_1, update_flag, base_input_info), TFS_SUCCESS);
  
  KeepAliveInfo ka_info_app6_4_2;
  ka_info_app6_4_2.last_report_time_ = time(NULL) + 200;

  ka_info_app6_4_2.s_base_info_.session_id_ = app6_session3;
  ka_info_app6_4_2.s_base_info_.client_version_ = "2.0.2";
  ka_info_app6_4_2.s_base_info_.cache_size_ = 100000;
  ka_info_app6_4_2.s_base_info_.cache_time_ = 1000;
  ka_info_app6_4_2.s_base_info_.modify_time_ = 120000;
  ka_info_app6_4_2.s_base_info_.is_logout_ = false;

  AppOperInfo app_info_6_4_3;
  app_info_6_4_3.oper_type_ = OPER_WRITE;
  app_info_6_4_3.oper_times_ = 14000;
  app_info_6_4_3.oper_size_ = 80000;
  app_info_6_4_3.oper_rt_= 20000;
  app_info_6_4_3.oper_succ_ = 13999;

  ka_info_app6_4_2.s_stat_.app_oper_info_[OPER_WRITE] = app_info_6_4_3;
  ka_info_app6_4_2.s_stat_.cache_hit_ratio_ = 93;
  ASSERT_EQ(session_manager_->logout(app6_session3, ka_info_app6_4_2), TFS_SUCCESS);
  // app6<->app6_session4 : login keepalive keepalive logout
  
  cout << "first sleep " << sleep_interval << "s" << endl;
  sleep(sleep_interval);
  cout << "end first sleep " << sleep_interval << "s" << endl;
  // app3<->app3_session1 : keepalive logout
  {
    KeepAliveInfo ka_info_app3_1;
    ka_info_app3_1.last_report_time_ = 15000;

    ka_info_app3_1.s_base_info_.session_id_ = app3_session1;
    ka_info_app3_1.s_base_info_.client_version_ = "1.3.1";
    ka_info_app3_1.s_base_info_.cache_size_ = 310000;
    ka_info_app3_1.s_base_info_.cache_time_ = 700;
    ka_info_app3_1.s_base_info_.modify_time_ = 100000;
    ka_info_app3_1.s_base_info_.is_logout_ = false;

    AppOperInfo app_info_3_1;
    app_info_3_1.oper_type_ = OPER_READ;
    app_info_3_1.oper_times_ = 20000;
    app_info_3_1.oper_size_ = 600000;
    app_info_3_1.oper_rt_= 400000;
    app_info_3_1.oper_succ_ = 19000;

    AppOperInfo app_info_3_2;
    app_info_3_2.oper_type_ = OPER_WRITE;
    app_info_3_2.oper_times_ = 1000;
    app_info_3_2.oper_size_ = 50000;
    app_info_3_2.oper_rt_= 10000;
    app_info_3_2.oper_succ_ = 999;

    ka_info_app3_1.s_stat_.app_oper_info_[OPER_READ] = app_info_3_1;
    ka_info_app3_1.s_stat_.app_oper_info_[OPER_WRITE] = app_info_3_2;
    ka_info_app3_1.s_stat_.cache_hit_ratio_ = 91;

    ASSERT_EQ(session_manager_->keep_alive(app3_session1, ka_info_app3_1, update_flag, input_info), TFS_SUCCESS);

    KeepAliveInfo ka_info_app3_2;
    ka_info_app3_2.last_report_time_ = 16000;

    ka_info_app3_2.s_base_info_.session_id_ = app3_session1;
    ka_info_app3_2.s_base_info_.client_version_ = "1.3.2";
    ka_info_app3_2.s_base_info_.cache_size_ = 320000;
    ka_info_app3_2.s_base_info_.cache_time_ = 800;
    ka_info_app3_2.s_base_info_.modify_time_ = 110000;
    ka_info_app3_2.s_base_info_.is_logout_ = false;

    AppOperInfo app_info_3_3;
    app_info_3_3.oper_type_ = OPER_UNIQUE_WRITE;
    app_info_3_3.oper_times_ = 1000;
    app_info_3_3.oper_size_ = 50000;
    app_info_3_3.oper_rt_= 10000;
    app_info_3_3.oper_succ_ = 999;

    AppOperInfo app_info_3_4;
    app_info_3_4.oper_type_ = OPER_READ;
    app_info_3_4.oper_times_ = 15000;
    app_info_3_4.oper_size_ = 500000;
    app_info_3_4.oper_rt_= 300000;
    app_info_3_4.oper_succ_ = 15000;

    ka_info_app3_2.s_stat_.app_oper_info_[OPER_READ] = app_info_3_4;
    ka_info_app3_2.s_stat_.app_oper_info_[OPER_UNIQUE_WRITE] = app_info_3_3;
    ka_info_app3_2.s_stat_.cache_hit_ratio_ = 89;

    ASSERT_EQ(session_manager_->logout(app3_session1, ka_info_app3_2), TFS_SUCCESS);
  }

  // app6<->app6_session7 : keepalive

  {
    KeepAliveInfo ka_info_app6_4_1;
    ka_info_app6_4_1.last_report_time_ = time(NULL) + 320;

    ka_info_app6_4_1.s_base_info_.session_id_ = app6_session4;
    ka_info_app6_4_1.s_base_info_.client_version_ = "2.1.2";
    ka_info_app6_4_1.s_base_info_.cache_size_ = 200000;
    ka_info_app6_4_1.s_base_info_.cache_time_ = 2000;
    ka_info_app6_4_1.s_base_info_.modify_time_ = 220000;
    ka_info_app6_4_1.s_base_info_.is_logout_ = false;

    AppOperInfo app_info_6_4_1;
    app_info_6_4_1.oper_type_ = OPER_WRITE;
    app_info_6_4_1.oper_times_ = 4000;
    app_info_6_4_1.oper_size_ = 80000;
    app_info_6_4_1.oper_rt_= 20000;
    app_info_6_4_1.oper_succ_ = 3999;

    AppOperInfo app_info_6_4_2;
    app_info_6_4_2.oper_type_ = OPER_READ;
    app_info_6_4_2.oper_times_ = 23000;
    app_info_6_4_2.oper_size_ = 800000;
    app_info_6_4_2.oper_rt_= 400000;
    app_info_6_4_2.oper_succ_ = 23000;

    ka_info_app6_4_1.s_stat_.app_oper_info_[OPER_WRITE] = app_info_6_4_1;
    ka_info_app6_4_1.s_stat_.app_oper_info_[OPER_READ] = app_info_6_4_2;
    ka_info_app6_4_1.s_stat_.cache_hit_ratio_ = 95;

    ASSERT_EQ(session_manager_->keep_alive(app6_session4, ka_info_app6_4_1, update_flag, base_input_info), TFS_SUCCESS);
  }
  cout << "second sleep " << sleep_interval << "s" << endl;
  sleep(sleep_interval/2);
  {
    KeepAliveInfo ka_info_app6_4_1;
    ka_info_app6_4_1.last_report_time_ = time(NULL) + 320;

    ka_info_app6_4_1.s_base_info_.session_id_ = app6_session4;
    ka_info_app6_4_1.s_base_info_.client_version_ = "2.1.2";
    ka_info_app6_4_1.s_base_info_.cache_size_ = 200000;
    ka_info_app6_4_1.s_base_info_.cache_time_ = 2000;
    ka_info_app6_4_1.s_base_info_.modify_time_ = 220000;
    ka_info_app6_4_1.s_base_info_.is_logout_ = false;

    AppOperInfo app_info_6_4_1;
    app_info_6_4_1.oper_type_ = OPER_WRITE;
    app_info_6_4_1.oper_times_ = 4000;
    app_info_6_4_1.oper_size_ = 80000;
    app_info_6_4_1.oper_rt_= 20000;
    app_info_6_4_1.oper_succ_ = 3999;

    AppOperInfo app_info_6_4_2;
    app_info_6_4_2.oper_type_ = OPER_READ;
    app_info_6_4_2.oper_times_ = 23000;
    app_info_6_4_2.oper_size_ = 800000;
    app_info_6_4_2.oper_rt_= 400000;
    app_info_6_4_2.oper_succ_ = 23000;

    ka_info_app6_4_1.s_stat_.app_oper_info_[OPER_WRITE] = app_info_6_4_1;
    ka_info_app6_4_1.s_stat_.app_oper_info_[OPER_READ] = app_info_6_4_2;
    ka_info_app6_4_1.s_stat_.cache_hit_ratio_ = 95;

    ASSERT_EQ(session_manager_->keep_alive(app6_session4, ka_info_app6_4_1, update_flag, base_input_info), TFS_SUCCESS);
  }
  sleep(sleep_interval/2);
  cout << "end second sleep " << sleep_interval << "s" << endl;
  session_manager_->stop();
}