diff options
| author | 2022-02-15 22:20:16 -0800 | |
|---|---|---|
| committer | 2022-03-28 11:43:07 -0700 | |
| commit | bd006786a7f19297e11c84474777ee6c9e15b0d9 (patch) | |
| tree | 015976ef5c93128876bfd335dd6f1799257f6796 /libs | |
| parent | 56becd9a2e8abc5694809a7af6b69eeab018fb23 (diff) | |
FTL: Add thread safety helpers
Bug: 185536303
Test: ftl_test
Change-Id: I0f0550d0608a11b137741cd94248b5bc533a0304
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/ftl/Android.bp | 2 | ||||
| -rw-r--r-- | libs/ftl/fake_guard_test.cpp | 49 |
2 files changed, 51 insertions, 0 deletions
diff --git a/libs/ftl/Android.bp b/libs/ftl/Android.bp index bc2eb23677..97b522a390 100644 --- a/libs/ftl/Android.bp +++ b/libs/ftl/Android.bp @@ -18,6 +18,7 @@ cc_test { "cast_test.cpp", "concat_test.cpp", "enum_test.cpp", + "fake_guard_test.cpp", "future_test.cpp", "small_map_test.cpp", "small_vector_test.cpp", @@ -29,6 +30,7 @@ cc_test { "-Werror", "-Wextra", "-Wpedantic", + "-Wthread-safety", ], header_libs: [ diff --git a/libs/ftl/fake_guard_test.cpp b/libs/ftl/fake_guard_test.cpp new file mode 100644 index 0000000000..9d36e69444 --- /dev/null +++ b/libs/ftl/fake_guard_test.cpp @@ -0,0 +1,49 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <ftl/fake_guard.h> +#include <gtest/gtest.h> + +#include <functional> +#include <mutex> + +namespace android::test { + +// Keep in sync with example usage in header file. +TEST(FakeGuard, Example) { + struct { + std::mutex mutex; + int x FTL_ATTRIBUTE(guarded_by(mutex)) = -1; + + int f() { + { + ftl::FakeGuard guard(mutex); + x = 0; + } + + return FTL_FAKE_GUARD(mutex, x + 1); + } + + std::function<int()> g() const { + return [this]() FTL_FAKE_GUARD(mutex) { return x; }; + } + } s; + + EXPECT_EQ(s.f(), 1); + EXPECT_EQ(s.g()(), 0); +} + +} // namespace android::test |