|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 8/8] golang/xenlight: Add tests host related functinality functions
Create tests for the following functions:
- GetVersionInfo
- GetPhysinfo
- GetDominfo
- GetMaxCpus
- GetOnlineCpus
- GetMaxNodes
- GetFreeMemory
Signed-off-by: Ronald Rojas <ronladred@xxxxxxxxx>
---
To do:
-Seperate GetMaxCpus, GetOnlineCpus, GetMaxNodes, and
GetFreeMemory into seperate tests
-create tests for cpupool and bitmap operations
---
tools/golang/xenlight/test/dominfo/Makefile | 19 ++++++++
tools/golang/xenlight/test/dominfo/dominfo.c | 30 ++++++++++++
tools/golang/xenlight/test/dominfo/dominfo.go | 48 +++++++++++++++++++
tools/golang/xenlight/test/funcs/Makefile | 20 ++++++++
tools/golang/xenlight/test/funcs/func.c | 34 ++++++++++++++
tools/golang/xenlight/test/funcs/func.go | 54 ++++++++++++++++++++++
tools/golang/xenlight/test/physinfo/Makefile | 20 ++++++++
tools/golang/xenlight/test/physinfo/physinfo.c | 31 +++++++++++++
tools/golang/xenlight/test/physinfo/physinfo.go | 36 +++++++++++++++
tools/golang/xenlight/test/versioninfo/Makefile | 20 ++++++++
.../golang/xenlight/test/versioninfo/versioninfo.c | 18 ++++++++
.../xenlight/test/versioninfo/versioninfo.go | 33 +++++++++++++
12 files changed, 363 insertions(+)
create mode 100644 tools/golang/xenlight/test/dominfo/Makefile
create mode 100644 tools/golang/xenlight/test/dominfo/dominfo.c
create mode 100644 tools/golang/xenlight/test/dominfo/dominfo.go
create mode 100644 tools/golang/xenlight/test/funcs/Makefile
create mode 100644 tools/golang/xenlight/test/funcs/func.c
create mode 100644 tools/golang/xenlight/test/funcs/func.go
create mode 100644 tools/golang/xenlight/test/physinfo/Makefile
create mode 100644 tools/golang/xenlight/test/physinfo/physinfo.c
create mode 100644 tools/golang/xenlight/test/physinfo/physinfo.go
create mode 100644 tools/golang/xenlight/test/versioninfo/Makefile
create mode 100644 tools/golang/xenlight/test/versioninfo/versioninfo.c
create mode 100644 tools/golang/xenlight/test/versioninfo/versioninfo.go
diff --git a/tools/golang/xenlight/test/dominfo/Makefile
b/tools/golang/xenlight/test/dominfo/Makefile
new file mode 100644
index 0000000..89ca1b3
--- /dev/null
+++ b/tools/golang/xenlight/test/dominfo/Makefile
@@ -0,0 +1,19 @@
+
+test: clean build
+ ./dominfo.out >> c.output
+ go run dominfo.go >> go.output
+ if cmp -s "c.output" "go.output"; then\
+ echo "GetDominfo PASSED";\
+ else\
+ echo "GetDominfo FAILED";\
+ fi\
+
+build:
+ go build -o dominfo.a dominfo.go
+ gcc dominfo.c -lxenlight -lyajl -o dominfo.out
+
+clean:
+ rm dominfo.a
+ rm dominfo.out
+ rm c.output
+ rm go.output
diff --git a/tools/golang/xenlight/test/dominfo/dominfo.c
b/tools/golang/xenlight/test/dominfo/dominfo.c
new file mode 100644
index 0000000..ed0fe78
--- /dev/null
+++ b/tools/golang/xenlight/test/dominfo/dominfo.c
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libxl.h>
+
+char * bool_to_string(bool b);
+int main(){
+
+ libxl_ctx *context;
+ libxl_ctx_alloc(&context,LIBXL_VERSION, 0, NULL);
+ libxl_dominfo 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", info.ssid_label);
+ 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_ctx_free(context);
+
+}
+char * bool_to_string(bool b){
+ return b ? "true": "false";
+}
diff --git a/tools/golang/xenlight/test/dominfo/dominfo.go
b/tools/golang/xenlight/test/dominfo/dominfo.go
new file mode 100644
index 0000000..268b118
--- /dev/null
+++ b/tools/golang/xenlight/test/dominfo/dominfo.go
@@ -0,0 +1,48 @@
+
+package main
+
+/*
+#cgo LDFLAGS: -lxenlight -lyajl
+#include <stdlib.h>
+#include <libxl.h>
+*/
+import "C"
+import (
+ "fmt"
+ "xenlight"
+ "os"
+)
+
+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)
+
+}
+
+func replaceDomainType(n int32)(ret string){
+ switch n{
+ case -1:
+ ret = "invalid"
+ case 1:
+ ret = "hvm"
+ case 2:
+ ret = "pv"
+ }
+ return
+
+}
diff --git a/tools/golang/xenlight/test/funcs/Makefile
b/tools/golang/xenlight/test/funcs/Makefile
new file mode 100644
index 0000000..d8c234c
--- /dev/null
+++ b/tools/golang/xenlight/test/funcs/Makefile
@@ -0,0 +1,20 @@
+
+test: clean build
+ ./func.out >> c.output
+ go run func.go >> go.output
+ if cmp -s "c.output" "go.output"; then\
+ echo "same";\
+ else\
+ echo "diff"; \
+ fi\
+
+build:
+ go build -o func.a func.go
+ gcc func.c -lxenlight -lyajl -o func.out
+
+clean:
+ rm func.a
+ rm func.out
+ rm c.output
+ rm go.output
+
diff --git a/tools/golang/xenlight/test/funcs/func.c
b/tools/golang/xenlight/test/funcs/func.c
new file mode 100644
index 0000000..3fdbf22
--- /dev/null
+++ b/tools/golang/xenlight/test/funcs/func.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libxl.h>
+
+int main(){
+
+ libxl_ctx *context;
+ libxl_ctx_alloc(&context,LIBXL_VERSION, 0, NULL);
+ libxl_physinfo info ;
+ int err= libxl_get_physinfo(context,&info);
+ if(err != 0){
+ return err;
+ }
+
+ int max_cpus = libxl_get_max_cpus(context);
+ printf("%d\n", max_cpus);
+
+ int online_cpus = libxl_get_online_cpus(context);
+ printf("%d\n", online_cpus);
+
+ int max_nodes = libxl_get_max_nodes(context);
+ printf("%d\n", max_nodes);
+
+ uint64_t free_memory;
+ 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/funcs/func.go
b/tools/golang/xenlight/test/funcs/func.go
new file mode 100644
index 0000000..fd83356
--- /dev/null
+++ b/tools/golang/xenlight/test/funcs/func.go
@@ -0,0 +1,54 @@
+package main
+
+/*
+#cgo LDFLAGS: -lxenlight -lyajl
+#include <stdlib.h>
+#include <libxl.h>
+*/
+import "C"
+import (
+ "fmt"
+ "os"
+ "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)
+ }
+
+ online_cpus, err := ctx.GetOnlineCpus()
+ if err != nil {
+ fmt.Printf("%d\n", err)
+ } else {
+ fmt.Printf("%d\n", online_cpus)
+ }
+
+ max_nodes, err := ctx.GetMaxNodes()
+ if err != nil {
+ fmt.Printf("%d\n", err)
+ } else {
+ fmt.Printf("%d\n", max_nodes)
+ }
+
+ 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/physinfo/Makefile
b/tools/golang/xenlight/test/physinfo/Makefile
new file mode 100644
index 0000000..cef23e7
--- /dev/null
+++ b/tools/golang/xenlight/test/physinfo/Makefile
@@ -0,0 +1,20 @@
+
+test: clean build
+ ./physinfo.out >> c.output
+ go run physinfo.go >> go.output
+ if cmp -s "c.output" "go.output"; then\
+ echo "GetPhysinfo PASSED";\
+ else\
+ echo "GetPhysinfo FAILED"; \
+ fi\
+
+build:
+ go build -o physinfo.a physinfo.go
+ gcc physinfo.c -lxenlight -lyajl -o physinfo.out
+
+clean:
+ rm physinfo.a
+ rm physinfo.out
+ rm c.output
+ rm go.output
+
diff --git a/tools/golang/xenlight/test/physinfo/physinfo.c
b/tools/golang/xenlight/test/physinfo/physinfo.c
new file mode 100644
index 0000000..92c8f47
--- /dev/null
+++ b/tools/golang/xenlight/test/physinfo/physinfo.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libxl.h>
+
+char *bool_to_string(bool b);
+int main(){
+
+ libxl_ctx *context;
+ libxl_ctx_alloc(&context,LIBXL_VERSION, 0, NULL);
+ libxl_physinfo 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));
+
+ for(int i = 0; i < 8; i++){
+ printf("%u\n", info.hw_cap[i]);
+ }
+
+ libxl_ctx_free(context);
+
+}
+
+char * bool_to_string(bool b){
+ return b ? "true": "false";
+}
diff --git a/tools/golang/xenlight/test/physinfo/physinfo.go
b/tools/golang/xenlight/test/physinfo/physinfo.go
new file mode 100644
index 0000000..e0b7a74
--- /dev/null
+++ b/tools/golang/xenlight/test/physinfo/physinfo.go
@@ -0,0 +1,36 @@
+
+package main
+
+/*
+#cgo LDFLAGS: -lxenlight -lyajl
+#include <stdlib.h>
+#include <libxl.h>
+*/
+import "C"
+import (
+ "fmt"
+ "xenlight"
+ "os"
+)
+
+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/versioninfo/Makefile
b/tools/golang/xenlight/test/versioninfo/Makefile
new file mode 100644
index 0000000..e269e2d
--- /dev/null
+++ b/tools/golang/xenlight/test/versioninfo/Makefile
@@ -0,0 +1,20 @@
+
+test: clean build
+ ./versioninfo.out >> c.output
+ go run versioninfo.go >> go.output
+ if cmp -s "c.output" "go.output"; then\
+ echo "GetVersionInfo PASSED";\
+ else\
+ echo "GetVersionInfo FAILED"; \
+ fi\
+
+build:
+ go build -o versioninfo.a versioninfo.go
+ gcc versioninfo.c -lxenlight -lyajl -o versioninfo.out
+
+clean:
+ rm versioninfo.a
+ rm versioninfo.out
+ rm c.output
+ rm go.output
+
diff --git a/tools/golang/xenlight/test/versioninfo/versioninfo.c
b/tools/golang/xenlight/test/versioninfo/versioninfo.c
new file mode 100644
index 0000000..f40495d
--- /dev/null
+++ b/tools/golang/xenlight/test/versioninfo/versioninfo.c
@@ -0,0 +1,18 @@
+#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/versioninfo/versioninfo.go
b/tools/golang/xenlight/test/versioninfo/versioninfo.go
new file mode 100644
index 0000000..e455b66
--- /dev/null
+++ b/tools/golang/xenlight/test/versioninfo/versioninfo.go
@@ -0,0 +1,33 @@
+
+package main
+
+/*
+#cgo LDFLAGS: -lxenlight -lyajl
+#include <stdlib.h>
+#include <libxl.h>
+*/
+import "C"
+import (
+ "fmt"
+ "xenlight"
+ "os"
+)
+
+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.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |