pytorch/caffe2/observers/time_observer_test.cc
Nikita Shulga a9b0a921d5 Disable avoid-non-const-global-variables lint check (#62008)
Summary:
As GoogleTest `TEST` macro is non-compliant with it as well as `DEFINE_DISPATCH`

All changes but the ones to `.clang-tidy` are generated using following script:
```
for i in `find . -type f -iname "*.c*" -or -iname "*.h"|xargs grep cppcoreguidelines-avoid-non-const-global-variables|cut -f1 -d:|sort|uniq`;  do sed -i "/\/\/ NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)/d" $i; done
```

Pull Request resolved: https://github.com/pytorch/pytorch/pull/62008

Reviewed By: driazati, r-barnes

Differential Revision: D29838584

Pulled By: malfet

fbshipit-source-id: 1b2f8602c945bd4ce50a9bfdd204755556e31d13
2021-07-22 18:04:40 -07:00

74 lines
1.8 KiB
C++

#include "caffe2/core/common.h"
#include "caffe2/core/net.h"
#include "caffe2/core/observer.h"
#include "caffe2/core/operator.h"
#include "time_observer.h"
#include <gtest/gtest.h>
#include <chrono>
#include <thread>
namespace caffe2 {
namespace {
class SleepOp final : public OperatorBase {
public:
using OperatorBase::OperatorBase;
bool Run(int /* unused */) override {
StartAllObservers();
std::this_thread::sleep_for(std::chrono::milliseconds(3000));
StopAllObservers();
return true;
}
};
REGISTER_CPU_OPERATOR(SleepOp, SleepOp);
REGISTER_CUDA_OPERATOR(SleepOp, SleepOp);
OPERATOR_SCHEMA(SleepOp)
.NumInputs(0, INT_MAX)
.NumOutputs(0, INT_MAX)
.AllowInplace({{0, 0}, {1, 1}});
unique_ptr<NetBase> CreateNetTestHelper(Workspace* ws) {
NetDef net_def;
{
auto& op = *(net_def.add_op());
op.set_type("SleepOp");
op.add_input("in");
op.add_output("hidden");
}
{
auto& op = *(net_def.add_op());
op.set_type("SleepOp");
op.add_input("hidden");
op.add_output("out");
}
net_def.add_external_input("in");
net_def.add_external_output("out");
return CreateNet(net_def, ws);
}
} // namespace
TEST(TimeObserverTest, Test3Seconds) {
Workspace ws;
ws.CreateBlob("in");
NetDef net_def;
unique_ptr<NetBase> net(CreateNetTestHelper(&ws));
auto net_ob = std::make_unique<TimeObserver>(net.get());
const auto* ob = net_ob.get();
net->AttachObserver(std::move(net_ob));
net->Run();
CAFFE_ENFORCE(ob);
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDelete)
LOG(INFO) << "av time children: " << ob->average_time_children();
LOG(INFO) << "av time: " << ob->average_time();
CAFFE_ENFORCE(ob->average_time_children() > 3000);
CAFFE_ENFORCE(ob->average_time_children() < 3500);
CAFFE_ENFORCE(ob->average_time() > 6000);
CAFFE_ENFORCE(ob->average_time() < 6500);
}
} // namespace caffe2