int run_main (int, ACE_TCHAR *[]) { ACE_START_TEST (ACE_TEXT ("Bug_1890_Regression_Test")); bool success = true; // Bug 1890 is all about ACE_Select_Reactor, so run it on that reactor // regardless of platform. ACE_Select_Reactor *impl_ptr = 0; ACE_NEW_RETURN (impl_ptr, ACE_Select_Reactor, -1); auto_ptr<ACE_Select_Reactor> auto_impl (impl_ptr); ACE_Reactor reactor (impl_ptr); // Create the timer, this is the main driver for the test Timer * timer = new Timer; // Initialize the timer and register with the reactor if (-1 == timer->open (&reactor)) { ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("Cannot initialize timer")), -1); } reactor.run_reactor_event_loop (); // Verify that the results are what we expect if (!(success = timer->check_expected_results ())) ACE_ERROR ((LM_ERROR, ACE_TEXT ("Test failed\n"))); // Cleanup timer->close (); delete timer; ACE_END_TEST; return success ? 0 : -1; }
int run_main (int argc, ACE_TCHAR *argv[]) { ACE_START_TEST (ACE_TEXT ("Reactor_Performance_Test")); //FUZZ: disable check_for_lack_ACE_OS ACE_Get_Opt getopt (argc, argv, ACE_TEXT ("dswc:l:"), 1); for (int c; (c = getopt ()) != -1; ) //FUZZ: enble check_for_lack_ACE_OS switch (c) { case 's': opt_select_reactor = 1; break; case 'w': opt_wfmo_reactor = 1; break; case 'c': opt_nconnections = ACE_OS::atoi (getopt.opt_arg ()); break; case 'l': opt_nloops = ACE_OS::atoi (getopt.opt_arg ()); break; case 'd': opt_debug = 1; break; } // Sets up the correct reactor (based on platform and options). create_reactor (); // Manage memory automagically. auto_ptr<ACE_Reactor> reactor (ACE_Reactor::instance ()); auto_ptr<ACE_Reactor_Impl> impl; // If we are using other that the default implementation, we must // clean up. if (opt_select_reactor || opt_wfmo_reactor) { auto_ptr<ACE_Reactor_Impl> auto_impl (ACE_Reactor::instance ()->implementation ()); impl = auto_impl; } Read_Handler::set_countdown (opt_nconnections); // Acceptor ACCEPTOR acceptor; ACE_INET_Addr server_addr; // Bind acceptor to any port and then find out what the port was. ACE_INET_Addr local_addr (ACE_sap_any_cast (const ACE_INET_Addr &)); if (acceptor.open (local_addr) == -1 || acceptor.acceptor ().get_local_addr (server_addr) == -1) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("(%t) %p\n"), ACE_TEXT ("open")), -1); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) starting server at port %d\n"), server_addr.get_port_number ())); ACE_INET_Addr connection_addr (server_addr.get_port_number (), ACE_DEFAULT_SERVER_HOST); if (ACE_Thread_Manager::instance ()->spawn (ACE_THR_FUNC (client), (void *) &connection_addr, THR_NEW_LWP | THR_DETACHED) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%t) %p\n"), ACE_TEXT ("thread create failed"))); ACE_Time_Value run_limit (opt_nloops / 10); ACE_Profile_Timer timer; timer.start (); const int status = ACE_Reactor::instance ()->run_reactor_event_loop (run_limit); timer.stop (); ACE_Profile_Timer::ACE_Elapsed_Time et; timer.elapsed_time (et); // Print results print_results (et); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) waiting for the client thread...\n"))); ACE_Thread_Manager::instance ()->wait (); ACE_END_TEST; return status; }
int run_main (int argc, ACE_TCHAR *argv[]) { ACE_START_TEST (ACE_TEXT ("Notify_Performance_Test")); //FUZZ: disable check_for_lack_ACE_OS ACE_Get_Opt getopt (argc, argv, ACE_TEXT ("pswdc:l:")); for (int c; (c = getopt ()) != -1; ) switch (c) { //FUZZ: enable check_for_lack_ACE_OS case 'p': opt_dev_poll_reactor = 1; break; case 's': opt_select_reactor = 1; break; case 'w': opt_wfmo_reactor = 1; break; case 'c': opt_nthreads = ACE_OS::atoi (getopt.opt_arg ()); break; case 'l': opt_nloops = ACE_OS::atoi (getopt.opt_arg ()); break; case 'd': opt_pass_notify_data = 1; break; } // Sets up the correct reactor (based on platform and options) create_reactor (); // Manage memory automagically. auto_ptr<ACE_Reactor> reactor (ACE_Reactor::instance ()); auto_ptr<ACE_Reactor_Impl> impl; // If we are using other that the default implementation, we must // clean up. if (opt_select_reactor || opt_wfmo_reactor || opt_dev_poll_reactor) { auto_ptr<ACE_Reactor_Impl> auto_impl (ACE_Reactor::instance ()->implementation ()); impl = auto_impl; } // Callback object Handler handler; // Spawn worker threads if (ACE_Thread_Manager::instance ()->spawn_n (opt_nthreads, ACE_THR_FUNC (client), (void *) &handler, THR_NEW_LWP | THR_DETACHED) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%P|%t) %p\n%a"), ACE_TEXT ("thread create failed"))); // Timer business ACE_Profile_Timer timer; timer.start (); // Run event loop ACE_Reactor::instance()->run_reactor_event_loop (); timer.stop (); ACE_Profile_Timer::ACE_Elapsed_Time et; timer.elapsed_time (et); // Print results print_results (et); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) waiting for the worker threads...\n"))); // Wait for all worker to get done. ACE_Thread_Manager::instance ()->wait (); ACE_END_TEST; return 0; }