diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2014-03-26 19:21:20 +0000 |
|---|---|---|
| committer | <> | 2014-05-08 15:03:54 +0000 |
| commit | fb123f93f9f5ce42c8e5785d2f8e0edaf951740e (patch) | |
| tree | c2103d76aec5f1f10892cd1d3a38e24f665ae5db /src/VBox/VMM/testcase/tstCFGM.cpp | |
| parent | 58ed4748338f9466599adfc8a9171280ed99e23f (diff) | |
| download | VirtualBox-master.tar.gz | |
Imported from /home/lorry/working-area/delta_VirtualBox/VirtualBox-4.3.10.tar.bz2.HEADVirtualBox-4.3.10master
Diffstat (limited to 'src/VBox/VMM/testcase/tstCFGM.cpp')
| -rw-r--r-- | src/VBox/VMM/testcase/tstCFGM.cpp | 204 |
1 files changed, 93 insertions, 111 deletions
diff --git a/src/VBox/VMM/testcase/tstCFGM.cpp b/src/VBox/VMM/testcase/tstCFGM.cpp index d34174c0..d95eb245 100644 --- a/src/VBox/VMM/testcase/tstCFGM.cpp +++ b/src/VBox/VMM/testcase/tstCFGM.cpp @@ -4,7 +4,7 @@ */ /* - * Copyright (C) 2006-2007 Oracle Corporation + * Copyright (C) 2006-2012 Oracle Corporation * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -30,143 +30,125 @@ #include <VBox/param.h> #include <iprt/initterm.h> #include <iprt/stream.h> +#include <iprt/mem.h> #include <iprt/string.h> +#include <iprt/test.h> -int main() + +static void doGeneralTests(PCFGMNODE pRoot) { - /* - * Init runtime. - */ - RTR3InitExeNoArguments(RTR3INIT_FLAGS_SUPLIB); + /* test multilevel node creation */ + PCFGMNODE pChild = NULL; + RTTESTI_CHECK_RC_RETV(CFGMR3InsertNode(pRoot, "First/Second/Third//Final", &pChild), VINF_SUCCESS); + RTTESTI_CHECK_RETV(RT_VALID_PTR(pChild)); + RTTESTI_CHECK(CFGMR3GetChild(pRoot, "First/Second/Third/Final") == pChild); /* - * Create empty VM structure and init SSM. + * Boolean queries. */ - PVM pVM; - int rc = SUPR3Init(NULL); - if (RT_SUCCESS(rc)) - rc = SUPR3PageAlloc(RT_ALIGN_Z(sizeof(*pVM), PAGE_SIZE) >> PAGE_SHIFT, (void **)&pVM); - if (RT_FAILURE(rc)) - { - RTPrintf("Fatal error: SUP Failure! rc=%Rrc\n", rc); - return 1; - } + RTTESTI_CHECK_RC(CFGMR3InsertInteger(pChild, "BoolValue", 1), VINF_SUCCESS); + bool f = false; + RTTESTI_CHECK_RC(CFGMR3QueryBool(pChild, "BoolValue", &f), VINF_SUCCESS); + RTTESTI_CHECK(f == true); - static UVM s_UVM; - PUVM pUVM = &s_UVM; - pUVM->pVM = pVM; - pVM->pUVM = pUVM; + RTTESTI_CHECK_RC(CFGMR3QueryBool(pRoot, "BoolValue", &f), VERR_CFGM_VALUE_NOT_FOUND); + RTTESTI_CHECK_RC(CFGMR3QueryBool(NULL, "BoolValue", &f), VERR_CFGM_NO_PARENT); - rc = STAMR3InitUVM(pUVM); - if (RT_FAILURE(rc)) - { - RTPrintf("FAILURE: STAMR3Init failed. rc=%Rrc\n", rc); - return 1; - } + RTTESTI_CHECK_RC(CFGMR3QueryBoolDef(pChild, "ValueNotFound", &f, true), VINF_SUCCESS); + RTTESTI_CHECK(f == true); + RTTESTI_CHECK_RC(CFGMR3QueryBoolDef(pChild, "ValueNotFound", &f, false), VINF_SUCCESS); + RTTESTI_CHECK(f == false); - rc = MMR3InitUVM(pUVM); - if (RT_FAILURE(rc)) - { - RTPrintf("FAILURE: STAMR3Init failed. rc=%Rrc\n", rc); - return 1; - } + RTTESTI_CHECK_RC(CFGMR3QueryBoolDef(NULL, "BoolValue", &f, true), VINF_SUCCESS); + RTTESTI_CHECK(f == true); + RTTESTI_CHECK_RC(CFGMR3QueryBoolDef(NULL, "BoolValue", &f, false), VINF_SUCCESS); + RTTESTI_CHECK(f == false); + +} - rc = CFGMR3Init(pVM, NULL, NULL); - if (RT_FAILURE(rc)) - { - RTPrintf("FAILURE: CFGMR3Init failed. rc=%Rrc\n", rc); - return 1; - } - if (!CFGMR3GetRoot(pVM)) - { - RTPrintf("FAILURE: CFGMR3GetRoot failed\n"); - return 1; - } +static void doTestsOnDefaultValues(PCFGMNODE pRoot) +{ /* integer */ uint64_t u64; - rc = CFGMR3QueryU64(CFGMR3GetRoot(pVM), "RamSize", &u64); - if (RT_FAILURE(rc)) - { - RTPrintf("FAILURE: CFGMR3QueryU64(,\"RamSize\",) failed. rc=%Rrc\n", rc); - return 1; - } + RTTESTI_CHECK_RC(CFGMR3QueryU64(pRoot, "RamSize", &u64), VINF_SUCCESS); - size_t cb; - rc = CFGMR3QuerySize(CFGMR3GetRoot(pVM), "RamSize", &cb); - if (RT_FAILURE(rc)) - { - RTPrintf("FAILURE: CFGMR3QuerySize(,\"RamSize\",) failed. rc=%Rrc\n", rc); - return 1; - } - if (cb != sizeof(uint64_t)) - { - RTPrintf("FAILURE: Incorrect valuesize %d for \"RamSize\" value.\n", cb); - return 1; - } + size_t cb = 0; + RTTESTI_CHECK_RC(CFGMR3QuerySize(pRoot, "RamSize", &cb), VINF_SUCCESS); + RTTESTI_CHECK(cb == sizeof(uint64_t)); /* string */ char *pszName = NULL; - rc = CFGMR3QueryStringAlloc(CFGMR3GetRoot(pVM), "Name", &pszName); - if (RT_FAILURE(rc)) - { - RTPrintf("FAILURE: CFGMR3QueryStringAlloc(,\"Name\" failed. rc=%Rrc\n", rc); - return 1; - } - - rc = CFGMR3QuerySize(CFGMR3GetRoot(pVM), "Name", &cb); - if (RT_FAILURE(rc)) - { - RTPrintf("FAILURE: CFGMR3QuerySize(,\"RamSize\",) failed. rc=%Rrc\n", rc); - return 1; - } - if (cb != strlen(pszName) + 1) - { - RTPrintf("FAILURE: Incorrect valuesize %d for \"Name\" value '%s'.\n", cb, pszName); - return 1; - } + RTTESTI_CHECK_RC(CFGMR3QueryStringAlloc(pRoot, "Name", &pszName), VINF_SUCCESS); + RTTESTI_CHECK_RC(CFGMR3QuerySize(pRoot, "Name", &cb), VINF_SUCCESS); + RTTESTI_CHECK(cb == strlen(pszName) + 1); MMR3HeapFree(pszName); +} - /* test multilevel node creation */ - PCFGMNODE pChild = NULL; - rc = CFGMR3InsertNode(CFGMR3GetRoot(pVM), "First/Second/Third//Final", &pChild); - if (RT_FAILURE(rc)) - { - RTPrintf("FAILURE: CFGMR3InsertNode(,\"First/Second/Third//Final\" failed. rc=%Rrc\n", rc); - return 1; - } - rc = CFGMR3InsertInteger(pChild, "BoolValue", 1); +static void doInVmmTests(RTTEST hTest) +{ + /* + * Create empty VM structure and init SSM. + */ + int rc = SUPR3Init(NULL); if (RT_FAILURE(rc)) { - RTPrintf("FAILURE: CFGMR3InsertInteger(,\"BoolValue\", 1) failed. rc=%Rrc\n", rc); - return 1; - } - PCFGMNODE pNode = CFGMR3GetChild(CFGMR3GetRoot(pVM), "First/Second/Third/Final"); - if (pNode != pChild) - { - RTPrintf("FAILURE: CFGMR3GetChild(,\"First/Second/Third/Final/BoolValue\") failed. pNode=%p expected %p\n", pNode, pChild); - return 1; - } - bool f = false; - rc = CFGMR3QueryBool(pNode, "BoolValue", &f); - if (RT_FAILURE(rc) || !f) - { - RTPrintf("FAILURE: CFGMR3QueryBool(,\"BoolValue\",) failed. rc=%Rrc f=%d\n", rc, f); - return 1; + RTTestSkipped(hTest, "SUPR3Init failed with rc=%Rrc", rc); + return; } + PVM pVM; + RTTESTI_CHECK_RC_RETV(SUPR3PageAlloc(RT_ALIGN_Z(sizeof(*pVM), PAGE_SIZE) >> PAGE_SHIFT, (void **)&pVM), VINF_SUCCESS); + + + PUVM pUVM = (PUVM)RTMemPageAlloc(sizeof(*pUVM)); + pUVM->u32Magic = UVM_MAGIC; + pUVM->pVM = pVM; + pVM->pUVM = pUVM; + + /* + * Do the testing. + */ + RTTESTI_CHECK_RC_RETV(STAMR3InitUVM(pUVM), VINF_SUCCESS); + RTTESTI_CHECK_RC_RETV(MMR3InitUVM(pUVM), VINF_SUCCESS); + RTTESTI_CHECK_RC_RETV(CFGMR3Init(pVM, NULL, NULL), VINF_SUCCESS); + RTTESTI_CHECK_RETV(CFGMR3GetRoot(pVM) != NULL); + + doTestsOnDefaultValues(CFGMR3GetRoot(pVM)); + doGeneralTests(CFGMR3GetRoot(pVM)); + /* done */ - rc = CFGMR3Term(pVM); - if (RT_FAILURE(rc)) - { - RTPrintf("FAILURE: CFGMR3QueryU64(,\"RamSize\" failed. rc=%Rrc\n", rc); - return 1; - } + RTTESTI_CHECK_RC_RETV(CFGMR3Term(pVM), VINF_SUCCESS); +} + + +static void doStandaloneTests(void) +{ + RTTestISub("Standalone"); + PCFGMNODE pRoot;; + RTTESTI_CHECK_RETV((pRoot = CFGMR3CreateTree(NULL)) != NULL); + doGeneralTests(pRoot); + CFGMR3DestroyTree(pRoot); +} - RTPrintf("tstCFGM: SUCCESS\n"); - return rc; +int main() +{ + /* + * Init runtime. + */ + RTTEST hTest; + RTR3InitExeNoArguments(RTR3INIT_FLAGS_SUPLIB); + RTEXITCODE rcExit = RTTestInitAndCreate("tstCFGM", &hTest); + if (rcExit != RTEXITCODE_SUCCESS) + return rcExit; + + doInVmmTests(hTest); + doStandaloneTests(); + + return RTTestSummaryAndDestroy(hTest); } + |
