[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 05/14] golang/xenlight: Add tests host related functionality functions
Create tests for the following functions: - GetVersionInfo - GetPhysinfo - GetDominfo - GetMaxCpus - GetOnlineCpus - GetMaxNodes - GetFreeMemory Signed-off-by: Ronald Rojas <ronladred@xxxxxxxxx> Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> --- changes since last version - created CFLAGS and LDLIBS variables to build test C files with required dependencies. - created create_context and destroy_context function for tests to create/destroy libxl_ctx and xenlogger - Formating changes - Removed stale comments - Removed redundant error checks in Golang tests - Negated printed error code in freememory.go CC: xen-devel@xxxxxxxxxxxxx CC: george.dunlap@xxxxxxxxxx CC: ian.jackson@xxxxxxxxxxxxx CC: wei.liu2@xxxxxxxxxx --- --- tools/golang/xenlight/test/xeninfo/Makefile | 41 +++++++++++++++++++++++ tools/golang/xenlight/test/xeninfo/dominfo.c | 33 ++++++++++++++++++ tools/golang/xenlight/test/xeninfo/dominfo.go | 31 +++++++++++++++++ tools/golang/xenlight/test/xeninfo/freememory.c | 26 ++++++++++++++ tools/golang/xenlight/test/xeninfo/freememory.go | 25 ++++++++++++++ tools/golang/xenlight/test/xeninfo/maxcpu.c | 18 ++++++++++ tools/golang/xenlight/test/xeninfo/maxcpu.go | 24 +++++++++++++ tools/golang/xenlight/test/xeninfo/maxnodes.c | 15 +++++++++ tools/golang/xenlight/test/xeninfo/maxnodes.go | 24 +++++++++++++ tools/golang/xenlight/test/xeninfo/onlinecpu.c | 18 ++++++++++ tools/golang/xenlight/test/xeninfo/onlinecpu.go | 24 +++++++++++++ tools/golang/xenlight/test/xeninfo/physinfo.c | 32 ++++++++++++++++++ tools/golang/xenlight/test/xeninfo/physinfo.go | 32 ++++++++++++++++++ tools/golang/xenlight/test/xeninfo/print.h | 22 ++++++++++++ tools/golang/xenlight/test/xeninfo/versioninfo.c | 22 ++++++++++++ tools/golang/xenlight/test/xeninfo/versioninfo.go | 28 ++++++++++++++++ tools/golang/xenlight/test/xeninfo/xenlight.go | 1 + 17 files changed, 416 insertions(+) create mode 100644 tools/golang/xenlight/test/xeninfo/Makefile create mode 100644 tools/golang/xenlight/test/xeninfo/dominfo.c create mode 100644 tools/golang/xenlight/test/xeninfo/dominfo.go create mode 100644 tools/golang/xenlight/test/xeninfo/freememory.c create mode 100644 tools/golang/xenlight/test/xeninfo/freememory.go create mode 100644 tools/golang/xenlight/test/xeninfo/maxcpu.c create mode 100644 tools/golang/xenlight/test/xeninfo/maxcpu.go create mode 100644 tools/golang/xenlight/test/xeninfo/maxnodes.c create mode 100644 tools/golang/xenlight/test/xeninfo/maxnodes.go create mode 100644 tools/golang/xenlight/test/xeninfo/onlinecpu.c create mode 100644 tools/golang/xenlight/test/xeninfo/onlinecpu.go create mode 100644 tools/golang/xenlight/test/xeninfo/physinfo.c create mode 100644 tools/golang/xenlight/test/xeninfo/physinfo.go create mode 100644 tools/golang/xenlight/test/xeninfo/print.h create mode 100644 tools/golang/xenlight/test/xeninfo/versioninfo.c create mode 100644 tools/golang/xenlight/test/xeninfo/versioninfo.go create mode 120000 tools/golang/xenlight/test/xeninfo/xenlight.go diff --git a/tools/golang/xenlight/test/xeninfo/Makefile b/tools/golang/xenlight/test/xeninfo/Makefile new file mode 100644 index 0000000..aae5544 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/Makefile @@ -0,0 +1,41 @@ +XEN_ROOT = $(CURDIR)/../../../../.. +include $(XEN_ROOT)/tools/Rules.mk + +GO ?= go + +TESTS = dominfo freememory maxcpu onlinecpu physinfo versioninfo +CBINARIES = $(TESTS:%=%-c) +GOBINARIES = $(TESTS:%=%-go) + +CFLAGS += -Werror +CFLAGS += $(CFLAGS_libxentoollog) +CFLAGS += $(CFLAGS_libxenlight) + +LDLIBS += $(LDLIBS_libxentoollog) +LDLIBS += $(LDLIBS_libxenlight) + +all: build + +test: clean build + for test in $(TESTS) ; do \ + ./$$test-c >> c.output ; \ + ./$$test-go >> go.output ; \ + if cmp -s "c.output" "go.output"; then\ + echo "$$test PASSED";\ + else \ + echo "$$test FAILED";\ + fi ; \ + done + +build: $(CBINARIES) $(GOBINARIES) + +%-c: %.c + gcc $(CFLAGS) -o $@ $< $(LDLIBS) + +%-go: %.go + GOPATH=$(XEN_ROOT)/tools/golang $(GO) build -o $@ $< + +clean: + rm -f *-c + rm -f *-go + rm -f *.output diff --git a/tools/golang/xenlight/test/xeninfo/dominfo.c b/tools/golang/xenlight/test/xeninfo/dominfo.c new file mode 100644 index 0000000..2c63583 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/dominfo.c @@ -0,0 +1,33 @@ +#include <stdio.h> +#include <stdlib.h> +#include <libxl.h> +#include "print.h" + +int main(void){ + + libxl_ctx *context; + libxl_dominfo info; + int err; + long cpu_time; + context = create_context(); + libxl_dominfo_init(&info); + err = libxl_domain_info(context, &info, 0); + if (err != 0) + return err; + + printf("%d\n%d\n", info.domid, info.ssidref); + printf("%s\n%s\n%s\n%s\n%s\n%s\n", bool_to_string(info.running), + bool_to_string(info.blocked), bool_to_string(info.paused), + bool_to_string(info.shutdown), bool_to_string(info.dying), + bool_to_string(info.never_stop)); + cpu_time = info.cpu_time / ((long) 1<<35); + printf("%d\n%lu\n%lu\n%lu\n%lu\n%lu\n%lu\n%d\n%d\n%d\n", + info.shutdown_reason, + info.outstanding_memkb, info.current_memkb, info.shared_memkb, + info.paged_memkb, info.max_memkb, cpu_time, info.vcpu_max_id, + info.vcpu_online, info.cpupool); + printf("%d\n", info.domain_type); + + destroy_context(context); + +} diff --git a/tools/golang/xenlight/test/xeninfo/dominfo.go b/tools/golang/xenlight/test/xeninfo/dominfo.go new file mode 100644 index 0000000..bb9257b --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/dominfo.go @@ -0,0 +1,31 @@ +package main + +import ( + "fmt" + "os" + "xenproject.org/xenlight" +) + +func main() { + ctx := xenlight.Ctx + err := ctx.Open() + if err != nil { + os.Exit(-1) + } + defer ctx.Close() + info, err := ctx.DomainInfo(0) + if err != nil { + os.Exit(-1) + } + + fmt.Printf("%d\n%d\n", info.Domid, info.Ssidref) + //fmt.Printf("%s\n", info.SsidLabel) + fmt.Printf("%t\n%t\n%t\n%t\n%t\n%t\n", info.Running, + info.Blocked, info.Paused, info.Shutdown, info.Dying, info.NeverStop) + cpuTime := info.CpuTime / (1 << 35) + fmt.Printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n", info.ShutdownReason, info.OutstandingMemkb, + info.CurrentMemkb, info.SharedMemkb, info.PagedMemkb, info.MaxMemkb, cpuTime, + info.VcpuMaxId, info.VcpuOnline, info.Cpupool) + fmt.Printf("%d\n", info.DomainType) + +} diff --git a/tools/golang/xenlight/test/xeninfo/freememory.c b/tools/golang/xenlight/test/xeninfo/freememory.c new file mode 100644 index 0000000..0fcaa1f --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/freememory.c @@ -0,0 +1,26 @@ +#include <stdio.h> +#include <stdlib.h> +#include <libxl.h> +#include "print.h" + +int main(void){ + + libxl_ctx *context; + uint64_t free_memory; + int err; + + context = create_context(); + + err = libxl_get_free_memory(context, &free_memory); + if (err < 0) + { + printf("%d\n", err); + } + else + { + printf("%lu\n", free_memory); + } + destroy_context(context); + +} + diff --git a/tools/golang/xenlight/test/xeninfo/freememory.go b/tools/golang/xenlight/test/xeninfo/freememory.go new file mode 100644 index 0000000..2752bd3 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/freememory.go @@ -0,0 +1,25 @@ +package main + +import ( + "fmt" + "os" + "xenproject.org/xenlight" +) + +func main() { + ctx := xenlight.Ctx + err := ctx.Open() + if err != nil { + os.Exit(-1) + } + + defer ctx.Close() + + free_memory, err := ctx.GetFreeMemory() + if err != nil { + fmt.Printf("-%d\n", err) + } else { + fmt.Printf("%d\n", free_memory) + } + +} diff --git a/tools/golang/xenlight/test/xeninfo/maxcpu.c b/tools/golang/xenlight/test/xeninfo/maxcpu.c new file mode 100644 index 0000000..a57bdb2 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/maxcpu.c @@ -0,0 +1,18 @@ +#include <stdio.h> +#include <stdlib.h> +#include <libxl.h> +#include "print.h" + +int main(void){ + + libxl_ctx *context; + int max_cpus; + + context = create_context(); + max_cpus = libxl_get_max_cpus(context); + printf("%d\n", max_cpus); + + destroy_context(context); + +} + diff --git a/tools/golang/xenlight/test/xeninfo/maxcpu.go b/tools/golang/xenlight/test/xeninfo/maxcpu.go new file mode 100644 index 0000000..92cd93d --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/maxcpu.go @@ -0,0 +1,24 @@ +package main + +import ( + "fmt" + "os" + "xenproject.org/xenlight" +) + +func main() { + ctx := xenlight.Ctx + err := ctx.Open() + if err != nil { + os.Exit(-1) + } + defer ctx.Close() + + max_cpus, err := ctx.GetMaxCpus() + if err != nil { + fmt.Printf("%d\n", err) + } else { + fmt.Printf("%d\n", max_cpus) + } + +} diff --git a/tools/golang/xenlight/test/xeninfo/maxnodes.c b/tools/golang/xenlight/test/xeninfo/maxnodes.c new file mode 100644 index 0000000..e072c3e --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/maxnodes.c @@ -0,0 +1,15 @@ +#include <stdio.h> +#include <stdlib.h> +#include <libxl.h> + +int main(){ + + libxl_ctx *context; + context = create_context(); + + int max_nodes = libxl_get_max_nodes(context); + printf("%d\n", max_nodes); + + destroy_context(context); +} + diff --git a/tools/golang/xenlight/test/xeninfo/maxnodes.go b/tools/golang/xenlight/test/xeninfo/maxnodes.go new file mode 100644 index 0000000..da9b495 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/maxnodes.go @@ -0,0 +1,24 @@ +package main + +import ( + "fmt" + "os" + "xenproject.org/xenlight" +) + +func main() { + ctx := xenlight.Ctx + err := ctx.Open() + if err != nil { + os.Exit(-1) + } + defer ctx.Close() + + max_nodes, err := ctx.GetMaxNodes() + if err != nil { + fmt.Printf("%d\n", err) + } else { + fmt.Printf("%d\n", max_nodes) + } + +} diff --git a/tools/golang/xenlight/test/xeninfo/onlinecpu.c b/tools/golang/xenlight/test/xeninfo/onlinecpu.c new file mode 100644 index 0000000..46939d6 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/onlinecpu.c @@ -0,0 +1,18 @@ +#include <stdio.h> +#include <stdlib.h> +#include <libxl.h> +#include "print.h" + +int main(void){ + + libxl_ctx *context; + int online_cpus; + context = create_context(); + + online_cpus = libxl_get_online_cpus(context); + printf("%d\n", online_cpus); + + destroy_context(context); + +} + diff --git a/tools/golang/xenlight/test/xeninfo/onlinecpu.go b/tools/golang/xenlight/test/xeninfo/onlinecpu.go new file mode 100644 index 0000000..b6d1da7 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/onlinecpu.go @@ -0,0 +1,24 @@ +package main + +import ( + "fmt" + "os" + "xenproject.org/xenlight" +) + +func main() { + ctx := xenlight.Ctx + err := ctx.Open() + if err != nil { + os.Exit(-1) + } + defer ctx.Close() + + online_cpus, err := ctx.GetOnlineCpus() + if err != nil { + fmt.Printf("%d\n", err) + } else { + fmt.Printf("%d\n", online_cpus) + } + +} diff --git a/tools/golang/xenlight/test/xeninfo/physinfo.c b/tools/golang/xenlight/test/xeninfo/physinfo.c new file mode 100644 index 0000000..541a730 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/physinfo.c @@ -0,0 +1,32 @@ +#include <stdio.h> +#include <stdlib.h> +#include <libxl.h> +#include "print.h" + +int main(void){ + + libxl_ctx *context; + libxl_physinfo info; + int err; + int i; + context = create_context(); + libxl_physinfo_init(&info); + err= libxl_get_physinfo(context,&info); + if(err != 0){ + return err; + } + + printf("%d\n%d\n%d\n%d\n%d\n", info.threads_per_core, info.cores_per_socket, info.max_cpu_id, info.nr_cpus, info.cpu_khz); + printf("%lu\n%lu\n%lu\n%lu\n%lu\n%lu\n", info.total_pages, info.free_pages, info.scrub_pages, info.outstanding_pages, info.sharing_freed_pages, info.sharing_used_frames); + printf("%u\n",info.nr_nodes); + printf("%s\n%s\n", bool_to_string(info.cap_hvm), bool_to_string(info.cap_hvm_directio)); + + for(i = 0; i < 8; i++){ + printf("%u\n", info.hw_cap[i]); + } + + libxl_physinfo_init(&info); + destroy_context(context); + +} + diff --git a/tools/golang/xenlight/test/xeninfo/physinfo.go b/tools/golang/xenlight/test/xeninfo/physinfo.go new file mode 100644 index 0000000..cf7bdd4 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/physinfo.go @@ -0,0 +1,32 @@ +package main + +import ( + "fmt" + "os" + "xenproject.org/xenlight" +) + +func main() { + ctx := xenlight.Ctx + err := ctx.Open() + if err != nil { + os.Exit(-1) + } + defer ctx.Close() + info, err := ctx.GetPhysinfo() + if err != nil { + os.Exit(-1) + } + + fmt.Printf("%d\n%d\n%d\n%d\n%d\n", info.ThreadsPerCore, info.CoresPerSocket, + info.MaxCpuId, info.NrCpus, info.CpuKhz) + fmt.Printf("%d\n%d\n%d\n%d\n%d\n%d\n", info.TotalPages, info.FreePages, + info.ScrubPages, info.OutstandingPages, info.SharingFreedPages, + info.SharingUsedFrames) + fmt.Printf("%d\n", info.NrNodes) + fmt.Printf("%t\n%t\n", info.CapHvm, info.CapHvmDirectio) + + for i := 0; i < 8; i++ { + fmt.Printf("%d\n", info.HwCap[i]) + } +} diff --git a/tools/golang/xenlight/test/xeninfo/print.h b/tools/golang/xenlight/test/xeninfo/print.h new file mode 100644 index 0000000..dd6c987 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/print.h @@ -0,0 +1,22 @@ +xentoollog_logger_stdiostream *logger; + +static inline char *bool_to_string(bool a){ + return (a ? "true" : "false"); +} + +static inline libxl_ctx *create_context(void){ + libxl_ctx *context; + logger = xtl_createlogger_stdiostream(stderr, + XTL_ERROR, 0); + libxl_ctx_alloc(&context, LIBXL_VERSION, 0 , (xentoollog_logger*)logger); + return context; +} + +static inline int destroy_context(libxl_ctx *context){ + int err = libxl_ctx_free(context); + if (err != 0) + return err; + xtl_logger_destroy((xentoollog_logger*)logger); + return err; + +} diff --git a/tools/golang/xenlight/test/xeninfo/versioninfo.c b/tools/golang/xenlight/test/xeninfo/versioninfo.c new file mode 100644 index 0000000..113bcea --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/versioninfo.c @@ -0,0 +1,22 @@ +#include <stdio.h> +#include <stdlib.h> +#include <libxl.h> +#include "print.h" + +int main(void){ + + libxl_ctx *context; + const libxl_version_info * info; + context = create_context(); + info = libxl_get_version_info(context); + + printf("%d\n%d\n", info->xen_version_major, info->xen_version_minor); + printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n", info->xen_version_extra, info->compiler, + info->compile_by, info->compile_domain, info->compile_date, + info->capabilities, info->changeset); + printf("%lu\n%d\n", info->virt_start, info->pagesize); + printf("%s\n%s\n", info->commandline, info->build_id); + + destroy_context(context); + +} diff --git a/tools/golang/xenlight/test/xeninfo/versioninfo.go b/tools/golang/xenlight/test/xeninfo/versioninfo.go new file mode 100644 index 0000000..5545472 --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/versioninfo.go @@ -0,0 +1,28 @@ +package main + +import ( + "fmt" + "os" + "xenproject.org/xenlight" +) + +func main() { + ctx := xenlight.Ctx + err := ctx.Open() + if err != nil { + os.Exit(-1) + } + defer ctx.Close() + info, err := ctx.GetVersionInfo() + if err != nil { + os.Exit(-1) + } + + fmt.Printf("%d\n%d\n", info.XenVersionMajor, info.XenVersionMinor) + fmt.Printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n", info.XenVersionExtra, info.Compiler, + info.CompileBy, info.CompileDomain, info.CompileDate, info.Capabilities, + info.Changeset) + fmt.Printf("%d\n%d\n", info.VirtStart, info.Pagesize) + fmt.Printf("%s\n%s\n", info.Commandline, info.BuildId) + +} diff --git a/tools/golang/xenlight/test/xeninfo/xenlight.go b/tools/golang/xenlight/test/xeninfo/xenlight.go new file mode 120000 index 0000000..693da7b --- /dev/null +++ b/tools/golang/xenlight/test/xeninfo/xenlight.go @@ -0,0 +1 @@ +../../xenlight.go/usr/local/go/src/xenproject.org/xenlight/xenlight.go \ No newline at end of file -- 2.7.3 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |