| #include "sync-core.h" |
| |
| #include <boost/test/unit_test.hpp> |
| #include <boost/filesystem.hpp> |
| |
| using namespace std; |
| using namespace Ccnx; |
| using namespace boost::filesystem; |
| |
| BOOST_AUTO_TEST_SUITE(SyncCoreTests) |
| |
| SyncStateMsgPtr msg1; |
| SyncStateMsgPtr msg2; |
| |
| void callback1(const SyncStateMsgPtr &ptr) |
| { |
| msg1 = ptr; |
| } |
| |
| void callback2(const SyncStateMsgPtr &ptr) |
| { |
| msg2 = ptr; |
| } |
| |
| BOOST_AUTO_TEST_CASE(SyncCoreTest) |
| { |
| string dir = "./SyncCoreTest"; |
| string dir1 = "./SyncCoreTest/1"; |
| string dir2 = "./SyncCoreTest/2"; |
| Name user1("/joker"); |
| Name loc1("/gotham1"); |
| Name user2("/darkknight"); |
| Name loc2("/gotham2"); |
| Name syncPrefix("/broadcast/darkknight"); |
| CcnxWrapperPtr c1(new CcnxWrapper()); |
| CcnxWrapperPtr c2(new CcnxWrapper()); |
| SchedulerPtr scheduler(new Scheduler()); |
| scheduler->start(); |
| |
| // clean the test dir |
| path d(dir); |
| if (exists(d)) |
| { |
| remove_all(d); |
| } |
| |
| SyncCore *core1 = new SyncCore(dir1, user1, loc1, syncPrefix, bind(callback1, _1), c1, scheduler); |
| usleep(10000); |
| SyncCore *core2 = new SyncCore(dir2, user2, loc2, syncPrefix, bind(callback2, _1), c2, scheduler); |
| usleep(10000); |
| |
| SyncState state; |
| |
| core1->updateLocalState(1); |
| usleep(100000); |
| BOOST_CHECK_EQUAL(msg2->state_size(), 1); |
| state = msg2->state(0); |
| BOOST_CHECK_EQUAL(state.seq(), 1); |
| BOOST_CHECK_EQUAL(user1, state.name()); |
| BOOST_CHECK_EQUAL(loc1, state.locator()); |
| |
| core1->updateLocalState(5); |
| usleep(100000); |
| state = msg2->state(0); |
| BOOST_CHECK_EQUAL(state.seq(), 5); |
| |
| core2->updateLocalState(10); |
| usleep(100000); |
| state = msg1->state(0); |
| BOOST_CHECK_EQUAL(state.seq(), 10); |
| |
| // simple simultaneous data generation |
| core1->updateLocalState(11); |
| core2->updateLocalState(12); |
| usleep(100000); |
| state = msg1->state(0); |
| BOOST_CHECK_EQUAL(state.seq(), 12); |
| state = msg2->state(0); |
| BOOST_CHECK_EQUAL(state.seq(), 11); |
| |
| // clean the test dir |
| if (exists(d)) |
| { |
| remove_all(d); |
| } |
| } |
| |
| BOOST_AUTO_TEST_SUITE_END() |