示例#1
0
/**
 * Check the bad raw exception.
 * Create a primary block a payload block and a raw canonical without any flags.
 * Add all of them into a raw bundle.
 * The bundle must throw an exception, because no last block flag is found.
 * Create the canonical block with the raw data, set the flag. Create the new raw
 * bundle, now no exception will be through.
 */
TEST(BundleTest, BadRawException) {
  std::pair<uint64_t, uint64_t> time = TimestampManager::getInstance()
      ->getTimestamp();
  PrimaryBlock pb = PrimaryBlock("Source", "Destination", time.first,
                                 time.second);
  PayloadBlock pb1 = PayloadBlock("This is a payload");
  std::stringstream ss;
  ss << static_cast<uint8_t>(2) << SDNV::encode(std::bitset<7>().to_ulong());
  std::string data = std::to_string(rand() + 1);
  ss << SDNV::encode(data.size()) << data;
  std::string canonical = ss.str();
  ss.str(std::string());
  ss << pb.toRaw() << pb1.toRaw() << canonical;
  ASSERT_THROW(Bundle(ss.str()), BundleCreationException);
  // Add last block flag to canonical.
  ss.str(std::string());
  ss << static_cast<uint8_t>(2) << SDNV::encode(std::bitset<7>().to_ulong())
     << SDNV::encode(data.size()) << data;
  CanonicalBlock cb = CanonicalBlock(ss.str());
  cb.setProcFlag(CanonicalBlockControlFlags::LAST_BLOCK);
  ss.str(std::string());
  ss << pb.toRaw() << pb1.toRaw() << cb.toRaw();
  ASSERT_NO_THROW(Bundle(ss.str()));
  // Check Exception when two payload blocks are present
  ss.str(std::string());
  ss << pb.toRaw() << pb1.toRaw() << pb1.toRaw() << cb.toRaw();
  ASSERT_THROW(Bundle(ss.str()), BundleCreationException);
}
示例#2
0
		bool Bundle::operator>(const Bundle& other) const
		{
			return PrimaryBlock(*this) > other;
		}