[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v2 5/5] 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>

---

- Removed individual Makefiles for each test for a single
Makefile to test all files at once

- Changed all tests to xeninfo directory

- Applied libxl_<type>_{init/dispose} for IDL types in tests

- Applied formating fixes

CC: xen-devel@xxxxxxxxxxxxx
CC: george.dunlap@xxxxxxxxxx
CC: ian.jackson@xxxxxxxxxxxxx
CC: wei.liu2@xxxxxxxxxx
---
---
 tools/golang/xenlight/test/xeninfo/Makefile       | 34 +++++++++++++++++++++++
 tools/golang/xenlight/test/xeninfo/dominfo.c      | 31 +++++++++++++++++++++
 tools/golang/xenlight/test/xeninfo/dominfo.go     | 31 +++++++++++++++++++++
 tools/golang/xenlight/test/xeninfo/freememory.c   | 24 ++++++++++++++++
 tools/golang/xenlight/test/xeninfo/freememory.go  | 28 +++++++++++++++++++
 tools/golang/xenlight/test/xeninfo/maxcpu.c       | 16 +++++++++++
 tools/golang/xenlight/test/xeninfo/maxcpu.go      | 27 ++++++++++++++++++
 tools/golang/xenlight/test/xeninfo/maxnodes.c     | 16 +++++++++++
 tools/golang/xenlight/test/xeninfo/maxnodes.go    | 27 ++++++++++++++++++
 tools/golang/xenlight/test/xeninfo/onlinecpu.c    | 16 +++++++++++
 tools/golang/xenlight/test/xeninfo/onlinecpu.go   | 27 ++++++++++++++++++
 tools/golang/xenlight/test/xeninfo/physinfo.c     | 31 +++++++++++++++++++++
 tools/golang/xenlight/test/xeninfo/physinfo.go    | 32 +++++++++++++++++++++
 tools/golang/xenlight/test/xeninfo/print.h        |  3 ++
 tools/golang/xenlight/test/xeninfo/versioninfo.c  | 20 +++++++++++++
 tools/golang/xenlight/test/xeninfo/versioninfo.go | 28 +++++++++++++++++++
 16 files changed, 391 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

diff --git a/tools/golang/xenlight/test/xeninfo/Makefile 
b/tools/golang/xenlight/test/xeninfo/Makefile
new file mode 100644
index 0000000..859e4d6
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/Makefile
@@ -0,0 +1,34 @@
+XEN_ROOT = $(CURDIR)/../../../../..
+include $(XEN_ROOT)/tools/Rules.mk
+
+GO ?= go
+
+TESTS = dominfo freememory maxcpu onlinecpu physinfo versioninfo
+CBINARIES = $(TESTS:%=%-c)
+GOBINARIES = $(TESTS:%=%-go)
+
+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_libxenlight) -o $@ $< $(LDLIBS_libxenlight)
+
+%-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..85f658d
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/dominfo.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libxl.h>
+#include "print.h"
+
+int main(){
+
+    libxl_ctx *context;
+    libxl_ctx_alloc(&context,LIBXL_VERSION, 0, NULL);
+    libxl_dominfo info;
+    libxl_dominfo_init(&info);
+    int 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));
+       long 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);
+
+       libxl_dominfo_dispose(&info);
+       libxl_ctx_free(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..04ee90d
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/freememory.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libxl.h>
+#include "print.h"
+
+int main(){
+
+    libxl_ctx *context;
+    libxl_ctx_alloc(&context,LIBXL_VERSION, 0, NULL);
+
+    uint64_t free_memory;
+    int err = libxl_get_free_memory(context, &free_memory);
+    if (err < 0)
+    {
+        printf("%d\n", err);
+    }
+    else
+    {
+        printf("%lu\n", free_memory);
+    }
+    libxl_ctx_free(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..69a7723
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/freememory.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()
+       if err != nil {
+               os.Exit(-1)
+       }
+
+       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..6ba4a87
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/maxcpu.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libxl.h>
+
+int main(){
+
+    libxl_ctx *context;
+    libxl_ctx_alloc(&context,LIBXL_VERSION, 0, NULL);
+
+    int max_cpus = libxl_get_max_cpus(context);
+    printf("%d\n", max_cpus);
+
+    libxl_ctx_free(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..f847c0d
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/maxcpu.go
@@ -0,0 +1,27 @@
+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()
+       if err != nil {
+               os.Exit(-1)
+       }
+
+       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..0e79c8d
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/maxnodes.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libxl.h>
+
+int main(){
+
+    libxl_ctx *context;
+    libxl_ctx_alloc(&context,LIBXL_VERSION, 0, NULL);
+
+    int max_nodes = libxl_get_max_nodes(context);
+    printf("%d\n", max_nodes);
+
+   libxl_ctx_free(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..906e596
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/maxnodes.go
@@ -0,0 +1,27 @@
+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()
+       if err != nil {
+               os.Exit(-1)
+       }
+
+       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..8da3414
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/onlinecpu.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libxl.h>
+
+int main(){
+
+    libxl_ctx *context;
+    libxl_ctx_alloc(&context,LIBXL_VERSION, 0, NULL);
+
+    int online_cpus = libxl_get_online_cpus(context);
+    printf("%d\n", online_cpus);
+
+    libxl_ctx_free(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..74323c4
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/onlinecpu.go
@@ -0,0 +1,27 @@
+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()
+       if err != nil {
+               os.Exit(-1)
+       }
+
+       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..ba3aa44
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/physinfo.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libxl.h>
+#include "print.h"
+
+int main(){
+
+    libxl_ctx *context;
+    libxl_ctx_alloc(&context,LIBXL_VERSION, 0, NULL);
+    libxl_physinfo info;
+    libxl_physinfo_init(&info);
+    int 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));
+
+    int i;
+    for(i = 0; i < 8; i++){
+        printf("%u\n", info.hw_cap[i]);
+    }
+
+    libxl_physinfo_init(&info);
+    libxl_ctx_free(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..6aaa29c
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/print.h
@@ -0,0 +1,3 @@
+char* bool_to_string(a){
+               return (a? "true" : "false");
+}
diff --git a/tools/golang/xenlight/test/xeninfo/versioninfo.c 
b/tools/golang/xenlight/test/xeninfo/versioninfo.c
new file mode 100644
index 0000000..6d807c0
--- /dev/null
+++ b/tools/golang/xenlight/test/xeninfo/versioninfo.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libxl.h>
+
+main(){
+
+    libxl_ctx *context;
+    libxl_ctx_alloc(&context,LIBXL_VERSION, 0, NULL);
+    libxl_version_info *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);
+
+    libxl_ctx_free(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)
+
+}
-- 
2.7.3


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.