Revision 7e37a5918cbe18e6aca0751d9ff01c0e1dc3b055 authored by Akanksha Mahajan on 24 July 2020, 21:45:45 UTC, committed by Facebook GitHub Bot on 24 July 2020, 21:47:00 UTC
Summary:
BackupableDBTest.RateLimiting test is failing due to timed out
on our test server. It might be because of nested loops run sequentially that test different type of combinations of parameters. This patch converts the test into parameterized test so that all combinations can be tested out.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/7167

Test Plan: make check -j64

Reviewed By: zhichao-cao

Differential Revision: D22709531

Pulled By: akankshamahajan15

fbshipit-source-id: 95518153e87b3b5311a6c1960a191bca58898786
1 parent 0c5bb10
Raw File
scoped_arena_iterator.h
// Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
//  This source code is licensed under both the GPLv2 (found in the
//  COPYING file in the root directory) and Apache 2.0 License
//  (found in the LICENSE.Apache file in the root directory).
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. See the AUTHORS file for names of contributors.
#pragma once

#include "table/internal_iterator.h"
#include "port/port.h"

namespace ROCKSDB_NAMESPACE {
class ScopedArenaIterator {

  void reset(InternalIterator* iter) ROCKSDB_NOEXCEPT {
    if (iter_ != nullptr) {
      iter_->~InternalIterator();
    }
    iter_ = iter;
  }

 public:

  explicit ScopedArenaIterator(InternalIterator* iter = nullptr)
      : iter_(iter) {}

  ScopedArenaIterator(const ScopedArenaIterator&) = delete;
  ScopedArenaIterator& operator=(const ScopedArenaIterator&) = delete;

  ScopedArenaIterator(ScopedArenaIterator&& o) ROCKSDB_NOEXCEPT {
    iter_ = o.iter_;
    o.iter_ = nullptr;
  }

  ScopedArenaIterator& operator=(ScopedArenaIterator&& o) ROCKSDB_NOEXCEPT {
    reset(o.iter_);
    o.iter_ = nullptr;
    return *this;
  }

  InternalIterator* operator->() { return iter_; }
  InternalIterator* get() { return iter_; }

  void set(InternalIterator* iter) { reset(iter); }

  InternalIterator* release() {
    assert(iter_ != nullptr);
    auto* res = iter_;
    iter_ = nullptr;
    return res;
  }

  ~ScopedArenaIterator() {
    reset(nullptr);
  }

 private:
  InternalIterator* iter_;
};
}  // namespace ROCKSDB_NAMESPACE
back to top