~nova-coresec/ubuntu/maverick/libvirt/nova-ppa

« back to all changes in this revision

Viewing changes to tests/nodeinfotest.c

Tags: 0.4.4-3
* upload to unstable
* [96c6727] add /var/cache/libvirt needed by qemuDriver for temporary
  storage
* [794f95c] bump standards version to 3.8.0
* [05184af] add README.source

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <config.h>
 
2
 
 
3
#include <stdio.h>
 
4
#include <stdlib.h>
 
5
#include <string.h>
 
6
#include <unistd.h>
 
7
 
 
8
#include "testutils.h"
 
9
#include "internal.h"
 
10
#include "nodeinfo.h"
 
11
 
 
12
static char *progname;
 
13
static char *abs_srcdir;
 
14
 
 
15
#define MAX_FILE 4096
 
16
 
 
17
#ifdef __linux__
 
18
 
 
19
extern int linuxNodeInfoCPUPopulate(virConnectPtr conn, FILE *cpuinfo, virNodeInfoPtr nodeinfo);
 
20
 
 
21
static int linuxTestCompareFiles(const char *cpuinfofile, const char *outputfile) {
 
22
    char actualData[MAX_FILE];
 
23
    char expectData[MAX_FILE];
 
24
    char *expect = &expectData[0];
 
25
    virNodeInfo nodeinfo;
 
26
    FILE *cpuinfo;
 
27
 
 
28
    if (virtTestLoadFile(outputfile, &expect, MAX_FILE) < 0)
 
29
        return -1;
 
30
 
 
31
    cpuinfo = fopen(cpuinfofile, "r");
 
32
    if (!cpuinfo)
 
33
        return -1;
 
34
    if (linuxNodeInfoCPUPopulate(NULL, cpuinfo, &nodeinfo) < 0) {
 
35
        fclose(cpuinfo);
 
36
        return -1;
 
37
    }
 
38
    fclose(cpuinfo);
 
39
 
 
40
    snprintf(actualData, MAX_FILE,
 
41
             "CPUs: %u, MHz: %u, Nodes: %u, Sockets: %u, Cores: %u, Threads: %u\n",
 
42
             nodeinfo.cpus, nodeinfo.mhz, nodeinfo.nodes, nodeinfo.sockets,
 
43
             nodeinfo.cores, nodeinfo.threads);
 
44
 
 
45
    if (STRNEQ(actualData, expectData)) {
 
46
        if (getenv("DEBUG_TESTS")) {
 
47
            printf("Expect %d '%s'\n", (int)strlen(expectData), expectData);
 
48
            printf("Actual %d '%s'\n", (int)strlen(actualData), actualData);
 
49
        }
 
50
        return -1;
 
51
    }
 
52
 
 
53
    return 0;
 
54
}
 
55
 
 
56
 
 
57
static int linuxTestNodeInfo(const void *data) {
 
58
    char cpuinfo[PATH_MAX];
 
59
    char output[PATH_MAX];
 
60
    snprintf(cpuinfo, PATH_MAX, "%s/nodeinfodata/linux-%s.cpuinfo",
 
61
             abs_srcdir, (const char*)data);
 
62
    snprintf(output, PATH_MAX, "%s/nodeinfodata/linux-%s.txt",
 
63
             abs_srcdir, (const char*)data);
 
64
    return linuxTestCompareFiles(cpuinfo, output);
 
65
}
 
66
#endif
 
67
 
 
68
 
 
69
static int
 
70
mymain(int argc, char **argv)
 
71
{
 
72
    int ret = 0;
 
73
#ifdef __linux__
 
74
    int i;
 
75
    const char *nodeData[] = {
 
76
        "nodeinfo-1",
 
77
        "nodeinfo-2",
 
78
        "nodeinfo-3",
 
79
        "nodeinfo-4",
 
80
        "nodeinfo-5",
 
81
        "nodeinfo-6",
 
82
    };
 
83
    char cwd[PATH_MAX];
 
84
 
 
85
    abs_srcdir = getenv("abs_srcdir");
 
86
    if (!abs_srcdir)
 
87
        abs_srcdir = getcwd(cwd, sizeof(cwd));
 
88
 
 
89
    progname = argv[0];
 
90
 
 
91
    if (argc > 1) {
 
92
        fprintf(stderr, "Usage: %s\n", progname);
 
93
        return(EXIT_FAILURE);
 
94
    }
 
95
 
 
96
    virInitialize();
 
97
 
 
98
    for (i = 0 ; i < (sizeof(nodeData)/sizeof(nodeData[0])) ; i++)
 
99
      if (virtTestRun(nodeData[i], 1, linuxTestNodeInfo, nodeData[i]) != 0)
 
100
        ret = -1;
 
101
#endif
 
102
 
 
103
    return(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
 
104
}
 
105
 
 
106
VIRT_TEST_MAIN(mymain)