예제 #1
0
void TestMaster::testIntegrityPoll()
{
    Master* master_p;
    DummyDb db;
    DummyTimer timer;
    int debugLevel = -1;
    DummyTx tx(&debugLevel, 'M', 'S');
    int integrityPollInterval = 10;

    Master::MasterConfig          masterConfig;
    Datalink::DatalinkConfig      datalinkConfig;
    Station::StationConfig        stationConfig;

    masterConfig.addr = 1;
    masterConfig.consecutiveTimeoutsForCommsFail = 3;
    masterConfig.integrityPollInterval_p = &integrityPollInterval;
    masterConfig.debugLevel_p = &debugLevel;

    stationConfig.addr = 2;
    stationConfig.debugLevel_p = &debugLevel;

    datalinkConfig.addr                  = masterConfig.addr;
    datalinkConfig.isMaster              = 1;
    datalinkConfig.keepAliveInterval_ms  = 10000;
    datalinkConfig.tx_p                  = &tx;
    datalinkConfig.debugLevel_p          = &debugLevel;

    master_p = new Master (masterConfig, datalinkConfig, &stationConfig, 1,
                           &db, &timer);

    // full resp to an integrity poll
    unsigned char r[] ={ 0x05, 0x64, 0x10, 0x44, 0x01, 0x00, 0x02, 0x00,
                         0x50, 0x8e, 0xc0, 0xc5, 0x81, 0x80, 0x00, 0x01,
                         0x02, 0x00, 0x00, 0x00, 0xff, 0xde, 0xa7 };


    // first test the repsonse without sending the poll
    Bytes bytes1(r, r+sizeof(r));
    master_p->rxData( &bytes1, 0);
    QVERIFY (master_p->getStat(2, TransportStats::RX_SEGMENT)           == 1);
    QVERIFY (master_p->getStat(2, TransportStats::RX_FRAGMENT)          == 1);
    QVERIFY (master_p->getStat(2, Station       ::RX_UNEXP_RESPONSE)    == 1);

    // send the poll
    master_p->poll( Master::INTEGRITY);
    QVERIFY (master_p->getStat(2, TransportStats::TX_SEGMENT)           == 1);
    QVERIFY (master_p->getStat(2, TransportStats::TX_FRAGMENT)          == 1);
    QVERIFY (master_p->getStat(2, Station       ::TX_INTEGRITY_POLL)    == 1);
    QVERIFY (master_p->getStat(2, Station       ::TX_READ_REQUEST)      == 1);

    // send a response to the poll
    Bytes bytes2(r, r+sizeof(r));
    master_p->rxData( &bytes2, 0);
    QVERIFY (master_p->getStat(2, TransportStats::RX_SEGMENT)           == 2);
    QVERIFY (master_p->getStat(2, TransportStats::RX_FRAGMENT)          == 2);
    QVERIFY (master_p->getStat(2, Station       ::RX_RESPONSE)          == 1);

}
예제 #2
0
TEST (uint256_union, big_endian_union_constructor)
{
	boost::multiprecision::uint256_t value1 (1);
	rai::uint256_union bytes1 (value1);
	ASSERT_EQ (1, bytes1.bytes [31]);
	boost::multiprecision::uint512_t value2 (1);
	rai::uint512_union bytes2 (value2);
	ASSERT_EQ (1, bytes2.bytes [63]);
}
예제 #3
0
TEST (uint256_union, big_endian_union_function)
{
	rai::uint256_union bytes1 ("FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210");
	ASSERT_EQ (0xfe, bytes1.bytes [0x00]);
	ASSERT_EQ (0xdc, bytes1.bytes [0x01]);
	ASSERT_EQ (0xba, bytes1.bytes [0x02]);
	ASSERT_EQ (0x98, bytes1.bytes [0x03]);
	ASSERT_EQ (0x76, bytes1.bytes [0x04]);
	ASSERT_EQ (0x54, bytes1.bytes [0x05]);
	ASSERT_EQ (0x32, bytes1.bytes [0x06]);
	ASSERT_EQ (0x10, bytes1.bytes [0x07]);
	ASSERT_EQ (0xfe, bytes1.bytes [0x08]);
	ASSERT_EQ (0xdc, bytes1.bytes [0x09]);
	ASSERT_EQ (0xba, bytes1.bytes [0x0a]);
	ASSERT_EQ (0x98, bytes1.bytes [0x0b]);
	ASSERT_EQ (0x76, bytes1.bytes [0x0c]);
	ASSERT_EQ (0x54, bytes1.bytes [0x0d]);
	ASSERT_EQ (0x32, bytes1.bytes [0x0e]);
	ASSERT_EQ (0x10, bytes1.bytes [0x0f]);
	ASSERT_EQ (0xfe, bytes1.bytes [0x10]);
	ASSERT_EQ (0xdc, bytes1.bytes [0x11]);
	ASSERT_EQ (0xba, bytes1.bytes [0x12]);
	ASSERT_EQ (0x98, bytes1.bytes [0x13]);
	ASSERT_EQ (0x76, bytes1.bytes [0x14]);
	ASSERT_EQ (0x54, bytes1.bytes [0x15]);
	ASSERT_EQ (0x32, bytes1.bytes [0x16]);
	ASSERT_EQ (0x10, bytes1.bytes [0x17]);
	ASSERT_EQ (0xfe, bytes1.bytes [0x18]);
	ASSERT_EQ (0xdc, bytes1.bytes [0x19]);
	ASSERT_EQ (0xba, bytes1.bytes [0x1a]);
	ASSERT_EQ (0x98, bytes1.bytes [0x1b]);
	ASSERT_EQ (0x76, bytes1.bytes [0x1c]);
	ASSERT_EQ (0x54, bytes1.bytes [0x1d]);
	ASSERT_EQ (0x32, bytes1.bytes [0x1e]);
	ASSERT_EQ (0x10, bytes1.bytes [0x1f]);
	ASSERT_EQ ("FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210", bytes1.to_string ());
	ASSERT_EQ (rai::uint256_t ("0xFEDCBA9876543210FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210"), bytes1.number ());
	rai::uint512_union bytes2;
	bytes2.clear ();
	bytes2.bytes [63] = 1;
	ASSERT_EQ (rai::uint512_t (1), bytes2.number ());
}