예제 #1
0
 RecordNumberFixture(uint32_t flags = 0)
     : m_flags(flags) {
   if (sizeof(RecnoType) == 4)
     require_create(m_flags, nullptr, UPS_RECORD_NUMBER32, nullptr);
   else
     require_create(m_flags, nullptr, UPS_RECORD_NUMBER64, nullptr);
   context.reset(new Context(lenv(), 0, 0));
 }
예제 #2
0
  void envTest() {
    ups_key_t key = {};
    ups_record_t rec = {};
    RecnoType recno;

    key.data = &recno;
    key.size = sizeof(recno);
    key.flags = UPS_KEY_USER_ALLOC;

    teardown();
    if (sizeof(RecnoType) == 4)
      require_create(m_flags, nullptr, UPS_RECORD_NUMBER32, nullptr);
    else
      require_create(m_flags, nullptr, UPS_RECORD_NUMBER64, nullptr);

    REQUIRE(0 == ups_db_insert(db, 0, &key, &rec, 0));
    REQUIRE((RecnoType)1ull == *(RecnoType *)key.data);

    if (!is_in_memory()) {
      reopen();
      REQUIRE(0 == ups_db_insert(db, 0, &key, &rec, 0));
      REQUIRE((RecnoType)2ull == *(RecnoType *)key.data);
    }
  }
예제 #3
0
  void levelledDatabaseTest() {
    ups_parameter_t env_params[] = {
        { UPS_PARAM_PAGESIZE, 1024 },
        { 0, 0 }
    };
    ups_parameter_t db_params[] = {
        { UPS_PARAM_KEYSIZE, 80 },
        { 0, 0 }
    };

    close();
    require_create(0, env_params, 0, db_params);
    DbProxy dbp(db);

    std::vector<uint8_t> kvec(80);
    std::vector<uint8_t> rvec;
    for (int i = 0; i < 100; i++) {
      *(int *)&kvec[0] = i;
      dbp.require_insert(kvec, rvec)
         .require_check_integrity();
    }
  }
예제 #4
0
 CheckIntegrityFixture(bool inmemory = false, ups_parameter_t *env_params = 0,
                 ups_parameter_t *db_params = 0) {
   require_create(inmemory ? UPS_IN_MEMORY : 0, env_params,
                   0, db_params);
 }