Commit e1b05e78 authored by Matthieu Martin's avatar Matthieu Martin Committed by Facebook Github Bot

Test Ensure unset called before set

Summary: This is a unittest for an issue I fixed previously (but had to land ASAP).

Reviewed By: yfeldblum

Differential Revision: D9140622

fbshipit-source-id: 09dcb4206d2a09a57c2f2239a1aa217b124e88fd
parent 075ca921
......@@ -210,6 +210,38 @@ TEST(RequestContext, deadlockTest) {
RequestContext::get()->clearContextData("test");
}
// A common use case is to use set/unset to maintain a thread global
// Regression test to ensure that unset is always called before set
TEST(RequestContext, sharedGlobalTest) {
static bool global = false;
class GlobalTestData : public RequestData {
public:
void onSet() override {
ASSERT_FALSE(global);
global = true;
}
void onUnset() override {
ASSERT_TRUE(global);
global = false;
}
bool hasCallback() override {
return true;
}
};
RequestContextScopeGuard g0;
RequestContext::get()->setContextData(
"test", std::make_unique<GlobalTestData>());
{
RequestContextScopeGuard g1;
RequestContext::get()->setContextData(
"test", std::make_unique<GlobalTestData>());
}
}
TEST(RequestContext, ShallowCopyBasic) {
ShallowCopyRequestContextScopeGuard g0;
setData(123, "immutable");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment