本文整理汇总了C++中MockRepository::OnCallFunc方法的典型用法代码示例。如果您正苦于以下问题:C++ MockRepository::OnCallFunc方法的具体用法?C++ MockRepository::OnCallFunc怎么用?C++ MockRepository::OnCallFunc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MockRepository
的用法示例。
在下文中一共展示了MockRepository::OnCallFunc方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void
driver_entry_ut::test_common_dump_resolve_symbol_failed()
{
EXPECT_TRUE(common_add_module(m_dummy1, m_dummy1_length) == BF_SUCCESS);
EXPECT_TRUE(common_add_module(m_dummy2, m_dummy2_length) == BF_SUCCESS);
EXPECT_TRUE(common_add_module(m_dummy3, m_dummy3_length) == BF_SUCCESS);
EXPECT_TRUE(common_load_vmm() == BF_SUCCESS);
// We need to wrap the mocks variable in a temporary stack frame as the
// current implementation of HippoMocks does not have a function to undo
// it's hooks into c-style functions as the functionality to do this is
// in the destructor.
{
MockRepository mocks;
mocks.OnCallFunc(resolve_symbol).Return(-1);
RUN_UNITTEST_WITH_MOCKS(mocks, [&]
{
EXPECT_TRUE(common_dump_vmm() == BF_ERROR_FAILED_TO_DUMP_DR);
});
}
EXPECT_TRUE(common_unload_vmm() == BF_SUCCESS);
}
示例2: vmxon
void
vmxon_ut::test_start_check_ia32_vmx_cr4_fixed0_msr_failure()
{
MockRepository mocks;
auto in = bfn::mock_shared<intrinsics_intel_x64>(mocks);
auto intrinsics = in.get();
auto l_mm = bfn::mock_shared<memory_manager>(mocks);
mm = l_mm.get();
// is_vmx_operation_enabled
Call &cr4_0 = mocks.ExpectCall(intrinsics, intrinsics_intel_x64::read_cr4).Return(0);
// check_cpuid_vmx_supported
mocks.OnCall(intrinsics, intrinsics_intel_x64::cpuid_ecx).With(1).Return((1 << 5));
// check_vmx_capabilities_msr
auto basic = ((1ULL << 55) | ((6ULL << 50) & (~(1ULL << 48))));
mocks.OnCall(intrinsics, intrinsics_intel_x64::read_msr).With(IA32_VMX_BASIC_MSR).Return(basic);
// check_ia32_vmx_cr0_fixed_msr
mocks.OnCall(intrinsics, intrinsics_intel_x64::read_cr0).Return((0xffffffff));
mocks.OnCall(intrinsics, intrinsics_intel_x64::read_msr).With(IA32_VMX_CR0_FIXED0_MSR).Return(0);
mocks.OnCall(intrinsics, intrinsics_intel_x64::read_msr).With(IA32_VMX_CR0_FIXED1_MSR).Return(0xffffffff);
// check_ia32_feature_control_msr
mocks.OnCall(intrinsics, intrinsics_intel_x64::read_msr).With(IA32_FEATURE_CONTROL_MSR).Return((1 << 0));
// check_v8086_disabled
mocks.OnCall(intrinsics, intrinsics_intel_x64::read_rflags).Return(~RFLAGS_VM_VIRTUAL_8086_MODE);
// create_vmxon_region
mocks.OnCallFunc(memory_manager::instance).Do(fake_memory_manager);
mocks.OnCall(mm, memory_manager::malloc_aligned).Do(stubbed_malloc_aligned);
mocks.OnCall(mm, memory_manager::virt_to_phys).Return((void *)0xDEADBEEFDEAF1000);
// enable_vmx_operation
Call &cr4_1 = mocks.ExpectCall(intrinsics, intrinsics_intel_x64::read_cr4).After(cr4_0).Return(0);
mocks.OnCall(intrinsics, intrinsics_intel_x64::write_cr4).Do(stubbed_write_cr4);
// is_vmx_operation_enabled
Call &cr4_2 = mocks.ExpectCall(intrinsics, intrinsics_intel_x64::read_cr4).After(cr4_1).Return(CR4_VMXE_VMX_ENABLE_BIT);
// check_ia32_vmx_cr4_fixed_msr ***
mocks.ExpectCall(intrinsics, intrinsics_intel_x64::read_cr4).After(cr4_2).Return(0xDEADBEEF);
mocks.OnCall(intrinsics, intrinsics_intel_x64::read_msr).With(IA32_VMX_CR4_FIXED0_MSR).Return(0xFEEDBEEF);
mocks.OnCall(intrinsics, intrinsics_intel_x64::read_msr).With(IA32_VMX_CR4_FIXED1_MSR).Return(0xDEADBEEF);
// Handle rollbacks
mocks.OnCall(intrinsics, intrinsics_intel_x64::read_cr4).Return(0);
mocks.OnCall(intrinsics, intrinsics_intel_x64::vmxoff).Return(true);
mocks.OnCall(intrinsics, intrinsics_intel_x64::write_cr4).Do(stubbed_write_cr4);
RUN_UNITTEST_WITH_MOCKS(mocks, [&]
{
vmxon_intel_x64 vmxon(in);
EXPECT_EXCEPTION(vmxon.start(), bfn::vmxon_fixed_msr_failure_error);
});
}
示例3:
void
driver_entry_ut::test_common_load_loader_init_failed()
{
MockRepository mocks;
mocks.OnCallFunc(bfelf_loader_init).Return(-1);
RUN_UNITTEST_WITH_MOCKS(mocks, [&]
{
EXPECT_TRUE(common_load_vmm() == -1);
});
}
示例4:
void
entry_ut::test_start_vmm_success()
{
MockRepository mocks;
auto vcm = mocks.Mock<vcpu_manager>();
mocks.OnCallFunc(vcpu_manager::instance).Return(vcm);
mocks.OnCall(vcm, vcpu_manager::init);
RUN_UNITTEST_WITH_MOCKS(mocks, [&]
{
EXPECT_NO_EXCEPTION(start_vmm(0));
});
}
示例5:
void
entry_ut::test_start_vmm_throws_standard_exception()
{
MockRepository mocks;
auto vcm = mocks.Mock<vcpu_manager>();
mocks.OnCallFunc(vcpu_manager::instance).Return(vcm);
mocks.OnCall(vcm, vcpu_manager::create_vcpu).Throw(std::exception());
mocks.OnCall(vcm, vcpu_manager::run_vcpu);
RUN_UNITTEST_WITH_MOCKS(mocks, [&]
{
EXPECT_NO_EXCEPTION(start_vmm(0));
});
}
示例6:
static auto
setup_mm(MockRepository &mocks)
{
auto descriptor_list =
{
memory_descriptor{0x12345000, 0x54321000, MEMORY_TYPE_R | MEMORY_TYPE_W},
memory_descriptor{0x12346000, 0x54322000, MEMORY_TYPE_R | MEMORY_TYPE_E},
memory_descriptor{0xDEADBEEF, 0xDEADBEEF, 0}
};
auto mm = mocks.Mock<memory_manager_x64>();
mocks.OnCallFunc(memory_manager_x64::instance).Return(mm);
mocks.OnCall(mm, memory_manager_x64::descriptors).Return(descriptor_list);
mocks.OnCall(mm, memory_manager_x64::virtptr_to_physint).Return(0x0000000ABCDEF0000);
mocks.OnCall(mm, memory_manager_x64::add_md);
mocks.OnCall(mm, memory_manager_x64::remove_md);
return mm;
}