summaryrefslogtreecommitdiff
path: root/TAO/examples/RTScheduling/MIF_Scheduler/test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/examples/RTScheduling/MIF_Scheduler/test.cpp')
-rw-r--r--TAO/examples/RTScheduling/MIF_Scheduler/test.cpp185
1 files changed, 185 insertions, 0 deletions
diff --git a/TAO/examples/RTScheduling/MIF_Scheduler/test.cpp b/TAO/examples/RTScheduling/MIF_Scheduler/test.cpp
new file mode 100644
index 00000000000..f290a52e718
--- /dev/null
+++ b/TAO/examples/RTScheduling/MIF_Scheduler/test.cpp
@@ -0,0 +1,185 @@
+//$Id$
+
+#include "test.h"
+#include "../Thread_Task.h"
+#include "../Task_Stats.h"
+#include "../Synch_i.h"
+
+#include "tao/RTScheduling/RTScheduler_Manager.h"
+#include "tao/ORB_Core.h"
+
+#include "ace/Arg_Shifter.h"
+
+DT_Test::DT_Test (void)
+{
+}
+
+int
+DT_Test::init (int argc, char *argv []
+ ACE_ENV_ARG_DECL)
+{
+ orb_ = CORBA::ORB_init (argc,
+ argv,
+ ""
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ dt_creator_->orb (orb_.in ());
+
+ CORBA::Object_ptr manager_obj = orb_->resolve_initial_references ("RTSchedulerManager"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ TAO_RTScheduler_Manager_var manager = TAO_RTScheduler_Manager::_narrow (manager_obj
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+
+ ACE_NEW_RETURN (scheduler_,
+ MIF_Scheduler (orb_.in ()), -1);
+
+ manager->rtscheduler (scheduler_);
+
+ CORBA::Object_var object =
+ orb_->resolve_initial_references ("RTScheduler_Current"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ current_ =
+ RTScheduling::Current::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ return 0;
+}
+
+void
+DT_Test::run (int argc, char* argv []
+ ACE_ENV_ARG_DECL)
+{
+ init (argc,argv
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ TASK_STATS::instance ()->init (this->dt_creator_->total_load ());
+ if (this->dt_creator_->resolve_naming_service (ACE_ENV_SINGLE_ARG_PARAMETER) == -1)
+ return;
+ ACE_CHECK;
+
+ this->dt_creator_->activate_root_poa (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ this->dt_creator_->activate_poa_list (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ this->dt_creator_->activate_job_list (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ this->dt_creator_->activate_schedule (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ DT_Creator* dt_creator = this->dt_creator_;
+ dt_creator->register_synch_obj (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Registered Synch Object\n"));
+
+ dt_creator_->create_distributable_threads (current_.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ orb_->destroy ();
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Test Terminating......\n"));
+}
+
+
+void
+DT_Test::dt_creator (MIF_DT_Creator* dt_creator)
+{
+ this->dt_creator_ = dt_creator;
+}
+
+
+MIF_Scheduler*
+DT_Test::scheduler (void)
+{
+ return this->scheduler_;
+}
+/*
+int
+DT_Test::activate_task (void)
+{
+
+long flags;
+ flags = THR_NEW_LWP | THR_JOINABLE;
+ flags |=
+ orb_->orb_core ()->orb_params ()->scope_policy () |
+ orb_->orb_core ()->orb_params ()->sched_policy ();
+
+ if (this->activate (flags,
+ 1) == -1)
+ {
+ if (ACE_OS::last_error () == EPERM)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("Insufficient privilege to run this test.\n")),
+ -1);
+ }
+ return 0;
+}
+
+int
+DT_Test::svc (void)
+{
+ ACE_TRY_NEW_ENV
+ {
+ dt_creator_->create_distributable_threads (current_.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Caught exception:");
+ return -1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
+*/
+
+RTScheduling::Current_ptr
+DT_Test::current (void)
+{
+ return this->current_.in ();
+}
+
+int
+main (int argc, char* argv [])
+{
+ ACE_TRY_NEW_ENV
+ {
+ ACE_Service_Config::static_svcs ()->insert (&ace_svc_desc_MIF_DT_Creator);
+
+ ACE_DEBUG ((LM_DEBUG,
+ "%t\n"));
+ DT_TEST::instance ()->run (argc, argv
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Caught exception:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
+
+#if defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION)
+template ACE_Singleton<DT_Test, ACE_Thread_Mutex> *ACE_Singleton<DT_Test, ACE_Thread_Mutex>::singleton_;
+#endif /* ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION */