summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/Sched/DynSched_Test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/tests/Sched/DynSched_Test.cpp')
-rw-r--r--TAO/orbsvcs/tests/Sched/DynSched_Test.cpp320
1 files changed, 0 insertions, 320 deletions
diff --git a/TAO/orbsvcs/tests/Sched/DynSched_Test.cpp b/TAO/orbsvcs/tests/Sched/DynSched_Test.cpp
deleted file mode 100644
index fe06daf6ba8..00000000000
--- a/TAO/orbsvcs/tests/Sched/DynSched_Test.cpp
+++ /dev/null
@@ -1,320 +0,0 @@
-// $Id$
-
-#include "orbsvcs/Sched/Strategy_Scheduler.h"
-#include "orbsvcs/Time_Utilities.h"
-#if defined (ACE_HAS_QUANTIFY)
-# include <quantify.h>
-#endif /* ACE_HAS_QUANTIFY */
-
-ACE_RCSID (Sched,
- DynSched_Test,
- "$Id$")
-
-// period times, in 100 nanoseconds
-#define ONE_HZ 10000000
-#define FIVE_HZ 2000000
-#define TEN_HZ 1000000
-#define TWENTY_HZ 500000
-
-class DynSched_Test
- // = TITLE
- // DynSched Test wrapper
- // = DESCRIPTION
- // Wraps static functions for test
-{
-public:
-
- static void setup_rt_info (RtecScheduler::RT_Info &info,
- const char *entry_point,
- u_long period,
- RtecScheduler::Time execution,
- RtecScheduler::Criticality_t criticality,
- RtecScheduler::Importance_t importance,
- u_long threads);
- // Initializes an RT_Info.
-
- static int register_rt_info (ACE_DynScheduler &scheduler,
- RtecScheduler::RT_Info &info);
- // Registers an RT_Info.
-
-
-#if 0 /* not currently used */
- static void setup_conjunction (RtecScheduler::RT_Info &info,
- const char *entry_point);
- // Sets up a conjunction.
-
- static void setup_disjunction (RtecScheduler::RT_Info &info,
- const char *entry_point);
- // Sets up a disjunction.
-
-#endif /* not currently used */
-
- static int run_schedule (ACE_Scheduler_Strategy &strategy,
- const char *output_filename,
- const char *heading);
- // Creates the schedule, runs timelines.
-
-};
-
-
-// Initializes an RT_Info.
-
-void
-DynSched_Test::setup_rt_info (RtecScheduler::RT_Info &info,
- const char *entry_point,
- u_long period,
- RtecScheduler::Time execution,
- RtecScheduler::Criticality_t criticality,
- RtecScheduler::Importance_t importance,
- u_long threads)
-{
- // copy the passed entry point string into the RT_Info
- info.entry_point = CORBA::string_dup (entry_point);
-
- // initialize other values
- info.handle = 0;
- info.worst_case_execution_time = execution;
- info.typical_execution_time = execution;
- info.cached_execution_time = ORBSVCS_Time::zero ();
- info.period = period;
- info.criticality = criticality;
- info.importance = importance;
- info.quantum = ORBSVCS_Time::zero ();
- info.threads = threads;
- info.priority = 0;
- info.preemption_subpriority = 0;
- info.preemption_priority = 0;
- info.info_type = RtecScheduler::OPERATION;
- info.volatile_token = 0;
-}
-
-
-// Registers an RT_Info.
-
-int
-DynSched_Test::register_rt_info (ACE_DynScheduler &scheduler,
- RtecScheduler::RT_Info &info)
-{
- int result = 0;
-
- if (scheduler.register_task (&info, info.handle) !=
- ACE_DynScheduler::SUCCEEDED)
- {
- result = 1;
- printf ("Could not register info for \"%s\"\n", info.entry_point.in ());
- }
-
- return result;
-}
-
-#if 0 /* not currently used */
-
-// Sets up a conjunction.
-
-void
-DynSched_Test::setup_conjunction (RtecScheduler::RT_Info &info,
- const char *entry_point)
-{
- // copy the passed entry point string into the RT_Info
- info.entry_point = CORBA::string_dup (entry_point);
-
- // initialize other values
- info.handle = 0;
- info.worst_case_execution_time = ORBSVCS_Time::zero ();
- info.typical_execution_time = ORBSVCS_Time::zero ();
- info.cached_execution_time = ORBSVCS_Time::zero ();
- info.period = 0;
- info.criticality = RtecScheduler::VERY_LOW_CRITICALITY;
- info.importance = RtecScheduler::VERY_LOW_IMPORTANCE;
- info.quantum = ORBSVCS_Time::zero ();
- info.threads = 0;
- info.priority = 0;
- info.preemption_subpriority = 0;
- info.preemption_priority = 0;
- info.info_type = RtecScheduler::CONJUNCTION;
- info.volatile_token = 0;
-}
-
-
-// Sets up a disjunction.
-
-void
-DynSched_Test::setup_disjunction (RtecScheduler::RT_Info &info,
- const char *entry_point)
-{
- // copy the passed entry point string into the RT_Info
- info.entry_point = CORBA::string_dup (entry_point);
-
- // initialize other values
- info.handle = 0;
- info.worst_case_execution_time = ORBSVCS_Time::zero ();
- info.typical_execution_time = ORBSVCS_Time::zero ();
- info.cached_execution_time = ORBSVCS_Time::zero ();
- info.period = 0;
- info.criticality = RtecScheduler::VERY_LOW_CRITICALITY;
- info.importance = RtecScheduler::VERY_LOW_IMPORTANCE;
- info.quantum = ORBSVCS_Time::zero ();
- info.threads = 0;
- info.priority = 0;
- info.preemption_subpriority = 0;
- info.preemption_priority = 0;
- info.info_type = RtecScheduler::DISJUNCTION;
- info.volatile_token = 0;
-}
-#endif /* not currently used */
-
-
-// Creates the schedule, runs timelines.
-
-int
-DynSched_Test::run_schedule (ACE_Scheduler_Strategy &strategy,
- const char *output_filename,
- const char *heading)
-{
- RtecScheduler::RT_Info low_1, low_5, low_10, low_20;
- RtecScheduler::RT_Info high_1, high_5, high_10, high_20;
-
- ACE_Strategy_Scheduler scheduler (strategy);
-
- DynSched_Test::setup_rt_info (low_1, "low_1", ONE_HZ, 180000,
- RtecScheduler::LOW_CRITICALITY,
- RtecScheduler::HIGH_IMPORTANCE, 1);
- DynSched_Test::setup_rt_info (low_5, "low_5", FIVE_HZ, 180000,
- RtecScheduler::LOW_CRITICALITY,
- RtecScheduler::HIGH_IMPORTANCE, 1);
- DynSched_Test::setup_rt_info (low_10, "low_10", TEN_HZ, 180000,
- RtecScheduler::LOW_CRITICALITY,
- RtecScheduler::HIGH_IMPORTANCE, 1);
- DynSched_Test::setup_rt_info (low_20, "low_20", TWENTY_HZ, 180000,
- RtecScheduler::LOW_CRITICALITY,
- RtecScheduler::HIGH_IMPORTANCE, 1);
- DynSched_Test::setup_rt_info (high_1, "high_1", ONE_HZ, 180000,
- RtecScheduler::HIGH_CRITICALITY,
- RtecScheduler::LOW_IMPORTANCE, 1);
- DynSched_Test::setup_rt_info (high_5, "high_5", FIVE_HZ, 180000,
- RtecScheduler::HIGH_CRITICALITY,
- RtecScheduler::LOW_IMPORTANCE, 1);
- DynSched_Test::setup_rt_info (high_10, "high_10", TEN_HZ, 180000,
- RtecScheduler::HIGH_CRITICALITY,
- RtecScheduler::LOW_IMPORTANCE, 1);
- DynSched_Test::setup_rt_info (high_20, "high_20", TWENTY_HZ, 180000,
- RtecScheduler::HIGH_CRITICALITY,
- RtecScheduler::LOW_IMPORTANCE, 1);
-
- if (
- DynSched_Test::register_rt_info (scheduler, low_1) ||
- DynSched_Test::register_rt_info (scheduler, low_5) ||
- DynSched_Test::register_rt_info (scheduler, low_10) ||
- DynSched_Test::register_rt_info (scheduler, low_20) ||
- DynSched_Test::register_rt_info (scheduler, high_1) ||
- DynSched_Test::register_rt_info (scheduler, high_5) ||
- DynSched_Test::register_rt_info (scheduler, high_10) ||
- DynSched_Test::register_rt_info (scheduler, high_20))
- {
- return -1;
- }
-
-#if defined (ACE_HAS_QUANTIFY)
- quantify_start_recording_data ();
-#endif /* ACE_HAS_QUANTIFY */
-
- ACE_Unbounded_Set<RtecScheduler::Scheduling_Anomaly *> anomaly_set;
- ACE_DynScheduler::status_t status = scheduler.schedule (anomaly_set);
-
-#if defined (ACE_HAS_QUANTIFY)
- quantify_stop_recording_data ();
-#endif /* ACE_HAS_QUANTIFY */
-
- switch (status)
- {
- case ACE_DynScheduler::SUCCEEDED:
- case ACE_DynScheduler::ST_UTILIZATION_BOUND_EXCEEDED:
-
- status = scheduler.output_timeline (output_filename, heading);
- switch (status)
- {
- case ACE_DynScheduler::SUCCEEDED:
- case ACE_DynScheduler::ST_UTILIZATION_BOUND_EXCEEDED:
- break;
-
- default :
- ACE_ERROR_RETURN ((LM_ERROR,
- "scheduler.output_timeline (\"%s\") failed: "
- "returned %d\n",
- output_filename, status), -1);
- }
-
- break;
-
- default :
-
- ACE_ERROR_RETURN ((LM_ERROR,
- "scheduler.schedule () failed: "
- "returned %d\n",
- status), -1);
- }
-
- return 0;
-}
-
-int
-main (int, char *[])
-{
- int result = 0;
-
- // create a bunch of different strategies, indicating the minimum critical
- // priority level (number of priority levels in critical set - 1) for each.
-
- ACE_RMS_Scheduler_Strategy rms_strategy (3);
-
- ACE_MLF_Scheduler_Strategy mlf_strategy (0);
- ACE_EDF_Scheduler_Strategy edf_strategy (0);
-
- ACE_MUF_Scheduler_Strategy muf_strategy (0);
-
- result =
- DynSched_Test::run_schedule (rms_strategy, "RMS_Timelines",
- "RMS Scheduling Strategy");
- if (result < 0)
- {
- printf ("run_schedule (rms_strategy, \"RMS_Timelines\", "
- "\"RMS Scheduling Strategy\") returned %d\n",
- result);
- return 1;
- }
-
- result =
- DynSched_Test::run_schedule (mlf_strategy, "MLF_Timelines",
- "MLF Scheduling Strategy");
- if (result < 0)
- {
- printf ("run_schedule (mlf_strategy, \"MLF_Timelines\", "
- "\"MLF Scheduling Strategy\") returned %d\n",
- result);
- return 1;
- }
-
- result =
- DynSched_Test::run_schedule (edf_strategy, "EDF_Timelines",
- "EDF Scheduling Strategy");
- if (result < 0)
- {
- printf ("run_schedule (edf_strategy, \"EDF_Timelines\", "
- "\"EDF Scheduling Strategy\") returned %d\n",
- result);
- return 1;
- }
-
- result =
- DynSched_Test::run_schedule (muf_strategy, "MUF_Timelines",
- "MUF Scheduling Strategy");
- if (result < 0)
- {
- printf ("run_schedule (muf_strategy, \"MUF_Timelines\", "
- "\"MUF Scheduling Strategy\") returned %d\n",
- result);
- return 1;
- }
-
- return 0;
-}