[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4375 - gnuradio/branches/developers/eb/mb/mblock/src/
From: |
eb |
Subject: |
[Commit-gnuradio] r4375 - gnuradio/branches/developers/eb/mb/mblock/src/lib |
Date: |
Sun, 4 Feb 2007 22:52:47 -0700 (MST) |
Author: eb
Date: 2007-02-04 22:52:47 -0700 (Sun, 04 Feb 2007)
New Revision: 4375
Modified:
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_exception.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_exception.h
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.h
Log:
work-in-progress on mblocks
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_exception.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_exception.cc
2007-02-05 04:27:32 UTC (rev 4374)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_exception.cc
2007-02-05 05:52:47 UTC (rev 4375)
@@ -33,8 +33,8 @@
{
}
-mbe_not_implemented::mbe_not_implemented(const std::string &msg)
- : mbe_base(0, "Not implemented: " + msg)
+mbe_not_implemented::mbe_not_implemented(mb_mblock *mb, const std::string &msg)
+ : mbe_base(mb, "Not implemented: " + msg)
{
}
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_exception.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_exception.h
2007-02-05 04:27:32 UTC (rev 4374)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_exception.h
2007-02-05 05:52:47 UTC (rev 4375)
@@ -35,7 +35,7 @@
class mbe_not_implemented : public mbe_base
{
public:
- mbe_not_implemented(const std::string &msg);
+ mbe_not_implemented(mb_mblock *mb, const std::string &msg);
};
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
2007-02-05 04:27:32 UTC (rev 4374)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
2007-02-05 05:52:47 UTC (rev 4375)
@@ -67,10 +67,12 @@
bool conjugated,
mb_port::port_type_t port_type)
{
+#if 0
if (port_type == mb_port::RELAY)
- throw mbe_base(d_mb,
+ throw mbe_not_implemented(d_mb,
"mb_block_impl::define_port: RELAY ports are not implemented: "
+ port_name);
+#endif
if (port_is_defined(port_name))
throw mbe_duplicate_port(d_mb, port_name);
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
2007-02-05 04:27:32 UTC (rev 4374)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
2007-02-05 05:52:47 UTC (rev 4375)
@@ -97,7 +97,7 @@
return r;
case mb_port::RELAY:
- throw mbe_not_implemented("mb_port_simple::find_accepter(RELAY)");
+ throw mbe_not_implemented(0, "mb_port_simple::find_accepter(RELAY)");
default:
throw std::logic_error("Can't happen: mb_port_simple::find_accepter [3]");
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.cc
2007-02-05 04:27:32 UTC (rev 4374)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.cc
2007-02-05 05:52:47 UTC (rev 4375)
@@ -40,6 +40,8 @@
static pmt_t s_p0 = pmt_intern("p0");
static pmt_t s_p1 = pmt_intern("p1");
static pmt_t s_p2 = pmt_intern("p2");
+static pmt_t s_e1 = pmt_intern("e1");
+static pmt_t s_r1 = pmt_intern("r1");
static void
define_protocol_classes()
@@ -49,7 +51,9 @@
pmt_cons(s_data, PMT_NIL)); // outgoing
}
-// ----------------------------------------------------------------
+// ================================================================
+// test_simple_routing
+// ================================================================
// sub-block for test_simple_routing
@@ -213,3 +217,138 @@
msg->data()));
}
+// ================================================================
+// test_relay_routing
+// ================================================================
+
+// internal block for test_relay_routing
+
+class rr2 : public mb_mblock
+{
+ mb_port_sptr d_e1;
+
+public:
+ rr2();
+ ~rr2();
+ void init_fsm();
+};
+
+rr2::rr2()
+{
+ d_e1 = define_port("e1", "simple-send", false, mb_port::EXTERNAL);
+}
+
+rr2::~rr2(){}
+
+void
+rr2::init_fsm()
+{
+ // send two mesages via e1
+ pmt_t our_name = pmt_intern(fullname());
+ d_e1->send(s_data, pmt_list3(our_name, s_e1, pmt_from_long(0)));
+ d_e1->send(s_data, pmt_list3(our_name, s_e1, pmt_from_long(1)));
+}
+
+// ----------------------------------------------------------------
+
+// intermediate block for test_relay_routing
+
+class rr1 : public mb_mblock
+{
+ mb_port_sptr d_r1;
+
+public:
+ rr1();
+ ~rr1();
+};
+
+rr1::rr1()
+{
+ d_r1 = define_port("r1", "simple-send", false, mb_port::RELAY);
+
+ define_component("c0", mb_mblock_sptr(new rr2()));
+
+ connect("self", "r1", "c0", "e1");
+}
+
+rr1::~rr1(){}
+
+// ----------------------------------------------------------------
+
+// top-level container for test_relay_routing
+
+class rr0 : public mb_mblock
+{
+public:
+ rr0();
+ ~rr0();
+};
+
+rr0::rr0()
+{
+ define_component("c0", mb_mblock_sptr(new rr1()));
+ define_component("c1", mb_mblock_sptr(new rr1()));
+
+ connect("c0", "r1", "c1", "r1");
+}
+
+rr0::~rr0(){}
+
+
+/*
+ * This tests basic message routing using RELAY and EXTERNAL ports.
+ * It does not rely on the guts of the runtime being complete,
+ * which is good, because at the time this is being written, it isn't.
+ */
+void
+qa_mblock_send::test_relay_routing()
+{
+ mb_message_sptr msg;
+
+ mb_runtime_sptr rt = mb_make_runtime();
+ mb_mblock_sptr top = mb_mblock_sptr(new rr0());
+ rt->run(top);
+
+ // Reach into the guts and see if the messages ended up where they should
have
+
+ mb_mblock_sptr c0 = top->impl()->component("c0");
+ mb_mblock_sptr c0c0 = c0->impl()->component("c0");
+
+ mb_mblock_sptr c1 = top->impl()->component("c1");
+ mb_mblock_sptr c1c0 = c1->impl()->component("c0");
+
+ // c0c0 should have received
+ // two message from c1c0 via its e1
+
+ msg = c0c0->impl()->msgq().get_highest_pri_msg();
+ CPPUNIT_ASSERT(msg);
+ std::cerr << msg->data() << std::endl;
+ CPPUNIT_ASSERT_EQUAL(s_e1, msg->port_id());
+ CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c1/c0"), s_e1,
pmt_from_long(0)),
+ msg->data()));
+
+ msg = c0c0->impl()->msgq().get_highest_pri_msg();
+ CPPUNIT_ASSERT(msg);
+ std::cerr << msg->data() << std::endl;
+ CPPUNIT_ASSERT_EQUAL(s_e1, msg->port_id());
+ CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c1/c0"), s_e1,
pmt_from_long(1)),
+ msg->data()));
+
+ // c1c0 should have received
+ // two message from c0c0 via its e1
+
+ msg = c1c0->impl()->msgq().get_highest_pri_msg();
+ CPPUNIT_ASSERT(msg);
+ std::cerr << msg->data() << std::endl;
+ CPPUNIT_ASSERT_EQUAL(s_e1, msg->port_id());
+ CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c0/c0"), s_e1,
pmt_from_long(0)),
+ msg->data()));
+
+ msg = c1c0->impl()->msgq().get_highest_pri_msg();
+ CPPUNIT_ASSERT(msg);
+ std::cerr << msg->data() << std::endl;
+ CPPUNIT_ASSERT_EQUAL(s_e1, msg->port_id());
+ CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c0/c0"), s_e1,
pmt_from_long(1)),
+ msg->data()));
+}
+
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.h
2007-02-05 04:27:32 UTC (rev 4374)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.h
2007-02-05 05:52:47 UTC (rev 4375)
@@ -29,10 +29,12 @@
CPPUNIT_TEST_SUITE(qa_mblock_send);
CPPUNIT_TEST(test_simple_routing);
+ CPPUNIT_TEST(test_relay_routing);
CPPUNIT_TEST_SUITE_END();
private:
void test_simple_routing();
+ void test_relay_routing();
};
#endif /* INCLUDED_QA_MBLOCK_SEND_H */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4375 - gnuradio/branches/developers/eb/mb/mblock/src/lib,
eb <=