MCPcopy Create free account
hub / github.com/apache/impala / TEST

Function TEST

be/src/runtime/thread-resource-mgr-test.cc:46–93  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44};
45
46TEST(ThreadResourceMgr, BasicTest) {
47 ThreadResourceMgr mgr(5);
48 NotifiedCounter counter1, counter2;
49
50 unique_ptr<ThreadResourcePool> c1 = mgr.CreatePool();
51 int callback1 = c1->AddThreadAvailableCb(bind<void>(mem_fn(&NotifiedCounter::Notify),
52 &counter1, _1));
53 c1->AcquireThreadToken();
54 c1->AcquireThreadToken();
55 c1->AcquireThreadToken();
56 EXPECT_EQ(c1->num_threads(), 3);
57 EXPECT_EQ(c1->num_required_threads(), 3);
58 EXPECT_EQ(c1->num_optional_threads(), 0);
59 EXPECT_EQ(counter1.counter(), 0);
60 c1->ReleaseThreadToken(true);
61 EXPECT_EQ(c1->num_threads(), 2);
62 EXPECT_EQ(c1->num_required_threads(), 2);
63 EXPECT_EQ(c1->num_optional_threads(), 0);
64 EXPECT_EQ(counter1.counter(), 1);
65 EXPECT_TRUE(c1->TryAcquireThreadToken());
66 EXPECT_TRUE(c1->TryAcquireThreadToken());
67 EXPECT_TRUE(c1->TryAcquireThreadToken());
68 EXPECT_FALSE(c1->TryAcquireThreadToken());
69 EXPECT_EQ(c1->num_threads(), 5);
70 EXPECT_EQ(c1->num_required_threads(), 2);
71 EXPECT_EQ(c1->num_optional_threads(), 3);
72 c1->ReleaseThreadToken(true);
73 c1->ReleaseThreadToken(false);
74 EXPECT_EQ(counter1.counter(), 3);
75
76 // Register a new consumer, quota is cut in half
77 unique_ptr<ThreadResourcePool> c2 = mgr.CreatePool();
78 int callback2 = c2->AddThreadAvailableCb(bind<void>(mem_fn(&NotifiedCounter::Notify),
79 &counter2, _1));
80 EXPECT_FALSE(c1->TryAcquireThreadToken());
81 EXPECT_EQ(c1->num_threads(), 3);
82 c1->AcquireThreadToken();
83 EXPECT_EQ(c1->num_threads(), 4);
84 EXPECT_EQ(c1->num_required_threads(), 2);
85 EXPECT_EQ(c1->num_optional_threads(), 2);
86
87 c1->RemoveThreadAvailableCb(callback1);
88 mgr.DestroyPool(move(c1));
89 c2->RemoveThreadAvailableCb(callback2);
90 mgr.DestroyPool(move(c2));
91 EXPECT_EQ(counter1.counter(), 3);
92 EXPECT_EQ(counter2.counter(), 1);
93}
94
95TEST(ThreadResourceMgr, MultiCallbacks) {
96 ThreadResourceMgr mgr(6);

Callers

nothing calls this directly

Calls 12

moveFunction · 0.85
CreatePoolMethod · 0.80
AddThreadAvailableCbMethod · 0.80
AcquireThreadTokenMethod · 0.80
num_required_threadsMethod · 0.80
num_optional_threadsMethod · 0.80
counterMethod · 0.80
TryAcquireThreadTokenMethod · 0.80
DestroyPoolMethod · 0.80
num_threadsMethod · 0.45
ReleaseThreadTokenMethod · 0.45

Tested by

no test coverage detected