123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- //
- // Copyright (C) 2017 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.
- //
- #ifndef UPDATE_ENGINE_UPDATE_MANAGER_POLICY_TEST_UTILS_H_
- #define UPDATE_ENGINE_UPDATE_MANAGER_POLICY_TEST_UTILS_H_
- #include <memory>
- #include <string>
- #include <base/time/time.h>
- #include <brillo/message_loops/fake_message_loop.h>
- #include <gtest/gtest.h>
- #include "update_engine/common/fake_clock.h"
- #include "update_engine/update_manager/evaluation_context.h"
- #include "update_engine/update_manager/fake_state.h"
- #include "update_engine/update_manager/policy_utils.h"
- namespace chromeos_update_manager {
- class UmPolicyTestBase : public ::testing::Test {
- protected:
- UmPolicyTestBase() = default;
- void SetUp() override;
- void TearDown() override;
- // Sets the clock to fixed values.
- virtual void SetUpDefaultClock();
- // Sets the fake time provider to the time given by the fake clock.
- virtual void SetUpDefaultTimeProvider();
- // Sets up the default state in fake_state_. override to add Policy-specific
- // items, but only after calling this class's implementation.
- virtual void SetUpDefaultState();
- // Returns a default UpdateState structure:
- virtual UpdateState GetDefaultUpdateState(base::TimeDelta first_seen_period);
- // Runs the passed |method| after resetting the EvaluationContext and expects
- // it to return the |expected| return value.
- template <typename T, typename R, typename... Args>
- void ExpectStatus(EvalStatus expected, T method, R* result, Args... args) {
- std::string error = "<None>";
- eval_ctx_->ResetEvaluation();
- EXPECT_EQ(expected,
- (*method)(eval_ctx_.get(), &fake_state_, &error, result, args...))
- << "Returned error: " << error
- << "\nEvaluation context: " << eval_ctx_->DumpContext();
- }
- // Runs the passed |method| after resetting the EvaluationContext, in order
- // to use the method to get a value for other testing (doesn't validate the
- // return value, just returns it).
- template <typename T, typename R, typename... Args>
- EvalStatus CallMethodWithContext(T method, R* result, Args... args) {
- std::string error = "<None>";
- eval_ctx_->ResetEvaluation();
- return (*method)(eval_ctx_.get(), &fake_state_, &error, result, args...);
- }
- // Runs the passed |policy_method| on the framework policy and expects it to
- // return the |expected| return value.
- template <typename T, typename R, typename... Args>
- void ExpectPolicyStatus(EvalStatus expected,
- T policy_method,
- R* result,
- Args... args) {
- std::string error = "<None>";
- eval_ctx_->ResetEvaluation();
- EXPECT_EQ(expected,
- (policy_.get()->*policy_method)(
- eval_ctx_.get(), &fake_state_, &error, result, args...))
- << "Returned error: " << error
- << "\nEvaluation context: " << eval_ctx_->DumpContext();
- }
- brillo::FakeMessageLoop loop_{nullptr};
- chromeos_update_engine::FakeClock fake_clock_;
- FakeState fake_state_;
- scoped_refptr<EvaluationContext> eval_ctx_;
- std::unique_ptr<Policy> policy_;
- };
- } // namespace chromeos_update_manager
- #endif // UPDATE_ENGINE_UPDATE_MANAGER_POLICY_TEST_UTILS_H_
|