From 5ad9992c45800c597e7596c7f99f4b4ca6207fdd Mon Sep 17 00:00:00 2001 From: Tobias Fuchs Date: Tue, 31 Mar 2015 17:04:24 +0200 Subject: [PATCH] dataflow_cpp: added explicit exception handling, improved unit tests --- dataflow_cpp/test/dataflow_cpp_test_simple.cc | 17 +++++++++++++---- tasks_cpp/src/queue.cc | 7 +++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/dataflow_cpp/test/dataflow_cpp_test_simple.cc b/dataflow_cpp/test/dataflow_cpp_test_simple.cc index bcc6ca5..4bef2b9 100644 --- a/dataflow_cpp/test/dataflow_cpp_test_simple.cc +++ b/dataflow_cpp/test/dataflow_cpp_test_simple.cc @@ -36,6 +36,9 @@ #include +#define NUM_SLICES 8 +#define TEST_COUNT 12 + typedef embb::dataflow::Network<8> MyNetwork; typedef MyNetwork::ConstantSource< int > MyConstantSource; typedef MyNetwork::Source< int > MySource; @@ -49,8 +52,6 @@ typedef MyNetwork::Sink< int > MySink; typedef MyNetwork::Switch< int > MySwitch; typedef MyNetwork::Select< int > MySelect; -#define TEST_COUNT 12 - embb::base::Atomic source_counter; int source_array[TEST_COUNT]; @@ -148,13 +149,16 @@ SimpleTest::SimpleTest() { void SimpleTest::TestBasic() { // All available cores embb::base::CoreSet core_set(true); + int num_cores = core_set.Count(); embb::tasks::Node::Initialize( MTAPI_DOMAIN_ID, MTAPI_NODE_ID, core_set, 1024, // max tasks (default: 1024) 128, // max groups (default: 128) - 128, // max queues (default: 16) + // Currently needs to be initialized + // with (max_queues + 1), see defect embb449 + num_cores + 1, // max queues (default: 16) 1024, // queue capacity (default: 1024) 4 // num priorities (default: 4) ); @@ -204,7 +208,12 @@ void SimpleTest::TestBasic() { network.AddSource(constant); network.AddSource(source); - network(); + try { + network(); + } catch (embb::base::ErrorException & e) { + std::cout << e.What() << std::endl; + break; + } PT_EXPECT(asink.Check()); } diff --git a/tasks_cpp/src/queue.cc b/tasks_cpp/src/queue.cc index acfa12d..158ab4f 100644 --- a/tasks_cpp/src/queue.cc +++ b/tasks_cpp/src/queue.cc @@ -29,6 +29,8 @@ #include #include +#include + namespace embb { namespace tasks { @@ -54,12 +56,17 @@ Queue::Queue(mtapi_uint_t priority, bool ordered) { mtapi_job_hndl_t job = mtapi_job_get(TASKS_CPP_JOB, domain_id, &status); assert(MTAPI_SUCCESS == status); handle_ = mtapi_queue_create(MTAPI_QUEUE_ID_NONE, job, &attr, &status); + // Handle MTAPI error status in appropriate exceptions if (status == MTAPI_SUCCESS) { return; } else if (status == MTAPI_ERR_QUEUE_LIMIT) { EMBB_THROW(embb::base::ErrorException, "mtapi::Queue could not be constructed, " "maximum number of queues exceeded"); + } else if (status == MTAPI_ERR_JOB_INVALID) { + EMBB_THROW(embb::base::ErrorException, + "mtapi::Queue could not be constructed, " + "invalid job"); } else { EMBB_THROW(embb::base::ErrorException, "mtapi::Queue could not be constructed"); -- libgit2 0.26.0